vulkanalia_sys/
structs.rs

1// SPDX-License-Identifier: Apache-2.0
2
3// DO NOT EDIT.
4//
5// This file has been generated by the Kotlin project in the `generator`
6// directory from a Vulkan API registry.
7
8#![allow(
9    non_camel_case_types,
10    non_snake_case,
11    clippy::bad_bit_mask,
12    clippy::let_unit_value,
13    clippy::missing_safety_doc,
14    clippy::missing_transmute_annotations,
15    clippy::too_many_arguments,
16    clippy::type_complexity,
17    clippy::unnecessary_cast,
18    clippy::upper_case_acronyms,
19    clippy::useless_transmute
20)]
21
22use core::ffi::{c_char, c_int, c_void};
23use core::fmt;
24use core::ptr;
25
26use crate::*;
27
28/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsKHR.html>
29#[repr(C)]
30#[derive(Copy, Clone, Default, Debug, PartialEq)]
31pub struct AabbPositionsKHR {
32    pub min_x: f32,
33    pub min_y: f32,
34    pub min_z: f32,
35    pub max_x: f32,
36    pub max_y: f32,
37    pub max_z: f32,
38}
39
40/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html>
41#[repr(C)]
42#[derive(Copy, Clone, Debug)]
43pub struct AccelerationStructureBuildGeometryInfoKHR {
44    pub s_type: StructureType,
45    pub next: *const c_void,
46    pub type_: AccelerationStructureTypeKHR,
47    pub flags: BuildAccelerationStructureFlagsKHR,
48    pub mode: BuildAccelerationStructureModeKHR,
49    pub src_acceleration_structure: AccelerationStructureKHR,
50    pub dst_acceleration_structure: AccelerationStructureKHR,
51    pub geometry_count: u32,
52    pub geometries: *const AccelerationStructureGeometryKHR,
53    pub pointer_geometries: *const *const AccelerationStructureGeometryKHR,
54    pub scratch_data: DeviceOrHostAddressKHR,
55}
56
57impl Default for AccelerationStructureBuildGeometryInfoKHR {
58    #[inline]
59    fn default() -> Self {
60        Self {
61            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,
62            next: ptr::null(),
63            type_: AccelerationStructureTypeKHR::default(),
64            flags: BuildAccelerationStructureFlagsKHR::default(),
65            mode: BuildAccelerationStructureModeKHR::default(),
66            src_acceleration_structure: AccelerationStructureKHR::default(),
67            dst_acceleration_structure: AccelerationStructureKHR::default(),
68            geometry_count: u32::default(),
69            geometries: ptr::null(),
70            pointer_geometries: ptr::null(),
71            scratch_data: DeviceOrHostAddressKHR::default(),
72        }
73    }
74}
75
76/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildRangeInfoKHR.html>
77#[repr(C)]
78#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
79pub struct AccelerationStructureBuildRangeInfoKHR {
80    pub primitive_count: u32,
81    pub primitive_offset: u32,
82    pub first_vertex: u32,
83    pub transform_offset: u32,
84}
85
86/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildSizesInfoKHR.html>
87#[repr(C)]
88#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
89pub struct AccelerationStructureBuildSizesInfoKHR {
90    pub s_type: StructureType,
91    pub next: *const c_void,
92    pub acceleration_structure_size: DeviceSize,
93    pub update_scratch_size: DeviceSize,
94    pub build_scratch_size: DeviceSize,
95}
96
97impl Default for AccelerationStructureBuildSizesInfoKHR {
98    #[inline]
99    fn default() -> Self {
100        Self {
101            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR,
102            next: ptr::null(),
103            acceleration_structure_size: DeviceSize::default(),
104            update_scratch_size: DeviceSize::default(),
105            build_scratch_size: DeviceSize::default(),
106        }
107    }
108}
109
110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCaptureDescriptorDataInfoEXT.html>
111#[repr(C)]
112#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
113pub struct AccelerationStructureCaptureDescriptorDataInfoEXT {
114    pub s_type: StructureType,
115    pub next: *const c_void,
116    pub acceleration_structure: AccelerationStructureKHR,
117    pub acceleration_structure_nv: AccelerationStructureNV,
118}
119
120impl Default for AccelerationStructureCaptureDescriptorDataInfoEXT {
121    #[inline]
122    fn default() -> Self {
123        Self {
124            s_type: StructureType::ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
125            next: ptr::null(),
126            acceleration_structure: AccelerationStructureKHR::default(),
127            acceleration_structure_nv: AccelerationStructureNV::default(),
128        }
129    }
130}
131
132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoKHR.html>
133#[repr(C)]
134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
135pub struct AccelerationStructureCreateInfoKHR {
136    pub s_type: StructureType,
137    pub next: *const c_void,
138    pub create_flags: AccelerationStructureCreateFlagsKHR,
139    pub buffer: Buffer,
140    pub offset: DeviceSize,
141    pub size: DeviceSize,
142    pub type_: AccelerationStructureTypeKHR,
143    pub device_address: DeviceAddress,
144}
145
146impl Default for AccelerationStructureCreateInfoKHR {
147    #[inline]
148    fn default() -> Self {
149        Self {
150            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR,
151            next: ptr::null(),
152            create_flags: AccelerationStructureCreateFlagsKHR::default(),
153            buffer: Buffer::default(),
154            offset: DeviceSize::default(),
155            size: DeviceSize::default(),
156            type_: AccelerationStructureTypeKHR::default(),
157            device_address: DeviceAddress::default(),
158        }
159    }
160}
161
162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoNV.html>
163#[repr(C)]
164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
165pub struct AccelerationStructureCreateInfoNV {
166    pub s_type: StructureType,
167    pub next: *const c_void,
168    pub compacted_size: DeviceSize,
169    pub info: AccelerationStructureInfoNV,
170}
171
172impl Default for AccelerationStructureCreateInfoNV {
173    #[inline]
174    fn default() -> Self {
175        Self {
176            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV,
177            next: ptr::null(),
178            compacted_size: DeviceSize::default(),
179            info: AccelerationStructureInfoNV::default(),
180        }
181    }
182}
183
184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html>
185#[repr(C)]
186#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
187pub struct AccelerationStructureDeviceAddressInfoKHR {
188    pub s_type: StructureType,
189    pub next: *const c_void,
190    pub acceleration_structure: AccelerationStructureKHR,
191}
192
193impl Default for AccelerationStructureDeviceAddressInfoKHR {
194    #[inline]
195    fn default() -> Self {
196        Self {
197            s_type: StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,
198            next: ptr::null(),
199            acceleration_structure: AccelerationStructureKHR::default(),
200        }
201    }
202}
203
204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html>
205#[repr(C)]
206#[derive(Copy, Clone, Debug)]
207pub struct AccelerationStructureGeometryAabbsDataKHR {
208    pub s_type: StructureType,
209    pub next: *const c_void,
210    pub data: DeviceOrHostAddressConstKHR,
211    pub stride: DeviceSize,
212}
213
214impl Default for AccelerationStructureGeometryAabbsDataKHR {
215    #[inline]
216    fn default() -> Self {
217        Self {
218            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,
219            next: ptr::null(),
220            data: DeviceOrHostAddressConstKHR::default(),
221            stride: DeviceSize::default(),
222        }
223    }
224}
225
226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html>
227#[repr(C)]
228#[derive(Copy, Clone, Debug)]
229pub struct AccelerationStructureGeometryInstancesDataKHR {
230    pub s_type: StructureType,
231    pub next: *const c_void,
232    pub array_of_pointers: Bool32,
233    pub data: DeviceOrHostAddressConstKHR,
234}
235
236impl Default for AccelerationStructureGeometryInstancesDataKHR {
237    #[inline]
238    fn default() -> Self {
239        Self {
240            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,
241            next: ptr::null(),
242            array_of_pointers: Bool32::default(),
243            data: DeviceOrHostAddressConstKHR::default(),
244        }
245    }
246}
247
248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryKHR.html>
249#[repr(C)]
250#[derive(Copy, Clone, Debug)]
251pub struct AccelerationStructureGeometryKHR {
252    pub s_type: StructureType,
253    pub next: *const c_void,
254    pub geometry_type: GeometryTypeKHR,
255    pub geometry: AccelerationStructureGeometryDataKHR,
256    pub flags: GeometryFlagsKHR,
257}
258
259impl Default for AccelerationStructureGeometryKHR {
260    #[inline]
261    fn default() -> Self {
262        Self {
263            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR,
264            next: ptr::null(),
265            geometry_type: GeometryTypeKHR::default(),
266            geometry: AccelerationStructureGeometryDataKHR::default(),
267            flags: GeometryFlagsKHR::default(),
268        }
269    }
270}
271
272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryLinearSweptSpheresDataNV.html>
273#[repr(C)]
274#[derive(Copy, Clone, Debug)]
275pub struct AccelerationStructureGeometryLinearSweptSpheresDataNV {
276    pub s_type: StructureType,
277    pub next: *const c_void,
278    pub vertex_format: Format,
279    pub vertex_data: DeviceOrHostAddressConstKHR,
280    pub vertex_stride: DeviceSize,
281    pub radius_format: Format,
282    pub radius_data: DeviceOrHostAddressConstKHR,
283    pub radius_stride: DeviceSize,
284    pub index_type: IndexType,
285    pub index_data: DeviceOrHostAddressConstKHR,
286    pub index_stride: DeviceSize,
287    pub indexing_mode: RayTracingLssIndexingModeNV,
288    pub end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV,
289}
290
291impl Default for AccelerationStructureGeometryLinearSweptSpheresDataNV {
292    #[inline]
293    fn default() -> Self {
294        Self {
295            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV,
296            next: ptr::null(),
297            vertex_format: Format::default(),
298            vertex_data: DeviceOrHostAddressConstKHR::default(),
299            vertex_stride: DeviceSize::default(),
300            radius_format: Format::default(),
301            radius_data: DeviceOrHostAddressConstKHR::default(),
302            radius_stride: DeviceSize::default(),
303            index_type: IndexType::default(),
304            index_data: DeviceOrHostAddressConstKHR::default(),
305            index_stride: DeviceSize::default(),
306            indexing_mode: RayTracingLssIndexingModeNV::default(),
307            end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV::default(),
308        }
309    }
310}
311
312/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryMotionTrianglesDataNV.html>
313#[repr(C)]
314#[derive(Copy, Clone, Debug)]
315pub struct AccelerationStructureGeometryMotionTrianglesDataNV {
316    pub s_type: StructureType,
317    pub next: *const c_void,
318    pub vertex_data: DeviceOrHostAddressConstKHR,
319}
320
321impl Default for AccelerationStructureGeometryMotionTrianglesDataNV {
322    #[inline]
323    fn default() -> Self {
324        Self {
325            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV,
326            next: ptr::null(),
327            vertex_data: DeviceOrHostAddressConstKHR::default(),
328        }
329    }
330}
331
332/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometrySpheresDataNV.html>
333#[repr(C)]
334#[derive(Copy, Clone, Debug)]
335pub struct AccelerationStructureGeometrySpheresDataNV {
336    pub s_type: StructureType,
337    pub next: *const c_void,
338    pub vertex_format: Format,
339    pub vertex_data: DeviceOrHostAddressConstKHR,
340    pub vertex_stride: DeviceSize,
341    pub radius_format: Format,
342    pub radius_data: DeviceOrHostAddressConstKHR,
343    pub radius_stride: DeviceSize,
344    pub index_type: IndexType,
345    pub index_data: DeviceOrHostAddressConstKHR,
346    pub index_stride: DeviceSize,
347}
348
349impl Default for AccelerationStructureGeometrySpheresDataNV {
350    #[inline]
351    fn default() -> Self {
352        Self {
353            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV,
354            next: ptr::null(),
355            vertex_format: Format::default(),
356            vertex_data: DeviceOrHostAddressConstKHR::default(),
357            vertex_stride: DeviceSize::default(),
358            radius_format: Format::default(),
359            radius_data: DeviceOrHostAddressConstKHR::default(),
360            radius_stride: DeviceSize::default(),
361            index_type: IndexType::default(),
362            index_data: DeviceOrHostAddressConstKHR::default(),
363            index_stride: DeviceSize::default(),
364        }
365    }
366}
367
368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html>
369#[repr(C)]
370#[derive(Copy, Clone, Debug)]
371pub struct AccelerationStructureGeometryTrianglesDataKHR {
372    pub s_type: StructureType,
373    pub next: *const c_void,
374    pub vertex_format: Format,
375    pub vertex_data: DeviceOrHostAddressConstKHR,
376    pub vertex_stride: DeviceSize,
377    pub max_vertex: u32,
378    pub index_type: IndexType,
379    pub index_data: DeviceOrHostAddressConstKHR,
380    pub transform_data: DeviceOrHostAddressConstKHR,
381}
382
383impl Default for AccelerationStructureGeometryTrianglesDataKHR {
384    #[inline]
385    fn default() -> Self {
386        Self {
387            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,
388            next: ptr::null(),
389            vertex_format: Format::default(),
390            vertex_data: DeviceOrHostAddressConstKHR::default(),
391            vertex_stride: DeviceSize::default(),
392            max_vertex: u32::default(),
393            index_type: IndexType::default(),
394            index_data: DeviceOrHostAddressConstKHR::default(),
395            transform_data: DeviceOrHostAddressConstKHR::default(),
396        }
397    }
398}
399
400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInfoNV.html>
401#[repr(C)]
402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
403pub struct AccelerationStructureInfoNV {
404    pub s_type: StructureType,
405    pub next: *const c_void,
406    pub type_: AccelerationStructureTypeNV,
407    pub flags: BuildAccelerationStructureFlagsNV,
408    pub instance_count: u32,
409    pub geometry_count: u32,
410    pub geometries: *const GeometryNV,
411}
412
413impl Default for AccelerationStructureInfoNV {
414    #[inline]
415    fn default() -> Self {
416        Self {
417            s_type: StructureType::ACCELERATION_STRUCTURE_INFO_NV,
418            next: ptr::null(),
419            type_: AccelerationStructureTypeNV::default(),
420            flags: BuildAccelerationStructureFlagsNV::default(),
421            instance_count: u32::default(),
422            geometry_count: u32::default(),
423            geometries: ptr::null(),
424        }
425    }
426}
427
428bitfields32! {
429    struct AccelerationStructureInstanceKHRBitfields0 {
430        (instance_custom_index, with_instance_custom_index)[0 .. 24],
431        (mask, with_mask)[24 .. 32],
432    }
433}
434
435bitfields32! {
436    struct AccelerationStructureInstanceKHRBitfields1 {
437        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
438        (flags, with_flags)[24 .. 32],
439    }
440}
441
442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceKHR.html>
443#[repr(C)]
444#[derive(Copy, Clone, Default, Debug, PartialEq)]
445pub struct AccelerationStructureInstanceKHR {
446    pub transform: TransformMatrixKHR,
447    pub acceleration_structure_reference: u64,
448    pub bitfields0: AccelerationStructureInstanceKHRBitfields0,
449    pub bitfields1: AccelerationStructureInstanceKHRBitfields1,
450}
451
452bitfields32! {
453    struct AccelerationStructureMatrixMotionInstanceNVBitfields0 {
454        (instance_custom_index, with_instance_custom_index)[0 .. 24],
455        (mask, with_mask)[24 .. 32],
456    }
457}
458
459bitfields32! {
460    struct AccelerationStructureMatrixMotionInstanceNVBitfields1 {
461        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
462        (flags, with_flags)[24 .. 32],
463    }
464}
465
466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMatrixMotionInstanceNV.html>
467#[repr(C)]
468#[derive(Copy, Clone, Default, Debug, PartialEq)]
469pub struct AccelerationStructureMatrixMotionInstanceNV {
470    pub transform_t0: TransformMatrixKHR,
471    pub transform_t1: TransformMatrixKHR,
472    pub acceleration_structure_reference: u64,
473    pub bitfields0: AccelerationStructureMatrixMotionInstanceNVBitfields0,
474    pub bitfields1: AccelerationStructureMatrixMotionInstanceNVBitfields1,
475}
476
477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMemoryRequirementsInfoNV.html>
478#[repr(C)]
479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
480pub struct AccelerationStructureMemoryRequirementsInfoNV {
481    pub s_type: StructureType,
482    pub next: *const c_void,
483    pub type_: AccelerationStructureMemoryRequirementsTypeNV,
484    pub acceleration_structure: AccelerationStructureNV,
485}
486
487impl Default for AccelerationStructureMemoryRequirementsInfoNV {
488    #[inline]
489    fn default() -> Self {
490        Self {
491            s_type: StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
492            next: ptr::null(),
493            type_: AccelerationStructureMemoryRequirementsTypeNV::default(),
494            acceleration_structure: AccelerationStructureNV::default(),
495        }
496    }
497}
498
499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInfoNV.html>
500#[repr(C)]
501#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
502pub struct AccelerationStructureMotionInfoNV {
503    pub s_type: StructureType,
504    pub next: *const c_void,
505    pub max_instances: u32,
506    pub flags: AccelerationStructureMotionInfoFlagsNV,
507}
508
509impl Default for AccelerationStructureMotionInfoNV {
510    #[inline]
511    fn default() -> Self {
512        Self {
513            s_type: StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV,
514            next: ptr::null(),
515            max_instances: u32::default(),
516            flags: AccelerationStructureMotionInfoFlagsNV::default(),
517        }
518    }
519}
520
521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceNV.html>
522#[repr(C)]
523#[derive(Copy, Clone, Default, Debug)]
524pub struct AccelerationStructureMotionInstanceNV {
525    pub type_: AccelerationStructureMotionInstanceTypeNV,
526    pub flags: AccelerationStructureMotionInstanceFlagsNV,
527    pub data: AccelerationStructureMotionInstanceDataNV,
528}
529
530bitfields32! {
531    struct AccelerationStructureSRTMotionInstanceNVBitfields0 {
532        (instance_custom_index, with_instance_custom_index)[0 .. 24],
533        (mask, with_mask)[24 .. 32],
534    }
535}
536
537bitfields32! {
538    struct AccelerationStructureSRTMotionInstanceNVBitfields1 {
539        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
540        (flags, with_flags)[24 .. 32],
541    }
542}
543
544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureSRTMotionInstanceNV.html>
545#[repr(C)]
546#[derive(Copy, Clone, Default, Debug, PartialEq)]
547pub struct AccelerationStructureSRTMotionInstanceNV {
548    pub transform_t0: SRTDataNV,
549    pub transform_t1: SRTDataNV,
550    pub acceleration_structure_reference: u64,
551    pub bitfields0: AccelerationStructureSRTMotionInstanceNVBitfields0,
552    pub bitfields1: AccelerationStructureSRTMotionInstanceNVBitfields1,
553}
554
555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesDisplacementMicromapNV.html>
556#[repr(C)]
557#[derive(Copy, Clone, Debug)]
558pub struct AccelerationStructureTrianglesDisplacementMicromapNV {
559    pub s_type: StructureType,
560    pub next: *mut c_void,
561    pub displacement_bias_and_scale_format: Format,
562    pub displacement_vector_format: Format,
563    pub displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR,
564    pub displacement_bias_and_scale_stride: DeviceSize,
565    pub displacement_vector_buffer: DeviceOrHostAddressConstKHR,
566    pub displacement_vector_stride: DeviceSize,
567    pub displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR,
568    pub displaced_micromap_primitive_flags_stride: DeviceSize,
569    pub index_type: IndexType,
570    pub index_buffer: DeviceOrHostAddressConstKHR,
571    pub index_stride: DeviceSize,
572    pub base_triangle: u32,
573    pub usage_counts_count: u32,
574    pub usage_counts: *const MicromapUsageEXT,
575    pub pointer_usage_counts: *const *const MicromapUsageEXT,
576    pub micromap: MicromapEXT,
577}
578
579impl Default for AccelerationStructureTrianglesDisplacementMicromapNV {
580    #[inline]
581    fn default() -> Self {
582        Self {
583            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV,
584            next: ptr::null_mut(),
585            displacement_bias_and_scale_format: Format::default(),
586            displacement_vector_format: Format::default(),
587            displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR::default(),
588            displacement_bias_and_scale_stride: DeviceSize::default(),
589            displacement_vector_buffer: DeviceOrHostAddressConstKHR::default(),
590            displacement_vector_stride: DeviceSize::default(),
591            displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR::default(),
592            displaced_micromap_primitive_flags_stride: DeviceSize::default(),
593            index_type: IndexType::default(),
594            index_buffer: DeviceOrHostAddressConstKHR::default(),
595            index_stride: DeviceSize::default(),
596            base_triangle: u32::default(),
597            usage_counts_count: u32::default(),
598            usage_counts: ptr::null(),
599            pointer_usage_counts: ptr::null(),
600            micromap: MicromapEXT::default(),
601        }
602    }
603}
604
605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesOpacityMicromapEXT.html>
606#[repr(C)]
607#[derive(Copy, Clone, Debug)]
608pub struct AccelerationStructureTrianglesOpacityMicromapEXT {
609    pub s_type: StructureType,
610    pub next: *mut c_void,
611    pub index_type: IndexType,
612    pub index_buffer: DeviceOrHostAddressConstKHR,
613    pub index_stride: DeviceSize,
614    pub base_triangle: u32,
615    pub usage_counts_count: u32,
616    pub usage_counts: *const MicromapUsageEXT,
617    pub pointer_usage_counts: *const *const MicromapUsageEXT,
618    pub micromap: MicromapEXT,
619}
620
621impl Default for AccelerationStructureTrianglesOpacityMicromapEXT {
622    #[inline]
623    fn default() -> Self {
624        Self {
625            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT,
626            next: ptr::null_mut(),
627            index_type: IndexType::default(),
628            index_buffer: DeviceOrHostAddressConstKHR::default(),
629            index_stride: DeviceSize::default(),
630            base_triangle: u32::default(),
631            usage_counts_count: u32::default(),
632            usage_counts: ptr::null(),
633            pointer_usage_counts: ptr::null(),
634            micromap: MicromapEXT::default(),
635        }
636    }
637}
638
639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureVersionInfoKHR.html>
640#[repr(C)]
641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
642pub struct AccelerationStructureVersionInfoKHR {
643    pub s_type: StructureType,
644    pub next: *const c_void,
645    pub version_data: *const u8,
646}
647
648impl Default for AccelerationStructureVersionInfoKHR {
649    #[inline]
650    fn default() -> Self {
651        Self {
652            s_type: StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR,
653            next: ptr::null(),
654            version_data: ptr::null(),
655        }
656    }
657}
658
659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireNextImageInfoKHR.html>
660#[repr(C)]
661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
662pub struct AcquireNextImageInfoKHR {
663    pub s_type: StructureType,
664    pub next: *const c_void,
665    pub swapchain: SwapchainKHR,
666    pub timeout: u64,
667    pub semaphore: Semaphore,
668    pub fence: Fence,
669    pub device_mask: u32,
670}
671
672impl Default for AcquireNextImageInfoKHR {
673    #[inline]
674    fn default() -> Self {
675        Self {
676            s_type: StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR,
677            next: ptr::null(),
678            swapchain: SwapchainKHR::default(),
679            timeout: u64::default(),
680            semaphore: Semaphore::default(),
681            fence: Fence::default(),
682            device_mask: u32::default(),
683        }
684    }
685}
686
687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireProfilingLockInfoKHR.html>
688#[repr(C)]
689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
690pub struct AcquireProfilingLockInfoKHR {
691    pub s_type: StructureType,
692    pub next: *const c_void,
693    pub flags: AcquireProfilingLockFlagsKHR,
694    pub timeout: u64,
695}
696
697impl Default for AcquireProfilingLockInfoKHR {
698    #[inline]
699    fn default() -> Self {
700        Self {
701            s_type: StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR,
702            next: ptr::null(),
703            flags: AcquireProfilingLockFlagsKHR::default(),
704            timeout: u64::default(),
705        }
706    }
707}
708
709/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAllocationCallbacks.html>
710#[repr(C)]
711#[derive(Copy, Clone)]
712pub struct AllocationCallbacks {
713    pub user_data: *mut c_void,
714    pub allocation: PFN_vkAllocationFunction,
715    pub reallocation: PFN_vkReallocationFunction,
716    pub free: PFN_vkFreeFunction,
717    pub internal_allocation: PFN_vkInternalAllocationNotification,
718    pub internal_free: PFN_vkInternalFreeNotification,
719}
720
721impl fmt::Debug for AllocationCallbacks {
722    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
723        f.debug_struct("AllocationCallbacks")
724            .field("user_data", &self.user_data)
725            .field("allocation", &(self.allocation.map(|f| f as *const u8)))
726            .field("reallocation", &(self.reallocation.map(|f| f as *const u8)))
727            .field("free", &(self.free.map(|f| f as *const u8)))
728            .field(
729                "internal_allocation",
730                &(self.internal_allocation.map(|f| f as *const u8)),
731            )
732            .field(
733                "internal_free",
734                &(self.internal_free.map(|f| f as *const u8)),
735            )
736            .finish()
737    }
738}
739
740impl Default for AllocationCallbacks {
741    #[inline]
742    fn default() -> Self {
743        Self {
744            user_data: ptr::null_mut(),
745            allocation: PFN_vkAllocationFunction::default(),
746            reallocation: PFN_vkReallocationFunction::default(),
747            free: PFN_vkFreeFunction::default(),
748            internal_allocation: PFN_vkInternalAllocationNotification::default(),
749            internal_free: PFN_vkInternalFreeNotification::default(),
750        }
751    }
752}
753
754/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAmigoProfilingSubmitInfoSEC.html>
755#[repr(C)]
756#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
757pub struct AmigoProfilingSubmitInfoSEC {
758    pub s_type: StructureType,
759    pub next: *const c_void,
760    pub first_draw_timestamp: u64,
761    pub swap_buffer_timestamp: u64,
762}
763
764impl Default for AmigoProfilingSubmitInfoSEC {
765    #[inline]
766    fn default() -> Self {
767        Self {
768            s_type: StructureType::AMIGO_PROFILING_SUBMIT_INFO_SEC,
769            next: ptr::null(),
770            first_draw_timestamp: u64::default(),
771            swap_buffer_timestamp: u64::default(),
772        }
773    }
774}
775
776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatProperties2ANDROID.html>
777#[repr(C)]
778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
779pub struct AndroidHardwareBufferFormatProperties2ANDROID {
780    pub s_type: StructureType,
781    pub next: *mut c_void,
782    pub format: Format,
783    pub external_format: u64,
784    pub format_features: FormatFeatureFlags2,
785    pub sampler_ycbcr_conversion_components: ComponentMapping,
786    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
787    pub suggested_ycbcr_range: SamplerYcbcrRange,
788    pub suggested_x_chroma_offset: ChromaLocation,
789    pub suggested_y_chroma_offset: ChromaLocation,
790}
791
792impl Default for AndroidHardwareBufferFormatProperties2ANDROID {
793    #[inline]
794    fn default() -> Self {
795        Self {
796            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID,
797            next: ptr::null_mut(),
798            format: Format::default(),
799            external_format: u64::default(),
800            format_features: FormatFeatureFlags2::default(),
801            sampler_ycbcr_conversion_components: ComponentMapping::default(),
802            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
803            suggested_ycbcr_range: SamplerYcbcrRange::default(),
804            suggested_x_chroma_offset: ChromaLocation::default(),
805            suggested_y_chroma_offset: ChromaLocation::default(),
806        }
807    }
808}
809
810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html>
811#[repr(C)]
812#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
813pub struct AndroidHardwareBufferFormatPropertiesANDROID {
814    pub s_type: StructureType,
815    pub next: *mut c_void,
816    pub format: Format,
817    pub external_format: u64,
818    pub format_features: FormatFeatureFlags,
819    pub sampler_ycbcr_conversion_components: ComponentMapping,
820    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
821    pub suggested_ycbcr_range: SamplerYcbcrRange,
822    pub suggested_x_chroma_offset: ChromaLocation,
823    pub suggested_y_chroma_offset: ChromaLocation,
824}
825
826impl Default for AndroidHardwareBufferFormatPropertiesANDROID {
827    #[inline]
828    fn default() -> Self {
829        Self {
830            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
831            next: ptr::null_mut(),
832            format: Format::default(),
833            external_format: u64::default(),
834            format_features: FormatFeatureFlags::default(),
835            sampler_ycbcr_conversion_components: ComponentMapping::default(),
836            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
837            suggested_ycbcr_range: SamplerYcbcrRange::default(),
838            suggested_x_chroma_offset: ChromaLocation::default(),
839            suggested_y_chroma_offset: ChromaLocation::default(),
840        }
841    }
842}
843
844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatResolvePropertiesANDROID.html>
845#[repr(C)]
846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
847pub struct AndroidHardwareBufferFormatResolvePropertiesANDROID {
848    pub s_type: StructureType,
849    pub next: *mut c_void,
850    pub color_attachment_format: Format,
851}
852
853impl Default for AndroidHardwareBufferFormatResolvePropertiesANDROID {
854    #[inline]
855    fn default() -> Self {
856        Self {
857            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID,
858            next: ptr::null_mut(),
859            color_attachment_format: Format::default(),
860        }
861    }
862}
863
864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferPropertiesANDROID.html>
865#[repr(C)]
866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
867pub struct AndroidHardwareBufferPropertiesANDROID {
868    pub s_type: StructureType,
869    pub next: *mut c_void,
870    pub allocation_size: DeviceSize,
871    pub memory_type_bits: u32,
872}
873
874impl Default for AndroidHardwareBufferPropertiesANDROID {
875    #[inline]
876    fn default() -> Self {
877        Self {
878            s_type: StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
879            next: ptr::null_mut(),
880            allocation_size: DeviceSize::default(),
881            memory_type_bits: u32::default(),
882        }
883    }
884}
885
886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferUsageANDROID.html>
887#[repr(C)]
888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
889pub struct AndroidHardwareBufferUsageANDROID {
890    pub s_type: StructureType,
891    pub next: *mut c_void,
892    pub android_hardware_buffer_usage: u64,
893}
894
895impl Default for AndroidHardwareBufferUsageANDROID {
896    #[inline]
897    fn default() -> Self {
898        Self {
899            s_type: StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
900            next: ptr::null_mut(),
901            android_hardware_buffer_usage: u64::default(),
902        }
903    }
904}
905
906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidSurfaceCreateInfoKHR.html>
907#[repr(C)]
908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
909pub struct AndroidSurfaceCreateInfoKHR {
910    pub s_type: StructureType,
911    pub next: *const c_void,
912    pub flags: AndroidSurfaceCreateFlagsKHR,
913    pub window: *mut ANativeWindow,
914}
915
916impl Default for AndroidSurfaceCreateInfoKHR {
917    #[inline]
918    fn default() -> Self {
919        Self {
920            s_type: StructureType::ANDROID_SURFACE_CREATE_INFO_KHR,
921            next: ptr::null(),
922            flags: AndroidSurfaceCreateFlagsKHR::default(),
923            window: ptr::null_mut(),
924        }
925    }
926}
927
928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagDataAMD.html>
929#[repr(C)]
930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
931pub struct AntiLagDataAMD {
932    pub s_type: StructureType,
933    pub next: *const c_void,
934    pub mode: AntiLagModeAMD,
935    pub max_fps: u32,
936    pub presentation_info: *const AntiLagPresentationInfoAMD,
937}
938
939impl Default for AntiLagDataAMD {
940    #[inline]
941    fn default() -> Self {
942        Self {
943            s_type: StructureType::ANTI_LAG_DATA_AMD,
944            next: ptr::null(),
945            mode: AntiLagModeAMD::default(),
946            max_fps: u32::default(),
947            presentation_info: ptr::null(),
948        }
949    }
950}
951
952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagPresentationInfoAMD.html>
953#[repr(C)]
954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
955pub struct AntiLagPresentationInfoAMD {
956    pub s_type: StructureType,
957    pub next: *mut c_void,
958    pub stage: AntiLagStageAMD,
959    pub frame_index: u64,
960}
961
962impl Default for AntiLagPresentationInfoAMD {
963    #[inline]
964    fn default() -> Self {
965        Self {
966            s_type: StructureType::ANTI_LAG_PRESENTATION_INFO_AMD,
967            next: ptr::null_mut(),
968            stage: AntiLagStageAMD::default(),
969            frame_index: u64::default(),
970        }
971    }
972}
973
974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationInfo.html>
975#[repr(C)]
976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
977pub struct ApplicationInfo {
978    pub s_type: StructureType,
979    pub next: *const c_void,
980    pub application_name: *const c_char,
981    pub application_version: u32,
982    pub engine_name: *const c_char,
983    pub engine_version: u32,
984    pub api_version: u32,
985}
986
987impl Default for ApplicationInfo {
988    #[inline]
989    fn default() -> Self {
990        Self {
991            s_type: StructureType::APPLICATION_INFO,
992            next: ptr::null(),
993            application_name: ptr::null(),
994            application_version: u32::default(),
995            engine_name: ptr::null(),
996            engine_version: u32::default(),
997            api_version: u32::default(),
998        }
999    }
1000}
1001
1002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationParametersEXT.html>
1003#[repr(C)]
1004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1005pub struct ApplicationParametersEXT {
1006    pub s_type: StructureType,
1007    pub next: *const c_void,
1008    pub vendor_id: u32,
1009    pub device_id: u32,
1010    pub key: u32,
1011    pub value: u64,
1012}
1013
1014impl Default for ApplicationParametersEXT {
1015    #[inline]
1016    fn default() -> Self {
1017        Self {
1018            s_type: StructureType::APPLICATION_PARAMETERS_EXT,
1019            next: ptr::null(),
1020            vendor_id: u32::default(),
1021            device_id: u32::default(),
1022            key: u32::default(),
1023            value: u64::default(),
1024        }
1025    }
1026}
1027
1028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription.html>
1029#[repr(C)]
1030#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1031pub struct AttachmentDescription {
1032    pub flags: AttachmentDescriptionFlags,
1033    pub format: Format,
1034    pub samples: SampleCountFlags,
1035    pub load_op: AttachmentLoadOp,
1036    pub store_op: AttachmentStoreOp,
1037    pub stencil_load_op: AttachmentLoadOp,
1038    pub stencil_store_op: AttachmentStoreOp,
1039    pub initial_layout: ImageLayout,
1040    pub final_layout: ImageLayout,
1041}
1042
1043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2.html>
1044#[repr(C)]
1045#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1046pub struct AttachmentDescription2 {
1047    pub s_type: StructureType,
1048    pub next: *const c_void,
1049    pub flags: AttachmentDescriptionFlags,
1050    pub format: Format,
1051    pub samples: SampleCountFlags,
1052    pub load_op: AttachmentLoadOp,
1053    pub store_op: AttachmentStoreOp,
1054    pub stencil_load_op: AttachmentLoadOp,
1055    pub stencil_store_op: AttachmentStoreOp,
1056    pub initial_layout: ImageLayout,
1057    pub final_layout: ImageLayout,
1058}
1059
1060impl Default for AttachmentDescription2 {
1061    #[inline]
1062    fn default() -> Self {
1063        Self {
1064            s_type: StructureType::ATTACHMENT_DESCRIPTION_2,
1065            next: ptr::null(),
1066            flags: AttachmentDescriptionFlags::default(),
1067            format: Format::default(),
1068            samples: SampleCountFlags::default(),
1069            load_op: AttachmentLoadOp::default(),
1070            store_op: AttachmentStoreOp::default(),
1071            stencil_load_op: AttachmentLoadOp::default(),
1072            stencil_store_op: AttachmentStoreOp::default(),
1073            initial_layout: ImageLayout::default(),
1074            final_layout: ImageLayout::default(),
1075        }
1076    }
1077}
1078
1079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayout.html>
1080#[repr(C)]
1081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1082pub struct AttachmentDescriptionStencilLayout {
1083    pub s_type: StructureType,
1084    pub next: *mut c_void,
1085    pub stencil_initial_layout: ImageLayout,
1086    pub stencil_final_layout: ImageLayout,
1087}
1088
1089impl Default for AttachmentDescriptionStencilLayout {
1090    #[inline]
1091    fn default() -> Self {
1092        Self {
1093            s_type: StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
1094            next: ptr::null_mut(),
1095            stencil_initial_layout: ImageLayout::default(),
1096            stencil_final_layout: ImageLayout::default(),
1097        }
1098    }
1099}
1100
1101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentFeedbackLoopInfoEXT.html>
1102#[repr(C)]
1103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1104pub struct AttachmentFeedbackLoopInfoEXT {
1105    pub s_type: StructureType,
1106    pub next: *const c_void,
1107    pub feedback_loop_enable: Bool32,
1108}
1109
1110impl Default for AttachmentFeedbackLoopInfoEXT {
1111    #[inline]
1112    fn default() -> Self {
1113        Self {
1114            s_type: StructureType::ATTACHMENT_FEEDBACK_LOOP_INFO_EXT,
1115            next: ptr::null(),
1116            feedback_loop_enable: Bool32::default(),
1117        }
1118    }
1119}
1120
1121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference.html>
1122#[repr(C)]
1123#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1124pub struct AttachmentReference {
1125    pub attachment: u32,
1126    pub layout: ImageLayout,
1127}
1128
1129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2.html>
1130#[repr(C)]
1131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1132pub struct AttachmentReference2 {
1133    pub s_type: StructureType,
1134    pub next: *const c_void,
1135    pub attachment: u32,
1136    pub layout: ImageLayout,
1137    pub aspect_mask: ImageAspectFlags,
1138}
1139
1140impl Default for AttachmentReference2 {
1141    #[inline]
1142    fn default() -> Self {
1143        Self {
1144            s_type: StructureType::ATTACHMENT_REFERENCE_2,
1145            next: ptr::null(),
1146            attachment: u32::default(),
1147            layout: ImageLayout::default(),
1148            aspect_mask: ImageAspectFlags::default(),
1149        }
1150    }
1151}
1152
1153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayout.html>
1154#[repr(C)]
1155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1156pub struct AttachmentReferenceStencilLayout {
1157    pub s_type: StructureType,
1158    pub next: *mut c_void,
1159    pub stencil_layout: ImageLayout,
1160}
1161
1162impl Default for AttachmentReferenceStencilLayout {
1163    #[inline]
1164    fn default() -> Self {
1165        Self {
1166            s_type: StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
1167            next: ptr::null_mut(),
1168            stencil_layout: ImageLayout::default(),
1169        }
1170    }
1171}
1172
1173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoAMD.html>
1174#[repr(C)]
1175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1176pub struct AttachmentSampleCountInfoAMD {
1177    pub s_type: StructureType,
1178    pub next: *const c_void,
1179    pub color_attachment_count: u32,
1180    pub color_attachment_samples: *const SampleCountFlags,
1181    pub depth_stencil_attachment_samples: SampleCountFlags,
1182}
1183
1184impl Default for AttachmentSampleCountInfoAMD {
1185    #[inline]
1186    fn default() -> Self {
1187        Self {
1188            s_type: StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
1189            next: ptr::null(),
1190            color_attachment_count: u32::default(),
1191            color_attachment_samples: ptr::null(),
1192            depth_stencil_attachment_samples: SampleCountFlags::default(),
1193        }
1194    }
1195}
1196
1197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleLocationsEXT.html>
1198#[repr(C)]
1199#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1200pub struct AttachmentSampleLocationsEXT {
1201    pub attachment_index: u32,
1202    pub sample_locations_info: SampleLocationsInfoEXT,
1203}
1204
1205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseInStructure.html>
1206#[repr(C)]
1207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1208pub struct BaseInStructure {
1209    pub s_type: StructureType,
1210    pub next: *const BaseInStructure,
1211}
1212
1213impl Default for BaseInStructure {
1214    #[inline]
1215    fn default() -> Self {
1216        Self {
1217            s_type: StructureType::default(),
1218            next: ptr::null(),
1219        }
1220    }
1221}
1222
1223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseOutStructure.html>
1224#[repr(C)]
1225#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1226pub struct BaseOutStructure {
1227    pub s_type: StructureType,
1228    pub next: *mut BaseOutStructure,
1229}
1230
1231impl Default for BaseOutStructure {
1232    #[inline]
1233    fn default() -> Self {
1234        Self {
1235            s_type: StructureType::default(),
1236            next: ptr::null_mut(),
1237        }
1238    }
1239}
1240
1241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html>
1242#[repr(C)]
1243#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1244pub struct BindAccelerationStructureMemoryInfoNV {
1245    pub s_type: StructureType,
1246    pub next: *const c_void,
1247    pub acceleration_structure: AccelerationStructureNV,
1248    pub memory: DeviceMemory,
1249    pub memory_offset: DeviceSize,
1250    pub device_index_count: u32,
1251    pub device_indices: *const u32,
1252}
1253
1254impl Default for BindAccelerationStructureMemoryInfoNV {
1255    #[inline]
1256    fn default() -> Self {
1257        Self {
1258            s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
1259            next: ptr::null(),
1260            acceleration_structure: AccelerationStructureNV::default(),
1261            memory: DeviceMemory::default(),
1262            memory_offset: DeviceSize::default(),
1263            device_index_count: u32::default(),
1264            device_indices: ptr::null(),
1265        }
1266    }
1267}
1268
1269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html>
1270#[repr(C)]
1271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1272pub struct BindBufferMemoryDeviceGroupInfo {
1273    pub s_type: StructureType,
1274    pub next: *const c_void,
1275    pub device_index_count: u32,
1276    pub device_indices: *const u32,
1277}
1278
1279impl Default for BindBufferMemoryDeviceGroupInfo {
1280    #[inline]
1281    fn default() -> Self {
1282        Self {
1283            s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1284            next: ptr::null(),
1285            device_index_count: u32::default(),
1286            device_indices: ptr::null(),
1287        }
1288    }
1289}
1290
1291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html>
1292#[repr(C)]
1293#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1294pub struct BindBufferMemoryInfo {
1295    pub s_type: StructureType,
1296    pub next: *const c_void,
1297    pub buffer: Buffer,
1298    pub memory: DeviceMemory,
1299    pub memory_offset: DeviceSize,
1300}
1301
1302impl Default for BindBufferMemoryInfo {
1303    #[inline]
1304    fn default() -> Self {
1305        Self {
1306            s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
1307            next: ptr::null(),
1308            buffer: Buffer::default(),
1309            memory: DeviceMemory::default(),
1310            memory_offset: DeviceSize::default(),
1311        }
1312    }
1313}
1314
1315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDataGraphPipelineSessionMemoryInfoARM.html>
1316#[repr(C)]
1317#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1318pub struct BindDataGraphPipelineSessionMemoryInfoARM {
1319    pub s_type: StructureType,
1320    pub next: *const c_void,
1321    pub session: DataGraphPipelineSessionARM,
1322    pub bind_point: DataGraphPipelineSessionBindPointARM,
1323    pub object_index: u32,
1324    pub memory: DeviceMemory,
1325    pub memory_offset: DeviceSize,
1326}
1327
1328impl Default for BindDataGraphPipelineSessionMemoryInfoARM {
1329    #[inline]
1330    fn default() -> Self {
1331        Self {
1332            s_type: StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM,
1333            next: ptr::null(),
1334            session: DataGraphPipelineSessionARM::default(),
1335            bind_point: DataGraphPipelineSessionBindPointARM::default(),
1336            object_index: u32::default(),
1337            memory: DeviceMemory::default(),
1338            memory_offset: DeviceSize::default(),
1339        }
1340    }
1341}
1342
1343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html>
1344#[repr(C)]
1345#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1346pub struct BindDescriptorBufferEmbeddedSamplersInfoEXT {
1347    pub s_type: StructureType,
1348    pub next: *const c_void,
1349    pub stage_flags: ShaderStageFlags,
1350    pub layout: PipelineLayout,
1351    pub set: u32,
1352}
1353
1354impl Default for BindDescriptorBufferEmbeddedSamplersInfoEXT {
1355    #[inline]
1356    fn default() -> Self {
1357        Self {
1358            s_type: StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT,
1359            next: ptr::null(),
1360            stage_flags: ShaderStageFlags::default(),
1361            layout: PipelineLayout::default(),
1362            set: u32::default(),
1363        }
1364    }
1365}
1366
1367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html>
1368#[repr(C)]
1369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1370pub struct BindDescriptorSetsInfo {
1371    pub s_type: StructureType,
1372    pub next: *const c_void,
1373    pub stage_flags: ShaderStageFlags,
1374    pub layout: PipelineLayout,
1375    pub first_set: u32,
1376    pub descriptor_set_count: u32,
1377    pub descriptor_sets: *const DescriptorSet,
1378    pub dynamic_offset_count: u32,
1379    pub dynamic_offsets: *const u32,
1380}
1381
1382impl Default for BindDescriptorSetsInfo {
1383    #[inline]
1384    fn default() -> Self {
1385        Self {
1386            s_type: StructureType::BIND_DESCRIPTOR_SETS_INFO,
1387            next: ptr::null(),
1388            stage_flags: ShaderStageFlags::default(),
1389            layout: PipelineLayout::default(),
1390            first_set: u32::default(),
1391            descriptor_set_count: u32::default(),
1392            descriptor_sets: ptr::null(),
1393            dynamic_offset_count: u32::default(),
1394            dynamic_offsets: ptr::null(),
1395        }
1396    }
1397}
1398
1399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html>
1400#[repr(C)]
1401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1402pub struct BindImageMemoryDeviceGroupInfo {
1403    pub s_type: StructureType,
1404    pub next: *const c_void,
1405    pub device_index_count: u32,
1406    pub device_indices: *const u32,
1407    pub split_instance_bind_region_count: u32,
1408    pub split_instance_bind_regions: *const Rect2D,
1409}
1410
1411impl Default for BindImageMemoryDeviceGroupInfo {
1412    #[inline]
1413    fn default() -> Self {
1414        Self {
1415            s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1416            next: ptr::null(),
1417            device_index_count: u32::default(),
1418            device_indices: ptr::null(),
1419            split_instance_bind_region_count: u32::default(),
1420            split_instance_bind_regions: ptr::null(),
1421        }
1422    }
1423}
1424
1425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html>
1426#[repr(C)]
1427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1428pub struct BindImageMemoryInfo {
1429    pub s_type: StructureType,
1430    pub next: *const c_void,
1431    pub image: Image,
1432    pub memory: DeviceMemory,
1433    pub memory_offset: DeviceSize,
1434}
1435
1436impl Default for BindImageMemoryInfo {
1437    #[inline]
1438    fn default() -> Self {
1439        Self {
1440            s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
1441            next: ptr::null(),
1442            image: Image::default(),
1443            memory: DeviceMemory::default(),
1444            memory_offset: DeviceSize::default(),
1445        }
1446    }
1447}
1448
1449/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html>
1450#[repr(C)]
1451#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1452pub struct BindImageMemorySwapchainInfoKHR {
1453    pub s_type: StructureType,
1454    pub next: *const c_void,
1455    pub swapchain: SwapchainKHR,
1456    pub image_index: u32,
1457}
1458
1459impl Default for BindImageMemorySwapchainInfoKHR {
1460    #[inline]
1461    fn default() -> Self {
1462        Self {
1463            s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
1464            next: ptr::null(),
1465            swapchain: SwapchainKHR::default(),
1466            image_index: u32::default(),
1467        }
1468    }
1469}
1470
1471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html>
1472#[repr(C)]
1473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1474pub struct BindImagePlaneMemoryInfo {
1475    pub s_type: StructureType,
1476    pub next: *const c_void,
1477    pub plane_aspect: ImageAspectFlags,
1478}
1479
1480impl Default for BindImagePlaneMemoryInfo {
1481    #[inline]
1482    fn default() -> Self {
1483        Self {
1484            s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
1485            next: ptr::null(),
1486            plane_aspect: ImageAspectFlags::default(),
1487        }
1488    }
1489}
1490
1491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html>
1492#[repr(C)]
1493#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1494pub struct BindIndexBufferIndirectCommandEXT {
1495    pub buffer_address: DeviceAddress,
1496    pub size: u32,
1497    pub index_type: IndexType,
1498}
1499
1500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html>
1501#[repr(C)]
1502#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1503pub struct BindIndexBufferIndirectCommandNV {
1504    pub buffer_address: DeviceAddress,
1505    pub size: u32,
1506    pub index_type: IndexType,
1507}
1508
1509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatus.html>
1510#[repr(C)]
1511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1512pub struct BindMemoryStatus {
1513    pub s_type: StructureType,
1514    pub next: *const c_void,
1515    pub result: *mut Result,
1516}
1517
1518impl Default for BindMemoryStatus {
1519    #[inline]
1520    fn default() -> Self {
1521        Self {
1522            s_type: StructureType::BIND_MEMORY_STATUS,
1523            next: ptr::null(),
1524            result: ptr::null_mut(),
1525        }
1526    }
1527}
1528
1529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html>
1530#[repr(C)]
1531#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1532pub struct BindPipelineIndirectCommandNV {
1533    pub pipeline_address: DeviceAddress,
1534}
1535
1536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html>
1537#[repr(C)]
1538#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1539pub struct BindShaderGroupIndirectCommandNV {
1540    pub group_index: u32,
1541}
1542
1543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindSparseInfo.html>
1544#[repr(C)]
1545#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1546pub struct BindSparseInfo {
1547    pub s_type: StructureType,
1548    pub next: *const c_void,
1549    pub wait_semaphore_count: u32,
1550    pub wait_semaphores: *const Semaphore,
1551    pub buffer_bind_count: u32,
1552    pub buffer_binds: *const SparseBufferMemoryBindInfo,
1553    pub image_opaque_bind_count: u32,
1554    pub image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
1555    pub image_bind_count: u32,
1556    pub image_binds: *const SparseImageMemoryBindInfo,
1557    pub signal_semaphore_count: u32,
1558    pub signal_semaphores: *const Semaphore,
1559}
1560
1561impl Default for BindSparseInfo {
1562    #[inline]
1563    fn default() -> Self {
1564        Self {
1565            s_type: StructureType::BIND_SPARSE_INFO,
1566            next: ptr::null(),
1567            wait_semaphore_count: u32::default(),
1568            wait_semaphores: ptr::null(),
1569            buffer_bind_count: u32::default(),
1570            buffer_binds: ptr::null(),
1571            image_opaque_bind_count: u32::default(),
1572            image_opaque_binds: ptr::null(),
1573            image_bind_count: u32::default(),
1574            image_binds: ptr::null(),
1575            signal_semaphore_count: u32::default(),
1576            signal_semaphores: ptr::null(),
1577        }
1578    }
1579}
1580
1581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindTensorMemoryInfoARM.html>
1582#[repr(C)]
1583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1584pub struct BindTensorMemoryInfoARM {
1585    pub s_type: StructureType,
1586    pub next: *const c_void,
1587    pub tensor: TensorARM,
1588    pub memory: DeviceMemory,
1589    pub memory_offset: DeviceSize,
1590}
1591
1592impl Default for BindTensorMemoryInfoARM {
1593    #[inline]
1594    fn default() -> Self {
1595        Self {
1596            s_type: StructureType::BIND_TENSOR_MEMORY_INFO_ARM,
1597            next: ptr::null(),
1598            tensor: TensorARM::default(),
1599            memory: DeviceMemory::default(),
1600            memory_offset: DeviceSize::default(),
1601        }
1602    }
1603}
1604
1605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html>
1606#[repr(C)]
1607#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1608pub struct BindVertexBufferIndirectCommandEXT {
1609    pub buffer_address: DeviceAddress,
1610    pub size: u32,
1611    pub stride: u32,
1612}
1613
1614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html>
1615#[repr(C)]
1616#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1617pub struct BindVertexBufferIndirectCommandNV {
1618    pub buffer_address: DeviceAddress,
1619    pub size: u32,
1620    pub stride: u32,
1621}
1622
1623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html>
1624#[repr(C)]
1625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1626pub struct BindVideoSessionMemoryInfoKHR {
1627    pub s_type: StructureType,
1628    pub next: *const c_void,
1629    pub memory_bind_index: u32,
1630    pub memory: DeviceMemory,
1631    pub memory_offset: DeviceSize,
1632    pub memory_size: DeviceSize,
1633}
1634
1635impl Default for BindVideoSessionMemoryInfoKHR {
1636    #[inline]
1637    fn default() -> Self {
1638        Self {
1639            s_type: StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR,
1640            next: ptr::null(),
1641            memory_bind_index: u32::default(),
1642            memory: DeviceMemory::default(),
1643            memory_offset: DeviceSize::default(),
1644            memory_size: DeviceSize::default(),
1645        }
1646    }
1647}
1648
1649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html>
1650#[repr(C)]
1651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1652pub struct BlitImageCubicWeightsInfoQCOM {
1653    pub s_type: StructureType,
1654    pub next: *const c_void,
1655    pub cubic_weights: CubicFilterWeightsQCOM,
1656}
1657
1658impl Default for BlitImageCubicWeightsInfoQCOM {
1659    #[inline]
1660    fn default() -> Self {
1661        Self {
1662            s_type: StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM,
1663            next: ptr::null(),
1664            cubic_weights: CubicFilterWeightsQCOM::default(),
1665        }
1666    }
1667}
1668
1669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2.html>
1670#[repr(C)]
1671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1672pub struct BlitImageInfo2 {
1673    pub s_type: StructureType,
1674    pub next: *const c_void,
1675    pub src_image: Image,
1676    pub src_image_layout: ImageLayout,
1677    pub dst_image: Image,
1678    pub dst_image_layout: ImageLayout,
1679    pub region_count: u32,
1680    pub regions: *const ImageBlit2,
1681    pub filter: Filter,
1682}
1683
1684impl Default for BlitImageInfo2 {
1685    #[inline]
1686    fn default() -> Self {
1687        Self {
1688            s_type: StructureType::BLIT_IMAGE_INFO_2,
1689            next: ptr::null(),
1690            src_image: Image::default(),
1691            src_image_layout: ImageLayout::default(),
1692            dst_image: Image::default(),
1693            dst_image_layout: ImageLayout::default(),
1694            region_count: u32::default(),
1695            regions: ptr::null(),
1696            filter: Filter::default(),
1697        }
1698    }
1699}
1700
1701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html>
1702#[repr(C)]
1703#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1704pub struct BufferCaptureDescriptorDataInfoEXT {
1705    pub s_type: StructureType,
1706    pub next: *const c_void,
1707    pub buffer: Buffer,
1708}
1709
1710impl Default for BufferCaptureDescriptorDataInfoEXT {
1711    #[inline]
1712    fn default() -> Self {
1713        Self {
1714            s_type: StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
1715            next: ptr::null(),
1716            buffer: Buffer::default(),
1717        }
1718    }
1719}
1720
1721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>
1722#[repr(C)]
1723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1724pub struct BufferCollectionBufferCreateInfoFUCHSIA {
1725    pub s_type: StructureType,
1726    pub next: *const c_void,
1727    pub collection: BufferCollectionFUCHSIA,
1728    pub index: u32,
1729}
1730
1731impl Default for BufferCollectionBufferCreateInfoFUCHSIA {
1732    #[inline]
1733    fn default() -> Self {
1734        Self {
1735            s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
1736            next: ptr::null(),
1737            collection: BufferCollectionFUCHSIA::default(),
1738            index: u32::default(),
1739        }
1740    }
1741}
1742
1743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>
1744#[repr(C)]
1745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1746pub struct BufferCollectionConstraintsInfoFUCHSIA {
1747    pub s_type: StructureType,
1748    pub next: *const c_void,
1749    pub min_buffer_count: u32,
1750    pub max_buffer_count: u32,
1751    pub min_buffer_count_for_camping: u32,
1752    pub min_buffer_count_for_dedicated_slack: u32,
1753    pub min_buffer_count_for_shared_slack: u32,
1754}
1755
1756impl Default for BufferCollectionConstraintsInfoFUCHSIA {
1757    #[inline]
1758    fn default() -> Self {
1759        Self {
1760            s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
1761            next: ptr::null(),
1762            min_buffer_count: u32::default(),
1763            max_buffer_count: u32::default(),
1764            min_buffer_count_for_camping: u32::default(),
1765            min_buffer_count_for_dedicated_slack: u32::default(),
1766            min_buffer_count_for_shared_slack: u32::default(),
1767        }
1768    }
1769}
1770
1771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>
1772#[repr(C)]
1773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1774pub struct BufferCollectionCreateInfoFUCHSIA {
1775    pub s_type: StructureType,
1776    pub next: *const c_void,
1777    pub collection_token: zx_handle_t,
1778}
1779
1780impl Default for BufferCollectionCreateInfoFUCHSIA {
1781    #[inline]
1782    fn default() -> Self {
1783        Self {
1784            s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
1785            next: ptr::null(),
1786            collection_token: zx_handle_t::default(),
1787        }
1788    }
1789}
1790
1791/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>
1792#[repr(C)]
1793#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1794pub struct BufferCollectionImageCreateInfoFUCHSIA {
1795    pub s_type: StructureType,
1796    pub next: *const c_void,
1797    pub collection: BufferCollectionFUCHSIA,
1798    pub index: u32,
1799}
1800
1801impl Default for BufferCollectionImageCreateInfoFUCHSIA {
1802    #[inline]
1803    fn default() -> Self {
1804        Self {
1805            s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
1806            next: ptr::null(),
1807            collection: BufferCollectionFUCHSIA::default(),
1808            index: u32::default(),
1809        }
1810    }
1811}
1812
1813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html>
1814#[repr(C)]
1815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1816pub struct BufferCollectionPropertiesFUCHSIA {
1817    pub s_type: StructureType,
1818    pub next: *mut c_void,
1819    pub memory_type_bits: u32,
1820    pub buffer_count: u32,
1821    pub create_info_index: u32,
1822    pub sysmem_pixel_format: u64,
1823    pub format_features: FormatFeatureFlags,
1824    pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
1825    pub sampler_ycbcr_conversion_components: ComponentMapping,
1826    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
1827    pub suggested_ycbcr_range: SamplerYcbcrRange,
1828    pub suggested_x_chroma_offset: ChromaLocation,
1829    pub suggested_y_chroma_offset: ChromaLocation,
1830}
1831
1832impl Default for BufferCollectionPropertiesFUCHSIA {
1833    #[inline]
1834    fn default() -> Self {
1835        Self {
1836            s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
1837            next: ptr::null_mut(),
1838            memory_type_bits: u32::default(),
1839            buffer_count: u32::default(),
1840            create_info_index: u32::default(),
1841            sysmem_pixel_format: u64::default(),
1842            format_features: FormatFeatureFlags::default(),
1843            sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
1844            sampler_ycbcr_conversion_components: ComponentMapping::default(),
1845            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
1846            suggested_ycbcr_range: SamplerYcbcrRange::default(),
1847            suggested_x_chroma_offset: ChromaLocation::default(),
1848            suggested_y_chroma_offset: ChromaLocation::default(),
1849        }
1850    }
1851}
1852
1853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html>
1854#[repr(C)]
1855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1856pub struct BufferConstraintsInfoFUCHSIA {
1857    pub s_type: StructureType,
1858    pub next: *const c_void,
1859    pub create_info: BufferCreateInfo,
1860    pub required_format_features: FormatFeatureFlags,
1861    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
1862}
1863
1864impl Default for BufferConstraintsInfoFUCHSIA {
1865    #[inline]
1866    fn default() -> Self {
1867        Self {
1868            s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
1869            next: ptr::null(),
1870            create_info: BufferCreateInfo::default(),
1871            required_format_features: FormatFeatureFlags::default(),
1872            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
1873        }
1874    }
1875}
1876
1877/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy.html>
1878#[repr(C)]
1879#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1880pub struct BufferCopy {
1881    pub src_offset: DeviceSize,
1882    pub dst_offset: DeviceSize,
1883    pub size: DeviceSize,
1884}
1885
1886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2.html>
1887#[repr(C)]
1888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1889pub struct BufferCopy2 {
1890    pub s_type: StructureType,
1891    pub next: *const c_void,
1892    pub src_offset: DeviceSize,
1893    pub dst_offset: DeviceSize,
1894    pub size: DeviceSize,
1895}
1896
1897impl Default for BufferCopy2 {
1898    #[inline]
1899    fn default() -> Self {
1900        Self {
1901            s_type: StructureType::BUFFER_COPY_2,
1902            next: ptr::null(),
1903            src_offset: DeviceSize::default(),
1904            dst_offset: DeviceSize::default(),
1905            size: DeviceSize::default(),
1906        }
1907    }
1908}
1909
1910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateInfo.html>
1911#[repr(C)]
1912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1913pub struct BufferCreateInfo {
1914    pub s_type: StructureType,
1915    pub next: *const c_void,
1916    pub flags: BufferCreateFlags,
1917    pub size: DeviceSize,
1918    pub usage: BufferUsageFlags,
1919    pub sharing_mode: SharingMode,
1920    pub queue_family_index_count: u32,
1921    pub queue_family_indices: *const u32,
1922}
1923
1924impl Default for BufferCreateInfo {
1925    #[inline]
1926    fn default() -> Self {
1927        Self {
1928            s_type: StructureType::BUFFER_CREATE_INFO,
1929            next: ptr::null(),
1930            flags: BufferCreateFlags::default(),
1931            size: DeviceSize::default(),
1932            usage: BufferUsageFlags::default(),
1933            sharing_mode: SharingMode::default(),
1934            queue_family_index_count: u32::default(),
1935            queue_family_indices: ptr::null(),
1936        }
1937    }
1938}
1939
1940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html>
1941#[repr(C)]
1942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1943pub struct BufferDeviceAddressCreateInfoEXT {
1944    pub s_type: StructureType,
1945    pub next: *const c_void,
1946    pub device_address: DeviceAddress,
1947}
1948
1949impl Default for BufferDeviceAddressCreateInfoEXT {
1950    #[inline]
1951    fn default() -> Self {
1952        Self {
1953            s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
1954            next: ptr::null(),
1955            device_address: DeviceAddress::default(),
1956        }
1957    }
1958}
1959
1960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html>
1961#[repr(C)]
1962#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1963pub struct BufferDeviceAddressInfo {
1964    pub s_type: StructureType,
1965    pub next: *const c_void,
1966    pub buffer: Buffer,
1967}
1968
1969impl Default for BufferDeviceAddressInfo {
1970    #[inline]
1971    fn default() -> Self {
1972        Self {
1973            s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
1974            next: ptr::null(),
1975            buffer: Buffer::default(),
1976        }
1977    }
1978}
1979
1980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy.html>
1981#[repr(C)]
1982#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1983pub struct BufferImageCopy {
1984    pub buffer_offset: DeviceSize,
1985    pub buffer_row_length: u32,
1986    pub buffer_image_height: u32,
1987    pub image_subresource: ImageSubresourceLayers,
1988    pub image_offset: Offset3D,
1989    pub image_extent: Extent3D,
1990}
1991
1992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2.html>
1993#[repr(C)]
1994#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1995pub struct BufferImageCopy2 {
1996    pub s_type: StructureType,
1997    pub next: *const c_void,
1998    pub buffer_offset: DeviceSize,
1999    pub buffer_row_length: u32,
2000    pub buffer_image_height: u32,
2001    pub image_subresource: ImageSubresourceLayers,
2002    pub image_offset: Offset3D,
2003    pub image_extent: Extent3D,
2004}
2005
2006impl Default for BufferImageCopy2 {
2007    #[inline]
2008    fn default() -> Self {
2009        Self {
2010            s_type: StructureType::BUFFER_IMAGE_COPY_2,
2011            next: ptr::null(),
2012            buffer_offset: DeviceSize::default(),
2013            buffer_row_length: u32::default(),
2014            buffer_image_height: u32::default(),
2015            image_subresource: ImageSubresourceLayers::default(),
2016            image_offset: Offset3D::default(),
2017            image_extent: Extent3D::default(),
2018        }
2019    }
2020}
2021
2022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html>
2023#[repr(C)]
2024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2025pub struct BufferMemoryBarrier {
2026    pub s_type: StructureType,
2027    pub next: *const c_void,
2028    pub src_access_mask: AccessFlags,
2029    pub dst_access_mask: AccessFlags,
2030    pub src_queue_family_index: u32,
2031    pub dst_queue_family_index: u32,
2032    pub buffer: Buffer,
2033    pub offset: DeviceSize,
2034    pub size: DeviceSize,
2035}
2036
2037impl Default for BufferMemoryBarrier {
2038    #[inline]
2039    fn default() -> Self {
2040        Self {
2041            s_type: StructureType::BUFFER_MEMORY_BARRIER,
2042            next: ptr::null(),
2043            src_access_mask: AccessFlags::default(),
2044            dst_access_mask: AccessFlags::default(),
2045            src_queue_family_index: u32::default(),
2046            dst_queue_family_index: u32::default(),
2047            buffer: Buffer::default(),
2048            offset: DeviceSize::default(),
2049            size: DeviceSize::default(),
2050        }
2051    }
2052}
2053
2054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html>
2055#[repr(C)]
2056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2057pub struct BufferMemoryBarrier2 {
2058    pub s_type: StructureType,
2059    pub next: *const c_void,
2060    pub src_stage_mask: PipelineStageFlags2,
2061    pub src_access_mask: AccessFlags2,
2062    pub dst_stage_mask: PipelineStageFlags2,
2063    pub dst_access_mask: AccessFlags2,
2064    pub src_queue_family_index: u32,
2065    pub dst_queue_family_index: u32,
2066    pub buffer: Buffer,
2067    pub offset: DeviceSize,
2068    pub size: DeviceSize,
2069}
2070
2071impl Default for BufferMemoryBarrier2 {
2072    #[inline]
2073    fn default() -> Self {
2074        Self {
2075            s_type: StructureType::BUFFER_MEMORY_BARRIER_2,
2076            next: ptr::null(),
2077            src_stage_mask: PipelineStageFlags2::default(),
2078            src_access_mask: AccessFlags2::default(),
2079            dst_stage_mask: PipelineStageFlags2::default(),
2080            dst_access_mask: AccessFlags2::default(),
2081            src_queue_family_index: u32::default(),
2082            dst_queue_family_index: u32::default(),
2083            buffer: Buffer::default(),
2084            offset: DeviceSize::default(),
2085            size: DeviceSize::default(),
2086        }
2087    }
2088}
2089
2090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html>
2091#[repr(C)]
2092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2093pub struct BufferMemoryRequirementsInfo2 {
2094    pub s_type: StructureType,
2095    pub next: *const c_void,
2096    pub buffer: Buffer,
2097}
2098
2099impl Default for BufferMemoryRequirementsInfo2 {
2100    #[inline]
2101    fn default() -> Self {
2102        Self {
2103            s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
2104            next: ptr::null(),
2105            buffer: Buffer::default(),
2106        }
2107    }
2108}
2109
2110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>
2111#[repr(C)]
2112#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2113pub struct BufferOpaqueCaptureAddressCreateInfo {
2114    pub s_type: StructureType,
2115    pub next: *const c_void,
2116    pub opaque_capture_address: u64,
2117}
2118
2119impl Default for BufferOpaqueCaptureAddressCreateInfo {
2120    #[inline]
2121    fn default() -> Self {
2122        Self {
2123            s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
2124            next: ptr::null(),
2125            opaque_capture_address: u64::default(),
2126        }
2127    }
2128}
2129
2130/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html>
2131#[repr(C)]
2132#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2133pub struct BufferUsageFlags2CreateInfo {
2134    pub s_type: StructureType,
2135    pub next: *const c_void,
2136    pub usage: BufferUsageFlags2,
2137}
2138
2139impl Default for BufferUsageFlags2CreateInfo {
2140    #[inline]
2141    fn default() -> Self {
2142        Self {
2143            s_type: StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO,
2144            next: ptr::null(),
2145            usage: BufferUsageFlags2::default(),
2146        }
2147    }
2148}
2149
2150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html>
2151#[repr(C)]
2152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2153pub struct BufferViewCreateInfo {
2154    pub s_type: StructureType,
2155    pub next: *const c_void,
2156    pub flags: BufferViewCreateFlags,
2157    pub buffer: Buffer,
2158    pub format: Format,
2159    pub offset: DeviceSize,
2160    pub range: DeviceSize,
2161}
2162
2163impl Default for BufferViewCreateInfo {
2164    #[inline]
2165    fn default() -> Self {
2166        Self {
2167            s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2168            next: ptr::null(),
2169            flags: BufferViewCreateFlags::default(),
2170            buffer: Buffer::default(),
2171            format: Format::default(),
2172            offset: DeviceSize::default(),
2173            range: DeviceSize::default(),
2174        }
2175    }
2176}
2177
2178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html>
2179#[repr(C)]
2180#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2181pub struct BuildPartitionedAccelerationStructureIndirectCommandNV {
2182    pub op_type: PartitionedAccelerationStructureOpTypeNV,
2183    pub arg_count: u32,
2184    pub arg_data: StridedDeviceAddressNV,
2185}
2186
2187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html>
2188#[repr(C)]
2189#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2190pub struct BuildPartitionedAccelerationStructureInfoNV {
2191    pub s_type: StructureType,
2192    pub next: *mut c_void,
2193    pub input: PartitionedAccelerationStructureInstancesInputNV,
2194    pub src_acceleration_structure_data: DeviceAddress,
2195    pub dst_acceleration_structure_data: DeviceAddress,
2196    pub scratch_data: DeviceAddress,
2197    pub src_infos: DeviceAddress,
2198    pub src_infos_count: DeviceAddress,
2199}
2200
2201impl Default for BuildPartitionedAccelerationStructureInfoNV {
2202    #[inline]
2203    fn default() -> Self {
2204        Self {
2205            s_type: StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV,
2206            next: ptr::null_mut(),
2207            input: PartitionedAccelerationStructureInstancesInputNV::default(),
2208            src_acceleration_structure_data: DeviceAddress::default(),
2209            dst_acceleration_structure_data: DeviceAddress::default(),
2210            scratch_data: DeviceAddress::default(),
2211            src_infos: DeviceAddress::default(),
2212            src_infos_count: DeviceAddress::default(),
2213        }
2214    }
2215}
2216
2217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html>
2218#[repr(C)]
2219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2220pub struct CalibratedTimestampInfoKHR {
2221    pub s_type: StructureType,
2222    pub next: *const c_void,
2223    pub time_domain: TimeDomainKHR,
2224}
2225
2226impl Default for CalibratedTimestampInfoKHR {
2227    #[inline]
2228    fn default() -> Self {
2229        Self {
2230            s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_KHR,
2231            next: ptr::null(),
2232            time_domain: TimeDomainKHR::default(),
2233        }
2234    }
2235}
2236
2237/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointData2NV.html>
2238#[repr(C)]
2239#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2240pub struct CheckpointData2NV {
2241    pub s_type: StructureType,
2242    pub next: *mut c_void,
2243    pub stage: PipelineStageFlags2,
2244    pub checkpoint_marker: *mut c_void,
2245}
2246
2247impl Default for CheckpointData2NV {
2248    #[inline]
2249    fn default() -> Self {
2250        Self {
2251            s_type: StructureType::CHECKPOINT_DATA_2_NV,
2252            next: ptr::null_mut(),
2253            stage: PipelineStageFlags2::default(),
2254            checkpoint_marker: ptr::null_mut(),
2255        }
2256    }
2257}
2258
2259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointDataNV.html>
2260#[repr(C)]
2261#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2262pub struct CheckpointDataNV {
2263    pub s_type: StructureType,
2264    pub next: *mut c_void,
2265    pub stage: PipelineStageFlags,
2266    pub checkpoint_marker: *mut c_void,
2267}
2268
2269impl Default for CheckpointDataNV {
2270    #[inline]
2271    fn default() -> Self {
2272        Self {
2273            s_type: StructureType::CHECKPOINT_DATA_NV,
2274            next: ptr::null_mut(),
2275            stage: PipelineStageFlags::default(),
2276            checkpoint_marker: ptr::null_mut(),
2277        }
2278    }
2279}
2280
2281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearAttachment.html>
2282#[repr(C)]
2283#[derive(Copy, Clone, Default, Debug)]
2284pub struct ClearAttachment {
2285    pub aspect_mask: ImageAspectFlags,
2286    pub color_attachment: u32,
2287    pub clear_value: ClearValue,
2288}
2289
2290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html>
2291#[repr(C)]
2292#[derive(Copy, Clone, Default, Debug, PartialEq)]
2293pub struct ClearDepthStencilValue {
2294    pub depth: f32,
2295    pub stencil: u32,
2296}
2297
2298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearRect.html>
2299#[repr(C)]
2300#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2301pub struct ClearRect {
2302    pub rect: Rect2D,
2303    pub base_array_layer: u32,
2304    pub layer_count: u32,
2305}
2306
2307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html>
2308#[repr(C)]
2309#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2310pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
2311    pub cluster_references_count: u32,
2312    pub cluster_references_stride: u32,
2313    pub cluster_references: DeviceAddress,
2314}
2315
2316bitfields32! {
2317    struct ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0 {
2318        (triangle_count, with_triangle_count)[0 .. 9],
2319        (vertex_count, with_vertex_count)[9 .. 18],
2320        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2321        (index_type, with_index_type)[24 .. 28],
2322        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2323    }
2324}
2325
2326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html>
2327#[repr(C)]
2328#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2329pub struct ClusterAccelerationStructureBuildTriangleClusterInfoNV {
2330    pub cluster_id: u32,
2331    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2332    pub base_geometry_index_and_geometry_flags:
2333        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2334    pub index_buffer_stride: u16,
2335    pub vertex_buffer_stride: u16,
2336    pub geometry_index_and_flags_buffer_stride: u16,
2337    pub opacity_micromap_index_buffer_stride: u16,
2338    pub index_buffer: DeviceAddress,
2339    pub vertex_buffer: DeviceAddress,
2340    pub geometry_index_and_flags_buffer: DeviceAddress,
2341    pub opacity_micromap_array: DeviceAddress,
2342    pub opacity_micromap_index_buffer: DeviceAddress,
2343    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0,
2344}
2345
2346bitfields32! {
2347    struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0 {
2348        (triangle_count, with_triangle_count)[0 .. 9],
2349        (vertex_count, with_vertex_count)[9 .. 18],
2350        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2351        (index_type, with_index_type)[24 .. 28],
2352        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2353    }
2354}
2355
2356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html>
2357#[repr(C)]
2358#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2359pub struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV {
2360    pub cluster_id: u32,
2361    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2362    pub base_geometry_index_and_geometry_flags:
2363        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2364    pub index_buffer_stride: u16,
2365    pub vertex_buffer_stride: u16,
2366    pub geometry_index_and_flags_buffer_stride: u16,
2367    pub opacity_micromap_index_buffer_stride: u16,
2368    pub index_buffer: DeviceAddress,
2369    pub vertex_buffer: DeviceAddress,
2370    pub geometry_index_and_flags_buffer: DeviceAddress,
2371    pub opacity_micromap_array: DeviceAddress,
2372    pub opacity_micromap_index_buffer: DeviceAddress,
2373    pub instantiation_bounding_box_limit: DeviceAddress,
2374    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0,
2375}
2376
2377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html>
2378#[repr(C)]
2379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2380pub struct ClusterAccelerationStructureClustersBottomLevelInputNV {
2381    pub s_type: StructureType,
2382    pub next: *mut c_void,
2383    pub max_total_cluster_count: u32,
2384    pub max_cluster_count_per_acceleration_structure: u32,
2385}
2386
2387impl Default for ClusterAccelerationStructureClustersBottomLevelInputNV {
2388    #[inline]
2389    fn default() -> Self {
2390        Self {
2391            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV,
2392            next: ptr::null_mut(),
2393            max_total_cluster_count: u32::default(),
2394            max_cluster_count_per_acceleration_structure: u32::default(),
2395        }
2396    }
2397}
2398
2399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html>
2400#[repr(C)]
2401#[derive(Copy, Clone, Debug)]
2402pub struct ClusterAccelerationStructureCommandsInfoNV {
2403    pub s_type: StructureType,
2404    pub next: *mut c_void,
2405    pub input: ClusterAccelerationStructureInputInfoNV,
2406    pub dst_implicit_data: DeviceAddress,
2407    pub scratch_data: DeviceAddress,
2408    pub dst_addresses_array: StridedDeviceAddressRegionKHR,
2409    pub dst_sizes_array: StridedDeviceAddressRegionKHR,
2410    pub src_infos_array: StridedDeviceAddressRegionKHR,
2411    pub src_infos_count: DeviceAddress,
2412    pub address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV,
2413}
2414
2415impl Default for ClusterAccelerationStructureCommandsInfoNV {
2416    #[inline]
2417    fn default() -> Self {
2418        Self {
2419            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV,
2420            next: ptr::null_mut(),
2421            input: ClusterAccelerationStructureInputInfoNV::default(),
2422            dst_implicit_data: DeviceAddress::default(),
2423            scratch_data: DeviceAddress::default(),
2424            dst_addresses_array: StridedDeviceAddressRegionKHR::default(),
2425            dst_sizes_array: StridedDeviceAddressRegionKHR::default(),
2426            src_infos_array: StridedDeviceAddressRegionKHR::default(),
2427            src_infos_count: DeviceAddress::default(),
2428            address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV::default(
2429            ),
2430        }
2431    }
2432}
2433
2434bitfields32! {
2435    struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0 {
2436        (geometry_index, with_geometry_index)[0 .. 24],
2437        (reserved, with_reserved)[24 .. 29],
2438        (geometry_flags, with_geometry_flags)[29 .. 32],
2439    }
2440}
2441
2442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html>
2443#[repr(C)]
2444#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2445pub struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV {
2446    pub bitfields0: ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0,
2447}
2448
2449/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGetTemplateIndicesInfoNV.html>
2450#[repr(C)]
2451#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2452pub struct ClusterAccelerationStructureGetTemplateIndicesInfoNV {
2453    pub cluster_template_address: DeviceAddress,
2454}
2455
2456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html>
2457#[repr(C)]
2458#[derive(Copy, Clone, Debug)]
2459pub struct ClusterAccelerationStructureInputInfoNV {
2460    pub s_type: StructureType,
2461    pub next: *mut c_void,
2462    pub max_acceleration_structure_count: u32,
2463    pub flags: BuildAccelerationStructureFlagsKHR,
2464    pub op_type: ClusterAccelerationStructureOpTypeNV,
2465    pub op_mode: ClusterAccelerationStructureOpModeNV,
2466    pub op_input: ClusterAccelerationStructureOpInputNV,
2467}
2468
2469impl Default for ClusterAccelerationStructureInputInfoNV {
2470    #[inline]
2471    fn default() -> Self {
2472        Self {
2473            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV,
2474            next: ptr::null_mut(),
2475            max_acceleration_structure_count: u32::default(),
2476            flags: BuildAccelerationStructureFlagsKHR::default(),
2477            op_type: ClusterAccelerationStructureOpTypeNV::default(),
2478            op_mode: ClusterAccelerationStructureOpModeNV::default(),
2479            op_input: ClusterAccelerationStructureOpInputNV::default(),
2480        }
2481    }
2482}
2483
2484bitfields32! {
2485    struct ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0 {
2486        (geometry_index_offset, with_geometry_index_offset)[0 .. 24],
2487        (reserved, with_reserved)[24 .. 32],
2488    }
2489}
2490
2491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html>
2492#[repr(C)]
2493#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2494pub struct ClusterAccelerationStructureInstantiateClusterInfoNV {
2495    pub cluster_id_offset: u32,
2496    pub cluster_template_address: DeviceAddress,
2497    pub vertex_buffer: StridedDeviceAddressNV,
2498    pub bitfields0: ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0,
2499}
2500
2501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html>
2502#[repr(C)]
2503#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2504pub struct ClusterAccelerationStructureMoveObjectsInfoNV {
2505    pub src_acceleration_structure: DeviceAddress,
2506}
2507
2508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html>
2509#[repr(C)]
2510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2511pub struct ClusterAccelerationStructureMoveObjectsInputNV {
2512    pub s_type: StructureType,
2513    pub next: *mut c_void,
2514    pub type_: ClusterAccelerationStructureTypeNV,
2515    pub no_move_overlap: Bool32,
2516    pub max_moved_bytes: DeviceSize,
2517}
2518
2519impl Default for ClusterAccelerationStructureMoveObjectsInputNV {
2520    #[inline]
2521    fn default() -> Self {
2522        Self {
2523            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV,
2524            next: ptr::null_mut(),
2525            type_: ClusterAccelerationStructureTypeNV::default(),
2526            no_move_overlap: Bool32::default(),
2527            max_moved_bytes: DeviceSize::default(),
2528        }
2529    }
2530}
2531
2532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html>
2533#[repr(C)]
2534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2535pub struct ClusterAccelerationStructureTriangleClusterInputNV {
2536    pub s_type: StructureType,
2537    pub next: *mut c_void,
2538    pub vertex_format: Format,
2539    pub max_geometry_index_value: u32,
2540    pub max_cluster_unique_geometry_count: u32,
2541    pub max_cluster_triangle_count: u32,
2542    pub max_cluster_vertex_count: u32,
2543    pub max_total_triangle_count: u32,
2544    pub max_total_vertex_count: u32,
2545    pub min_position_truncate_bit_count: u32,
2546}
2547
2548impl Default for ClusterAccelerationStructureTriangleClusterInputNV {
2549    #[inline]
2550    fn default() -> Self {
2551        Self {
2552            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV,
2553            next: ptr::null_mut(),
2554            vertex_format: Format::default(),
2555            max_geometry_index_value: u32::default(),
2556            max_cluster_unique_geometry_count: u32::default(),
2557            max_cluster_triangle_count: u32::default(),
2558            max_cluster_vertex_count: u32::default(),
2559            max_total_triangle_count: u32::default(),
2560            max_total_vertex_count: u32::default(),
2561            min_position_truncate_bit_count: u32::default(),
2562        }
2563    }
2564}
2565
2566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html>
2567#[repr(C)]
2568#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2569pub struct CoarseSampleLocationNV {
2570    pub pixel_x: u32,
2571    pub pixel_y: u32,
2572    pub sample: u32,
2573}
2574
2575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html>
2576#[repr(C)]
2577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2578pub struct CoarseSampleOrderCustomNV {
2579    pub shading_rate: ShadingRatePaletteEntryNV,
2580    pub sample_count: u32,
2581    pub sample_location_count: u32,
2582    pub sample_locations: *const CoarseSampleLocationNV,
2583}
2584
2585impl Default for CoarseSampleOrderCustomNV {
2586    #[inline]
2587    fn default() -> Self {
2588        Self {
2589            shading_rate: ShadingRatePaletteEntryNV::default(),
2590            sample_count: u32::default(),
2591            sample_location_count: u32::default(),
2592            sample_locations: ptr::null(),
2593        }
2594    }
2595}
2596
2597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html>
2598#[repr(C)]
2599#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2600pub struct ColorBlendAdvancedEXT {
2601    pub advanced_blend_op: BlendOp,
2602    pub src_premultiplied: Bool32,
2603    pub dst_premultiplied: Bool32,
2604    pub blend_overlap: BlendOverlapEXT,
2605    pub clamp_results: Bool32,
2606}
2607
2608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html>
2609#[repr(C)]
2610#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2611pub struct ColorBlendEquationEXT {
2612    pub src_color_blend_factor: BlendFactor,
2613    pub dst_color_blend_factor: BlendFactor,
2614    pub color_blend_op: BlendOp,
2615    pub src_alpha_blend_factor: BlendFactor,
2616    pub dst_alpha_blend_factor: BlendFactor,
2617    pub alpha_blend_op: BlendOp,
2618}
2619
2620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html>
2621#[repr(C)]
2622#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2623pub struct CommandBufferAllocateInfo {
2624    pub s_type: StructureType,
2625    pub next: *const c_void,
2626    pub command_pool: CommandPool,
2627    pub level: CommandBufferLevel,
2628    pub command_buffer_count: u32,
2629}
2630
2631impl Default for CommandBufferAllocateInfo {
2632    #[inline]
2633    fn default() -> Self {
2634        Self {
2635            s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
2636            next: ptr::null(),
2637            command_pool: CommandPool::default(),
2638            level: CommandBufferLevel::default(),
2639            command_buffer_count: u32::default(),
2640        }
2641    }
2642}
2643
2644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html>
2645#[repr(C)]
2646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2647pub struct CommandBufferBeginInfo {
2648    pub s_type: StructureType,
2649    pub next: *const c_void,
2650    pub flags: CommandBufferUsageFlags,
2651    pub inheritance_info: *const CommandBufferInheritanceInfo,
2652}
2653
2654impl Default for CommandBufferBeginInfo {
2655    #[inline]
2656    fn default() -> Self {
2657        Self {
2658            s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
2659            next: ptr::null(),
2660            flags: CommandBufferUsageFlags::default(),
2661            inheritance_info: ptr::null(),
2662        }
2663    }
2664}
2665
2666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>
2667#[repr(C)]
2668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2669pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
2670    pub s_type: StructureType,
2671    pub next: *const c_void,
2672    pub conditional_rendering_enable: Bool32,
2673}
2674
2675impl Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
2676    #[inline]
2677    fn default() -> Self {
2678        Self {
2679            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
2680            next: ptr::null(),
2681            conditional_rendering_enable: Bool32::default(),
2682        }
2683    }
2684}
2685
2686/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html>
2687#[repr(C)]
2688#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2689pub struct CommandBufferInheritanceInfo {
2690    pub s_type: StructureType,
2691    pub next: *const c_void,
2692    pub render_pass: RenderPass,
2693    pub subpass: u32,
2694    pub framebuffer: Framebuffer,
2695    pub occlusion_query_enable: Bool32,
2696    pub query_flags: QueryControlFlags,
2697    pub pipeline_statistics: QueryPipelineStatisticFlags,
2698}
2699
2700impl Default for CommandBufferInheritanceInfo {
2701    #[inline]
2702    fn default() -> Self {
2703        Self {
2704            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
2705            next: ptr::null(),
2706            render_pass: RenderPass::default(),
2707            subpass: u32::default(),
2708            framebuffer: Framebuffer::default(),
2709            occlusion_query_enable: Bool32::default(),
2710            query_flags: QueryControlFlags::default(),
2711            pipeline_statistics: QueryPipelineStatisticFlags::default(),
2712        }
2713    }
2714}
2715
2716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>
2717#[repr(C)]
2718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2719pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
2720    pub s_type: StructureType,
2721    pub next: *const c_void,
2722    pub transform: SurfaceTransformFlagsKHR,
2723    pub render_area: Rect2D,
2724}
2725
2726impl Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
2727    #[inline]
2728    fn default() -> Self {
2729        Self {
2730            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
2731            next: ptr::null(),
2732            transform: SurfaceTransformFlagsKHR::default(),
2733            render_area: Rect2D::default(),
2734        }
2735    }
2736}
2737
2738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html>
2739#[repr(C)]
2740#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2741pub struct CommandBufferInheritanceRenderingInfo {
2742    pub s_type: StructureType,
2743    pub next: *const c_void,
2744    pub flags: RenderingFlags,
2745    pub view_mask: u32,
2746    pub color_attachment_count: u32,
2747    pub color_attachment_formats: *const Format,
2748    pub depth_attachment_format: Format,
2749    pub stencil_attachment_format: Format,
2750    pub rasterization_samples: SampleCountFlags,
2751}
2752
2753impl Default for CommandBufferInheritanceRenderingInfo {
2754    #[inline]
2755    fn default() -> Self {
2756        Self {
2757            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
2758            next: ptr::null(),
2759            flags: RenderingFlags::default(),
2760            view_mask: u32::default(),
2761            color_attachment_count: u32::default(),
2762            color_attachment_formats: ptr::null(),
2763            depth_attachment_format: Format::default(),
2764            stencil_attachment_format: Format::default(),
2765            rasterization_samples: SampleCountFlags::default(),
2766        }
2767    }
2768}
2769
2770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>
2771#[repr(C)]
2772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2773pub struct CommandBufferInheritanceViewportScissorInfoNV {
2774    pub s_type: StructureType,
2775    pub next: *const c_void,
2776    pub viewport_scissor_2d: Bool32,
2777    pub viewport_depth_count: u32,
2778    pub viewport_depths: *const Viewport,
2779}
2780
2781impl Default for CommandBufferInheritanceViewportScissorInfoNV {
2782    #[inline]
2783    fn default() -> Self {
2784        Self {
2785            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
2786            next: ptr::null(),
2787            viewport_scissor_2d: Bool32::default(),
2788            viewport_depth_count: u32::default(),
2789            viewport_depths: ptr::null(),
2790        }
2791    }
2792}
2793
2794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html>
2795#[repr(C)]
2796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2797pub struct CommandBufferSubmitInfo {
2798    pub s_type: StructureType,
2799    pub next: *const c_void,
2800    pub command_buffer: CommandBuffer,
2801    pub device_mask: u32,
2802}
2803
2804impl Default for CommandBufferSubmitInfo {
2805    #[inline]
2806    fn default() -> Self {
2807        Self {
2808            s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO,
2809            next: ptr::null(),
2810            command_buffer: CommandBuffer::default(),
2811            device_mask: u32::default(),
2812        }
2813    }
2814}
2815
2816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html>
2817#[repr(C)]
2818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2819pub struct CommandPoolCreateInfo {
2820    pub s_type: StructureType,
2821    pub next: *const c_void,
2822    pub flags: CommandPoolCreateFlags,
2823    pub queue_family_index: u32,
2824}
2825
2826impl Default for CommandPoolCreateInfo {
2827    #[inline]
2828    fn default() -> Self {
2829        Self {
2830            s_type: StructureType::COMMAND_POOL_CREATE_INFO,
2831            next: ptr::null(),
2832            flags: CommandPoolCreateFlags::default(),
2833            queue_family_index: u32::default(),
2834        }
2835    }
2836}
2837
2838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComponentMapping.html>
2839#[repr(C)]
2840#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2841pub struct ComponentMapping {
2842    pub r: ComponentSwizzle,
2843    pub g: ComponentSwizzle,
2844    pub b: ComponentSwizzle,
2845    pub a: ComponentSwizzle,
2846}
2847
2848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html>
2849#[repr(C)]
2850#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2851pub struct ComputePipelineCreateInfo {
2852    pub s_type: StructureType,
2853    pub next: *const c_void,
2854    pub flags: PipelineCreateFlags,
2855    pub stage: PipelineShaderStageCreateInfo,
2856    pub layout: PipelineLayout,
2857    pub base_pipeline_handle: Pipeline,
2858    pub base_pipeline_index: i32,
2859}
2860
2861impl Default for ComputePipelineCreateInfo {
2862    #[inline]
2863    fn default() -> Self {
2864        Self {
2865            s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
2866            next: ptr::null(),
2867            flags: PipelineCreateFlags::default(),
2868            stage: PipelineShaderStageCreateInfo::default(),
2869            layout: PipelineLayout::default(),
2870            base_pipeline_handle: Pipeline::default(),
2871            base_pipeline_index: i32::default(),
2872        }
2873    }
2874}
2875
2876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html>
2877#[repr(C)]
2878#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2879pub struct ComputePipelineIndirectBufferInfoNV {
2880    pub s_type: StructureType,
2881    pub next: *const c_void,
2882    pub device_address: DeviceAddress,
2883    pub size: DeviceSize,
2884    pub pipeline_device_address_capture_replay: DeviceAddress,
2885}
2886
2887impl Default for ComputePipelineIndirectBufferInfoNV {
2888    #[inline]
2889    fn default() -> Self {
2890        Self {
2891            s_type: StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV,
2892            next: ptr::null(),
2893            device_address: DeviceAddress::default(),
2894            size: DeviceSize::default(),
2895            pipeline_device_address_capture_replay: DeviceAddress::default(),
2896        }
2897    }
2898}
2899
2900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html>
2901#[repr(C)]
2902#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2903pub struct ConditionalRenderingBeginInfoEXT {
2904    pub s_type: StructureType,
2905    pub next: *const c_void,
2906    pub buffer: Buffer,
2907    pub offset: DeviceSize,
2908    pub flags: ConditionalRenderingFlagsEXT,
2909}
2910
2911impl Default for ConditionalRenderingBeginInfoEXT {
2912    #[inline]
2913    fn default() -> Self {
2914        Self {
2915            s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
2916            next: ptr::null(),
2917            buffer: Buffer::default(),
2918            offset: DeviceSize::default(),
2919            flags: ConditionalRenderingFlagsEXT::default(),
2920        }
2921    }
2922}
2923
2924/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersion.html>
2925#[repr(C)]
2926#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2927pub struct ConformanceVersion {
2928    pub major: u8,
2929    pub minor: u8,
2930    pub subminor: u8,
2931    pub patch: u8,
2932}
2933
2934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html>
2935#[repr(C)]
2936#[derive(Copy, Clone, Debug)]
2937pub struct ConvertCooperativeVectorMatrixInfoNV {
2938    pub s_type: StructureType,
2939    pub next: *const c_void,
2940    pub src_size: usize,
2941    pub src_data: DeviceOrHostAddressConstKHR,
2942    pub dst_size: *mut usize,
2943    pub dst_data: DeviceOrHostAddressKHR,
2944    pub src_component_type: ComponentTypeKHR,
2945    pub dst_component_type: ComponentTypeKHR,
2946    pub num_rows: u32,
2947    pub num_columns: u32,
2948    pub src_layout: CooperativeVectorMatrixLayoutNV,
2949    pub src_stride: usize,
2950    pub dst_layout: CooperativeVectorMatrixLayoutNV,
2951    pub dst_stride: usize,
2952}
2953
2954impl Default for ConvertCooperativeVectorMatrixInfoNV {
2955    #[inline]
2956    fn default() -> Self {
2957        Self {
2958            s_type: StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV,
2959            next: ptr::null(),
2960            src_size: usize::default(),
2961            src_data: DeviceOrHostAddressConstKHR::default(),
2962            dst_size: ptr::null_mut(),
2963            dst_data: DeviceOrHostAddressKHR::default(),
2964            src_component_type: ComponentTypeKHR::default(),
2965            dst_component_type: ComponentTypeKHR::default(),
2966            num_rows: u32::default(),
2967            num_columns: u32::default(),
2968            src_layout: CooperativeVectorMatrixLayoutNV::default(),
2969            src_stride: usize::default(),
2970            dst_layout: CooperativeVectorMatrixLayoutNV::default(),
2971            dst_stride: usize::default(),
2972        }
2973    }
2974}
2975
2976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html>
2977#[repr(C)]
2978#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2979pub struct CooperativeMatrixFlexibleDimensionsPropertiesNV {
2980    pub s_type: StructureType,
2981    pub next: *mut c_void,
2982    pub m_granularity: u32,
2983    pub n_granularity: u32,
2984    pub k_granularity: u32,
2985    pub a_type: ComponentTypeKHR,
2986    pub b_type: ComponentTypeKHR,
2987    pub c_type: ComponentTypeKHR,
2988    pub result_type: ComponentTypeKHR,
2989    pub saturating_accumulation: Bool32,
2990    pub scope: ScopeKHR,
2991    pub workgroup_invocations: u32,
2992}
2993
2994impl Default for CooperativeMatrixFlexibleDimensionsPropertiesNV {
2995    #[inline]
2996    fn default() -> Self {
2997        Self {
2998            s_type: StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV,
2999            next: ptr::null_mut(),
3000            m_granularity: u32::default(),
3001            n_granularity: u32::default(),
3002            k_granularity: u32::default(),
3003            a_type: ComponentTypeKHR::default(),
3004            b_type: ComponentTypeKHR::default(),
3005            c_type: ComponentTypeKHR::default(),
3006            result_type: ComponentTypeKHR::default(),
3007            saturating_accumulation: Bool32::default(),
3008            scope: ScopeKHR::default(),
3009            workgroup_invocations: u32::default(),
3010        }
3011    }
3012}
3013
3014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html>
3015#[repr(C)]
3016#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3017pub struct CooperativeMatrixPropertiesKHR {
3018    pub s_type: StructureType,
3019    pub next: *mut c_void,
3020    pub m_size: u32,
3021    pub n_size: u32,
3022    pub k_size: u32,
3023    pub a_type: ComponentTypeKHR,
3024    pub b_type: ComponentTypeKHR,
3025    pub c_type: ComponentTypeKHR,
3026    pub result_type: ComponentTypeKHR,
3027    pub saturating_accumulation: Bool32,
3028    pub scope: ScopeKHR,
3029}
3030
3031impl Default for CooperativeMatrixPropertiesKHR {
3032    #[inline]
3033    fn default() -> Self {
3034        Self {
3035            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR,
3036            next: ptr::null_mut(),
3037            m_size: u32::default(),
3038            n_size: u32::default(),
3039            k_size: u32::default(),
3040            a_type: ComponentTypeKHR::default(),
3041            b_type: ComponentTypeKHR::default(),
3042            c_type: ComponentTypeKHR::default(),
3043            result_type: ComponentTypeKHR::default(),
3044            saturating_accumulation: Bool32::default(),
3045            scope: ScopeKHR::default(),
3046        }
3047    }
3048}
3049
3050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html>
3051#[repr(C)]
3052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3053pub struct CooperativeMatrixPropertiesNV {
3054    pub s_type: StructureType,
3055    pub next: *mut c_void,
3056    pub m_size: u32,
3057    pub n_size: u32,
3058    pub k_size: u32,
3059    pub a_type: ComponentTypeNV,
3060    pub b_type: ComponentTypeNV,
3061    pub c_type: ComponentTypeNV,
3062    pub d_type: ComponentTypeNV,
3063    pub scope: ScopeNV,
3064}
3065
3066impl Default for CooperativeMatrixPropertiesNV {
3067    #[inline]
3068    fn default() -> Self {
3069        Self {
3070            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
3071            next: ptr::null_mut(),
3072            m_size: u32::default(),
3073            n_size: u32::default(),
3074            k_size: u32::default(),
3075            a_type: ComponentTypeNV::default(),
3076            b_type: ComponentTypeNV::default(),
3077            c_type: ComponentTypeNV::default(),
3078            d_type: ComponentTypeNV::default(),
3079            scope: ScopeNV::default(),
3080        }
3081    }
3082}
3083
3084/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html>
3085#[repr(C)]
3086#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3087pub struct CooperativeVectorPropertiesNV {
3088    pub s_type: StructureType,
3089    pub next: *mut c_void,
3090    pub input_type: ComponentTypeKHR,
3091    pub input_interpretation: ComponentTypeKHR,
3092    pub matrix_interpretation: ComponentTypeKHR,
3093    pub bias_interpretation: ComponentTypeKHR,
3094    pub result_type: ComponentTypeKHR,
3095    pub transpose: Bool32,
3096}
3097
3098impl Default for CooperativeVectorPropertiesNV {
3099    #[inline]
3100    fn default() -> Self {
3101        Self {
3102            s_type: StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV,
3103            next: ptr::null_mut(),
3104            input_type: ComponentTypeKHR::default(),
3105            input_interpretation: ComponentTypeKHR::default(),
3106            matrix_interpretation: ComponentTypeKHR::default(),
3107            bias_interpretation: ComponentTypeKHR::default(),
3108            result_type: ComponentTypeKHR::default(),
3109            transpose: Bool32::default(),
3110        }
3111    }
3112}
3113
3114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html>
3115#[repr(C)]
3116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3117pub struct CopyAccelerationStructureInfoKHR {
3118    pub s_type: StructureType,
3119    pub next: *const c_void,
3120    pub src: AccelerationStructureKHR,
3121    pub dst: AccelerationStructureKHR,
3122    pub mode: CopyAccelerationStructureModeKHR,
3123}
3124
3125impl Default for CopyAccelerationStructureInfoKHR {
3126    #[inline]
3127    fn default() -> Self {
3128        Self {
3129            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
3130            next: ptr::null(),
3131            src: AccelerationStructureKHR::default(),
3132            dst: AccelerationStructureKHR::default(),
3133            mode: CopyAccelerationStructureModeKHR::default(),
3134        }
3135    }
3136}
3137
3138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>
3139#[repr(C)]
3140#[derive(Copy, Clone, Debug)]
3141pub struct CopyAccelerationStructureToMemoryInfoKHR {
3142    pub s_type: StructureType,
3143    pub next: *const c_void,
3144    pub src: AccelerationStructureKHR,
3145    pub dst: DeviceOrHostAddressKHR,
3146    pub mode: CopyAccelerationStructureModeKHR,
3147}
3148
3149impl Default for CopyAccelerationStructureToMemoryInfoKHR {
3150    #[inline]
3151    fn default() -> Self {
3152        Self {
3153            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
3154            next: ptr::null(),
3155            src: AccelerationStructureKHR::default(),
3156            dst: DeviceOrHostAddressKHR::default(),
3157            mode: CopyAccelerationStructureModeKHR::default(),
3158        }
3159    }
3160}
3161
3162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html>
3163#[repr(C)]
3164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3165pub struct CopyBufferInfo2 {
3166    pub s_type: StructureType,
3167    pub next: *const c_void,
3168    pub src_buffer: Buffer,
3169    pub dst_buffer: Buffer,
3170    pub region_count: u32,
3171    pub regions: *const BufferCopy2,
3172}
3173
3174impl Default for CopyBufferInfo2 {
3175    #[inline]
3176    fn default() -> Self {
3177        Self {
3178            s_type: StructureType::COPY_BUFFER_INFO_2,
3179            next: ptr::null(),
3180            src_buffer: Buffer::default(),
3181            dst_buffer: Buffer::default(),
3182            region_count: u32::default(),
3183            regions: ptr::null(),
3184        }
3185    }
3186}
3187
3188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html>
3189#[repr(C)]
3190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3191pub struct CopyBufferToImageInfo2 {
3192    pub s_type: StructureType,
3193    pub next: *const c_void,
3194    pub src_buffer: Buffer,
3195    pub dst_image: Image,
3196    pub dst_image_layout: ImageLayout,
3197    pub region_count: u32,
3198    pub regions: *const BufferImageCopy2,
3199}
3200
3201impl Default for CopyBufferToImageInfo2 {
3202    #[inline]
3203    fn default() -> Self {
3204        Self {
3205            s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2,
3206            next: ptr::null(),
3207            src_buffer: Buffer::default(),
3208            dst_image: Image::default(),
3209            dst_image_layout: ImageLayout::default(),
3210            region_count: u32::default(),
3211            regions: ptr::null(),
3212        }
3213    }
3214}
3215
3216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html>
3217#[repr(C)]
3218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3219pub struct CopyCommandTransformInfoQCOM {
3220    pub s_type: StructureType,
3221    pub next: *const c_void,
3222    pub transform: SurfaceTransformFlagsKHR,
3223}
3224
3225impl Default for CopyCommandTransformInfoQCOM {
3226    #[inline]
3227    fn default() -> Self {
3228        Self {
3229            s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
3230            next: ptr::null(),
3231            transform: SurfaceTransformFlagsKHR::default(),
3232        }
3233    }
3234}
3235
3236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html>
3237#[repr(C)]
3238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3239pub struct CopyDescriptorSet {
3240    pub s_type: StructureType,
3241    pub next: *const c_void,
3242    pub src_set: DescriptorSet,
3243    pub src_binding: u32,
3244    pub src_array_element: u32,
3245    pub dst_set: DescriptorSet,
3246    pub dst_binding: u32,
3247    pub dst_array_element: u32,
3248    pub descriptor_count: u32,
3249}
3250
3251impl Default for CopyDescriptorSet {
3252    #[inline]
3253    fn default() -> Self {
3254        Self {
3255            s_type: StructureType::COPY_DESCRIPTOR_SET,
3256            next: ptr::null(),
3257            src_set: DescriptorSet::default(),
3258            src_binding: u32::default(),
3259            src_array_element: u32::default(),
3260            dst_set: DescriptorSet::default(),
3261            dst_binding: u32::default(),
3262            dst_array_element: u32::default(),
3263            descriptor_count: u32::default(),
3264        }
3265    }
3266}
3267
3268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2.html>
3269#[repr(C)]
3270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3271pub struct CopyImageInfo2 {
3272    pub s_type: StructureType,
3273    pub next: *const c_void,
3274    pub src_image: Image,
3275    pub src_image_layout: ImageLayout,
3276    pub dst_image: Image,
3277    pub dst_image_layout: ImageLayout,
3278    pub region_count: u32,
3279    pub regions: *const ImageCopy2,
3280}
3281
3282impl Default for CopyImageInfo2 {
3283    #[inline]
3284    fn default() -> Self {
3285        Self {
3286            s_type: StructureType::COPY_IMAGE_INFO_2,
3287            next: ptr::null(),
3288            src_image: Image::default(),
3289            src_image_layout: ImageLayout::default(),
3290            dst_image: Image::default(),
3291            dst_image_layout: ImageLayout::default(),
3292            region_count: u32::default(),
3293            regions: ptr::null(),
3294        }
3295    }
3296}
3297
3298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html>
3299#[repr(C)]
3300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3301pub struct CopyImageToBufferInfo2 {
3302    pub s_type: StructureType,
3303    pub next: *const c_void,
3304    pub src_image: Image,
3305    pub src_image_layout: ImageLayout,
3306    pub dst_buffer: Buffer,
3307    pub region_count: u32,
3308    pub regions: *const BufferImageCopy2,
3309}
3310
3311impl Default for CopyImageToBufferInfo2 {
3312    #[inline]
3313    fn default() -> Self {
3314        Self {
3315            s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2,
3316            next: ptr::null(),
3317            src_image: Image::default(),
3318            src_image_layout: ImageLayout::default(),
3319            dst_buffer: Buffer::default(),
3320            region_count: u32::default(),
3321            regions: ptr::null(),
3322        }
3323    }
3324}
3325
3326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html>
3327#[repr(C)]
3328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3329pub struct CopyImageToImageInfo {
3330    pub s_type: StructureType,
3331    pub next: *const c_void,
3332    pub flags: HostImageCopyFlags,
3333    pub src_image: Image,
3334    pub src_image_layout: ImageLayout,
3335    pub dst_image: Image,
3336    pub dst_image_layout: ImageLayout,
3337    pub region_count: u32,
3338    pub regions: *const ImageCopy2,
3339}
3340
3341impl Default for CopyImageToImageInfo {
3342    #[inline]
3343    fn default() -> Self {
3344        Self {
3345            s_type: StructureType::COPY_IMAGE_TO_IMAGE_INFO,
3346            next: ptr::null(),
3347            flags: HostImageCopyFlags::default(),
3348            src_image: Image::default(),
3349            src_image_layout: ImageLayout::default(),
3350            dst_image: Image::default(),
3351            dst_image_layout: ImageLayout::default(),
3352            region_count: u32::default(),
3353            regions: ptr::null(),
3354        }
3355    }
3356}
3357
3358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html>
3359#[repr(C)]
3360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3361pub struct CopyImageToMemoryInfo {
3362    pub s_type: StructureType,
3363    pub next: *const c_void,
3364    pub flags: HostImageCopyFlags,
3365    pub src_image: Image,
3366    pub src_image_layout: ImageLayout,
3367    pub region_count: u32,
3368    pub regions: *const ImageToMemoryCopy,
3369}
3370
3371impl Default for CopyImageToMemoryInfo {
3372    #[inline]
3373    fn default() -> Self {
3374        Self {
3375            s_type: StructureType::COPY_IMAGE_TO_MEMORY_INFO,
3376            next: ptr::null(),
3377            flags: HostImageCopyFlags::default(),
3378            src_image: Image::default(),
3379            src_image_layout: ImageLayout::default(),
3380            region_count: u32::default(),
3381            regions: ptr::null(),
3382        }
3383    }
3384}
3385
3386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandNV.html>
3387#[repr(C)]
3388#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3389pub struct CopyMemoryIndirectCommandNV {
3390    pub src_address: DeviceAddress,
3391    pub dst_address: DeviceAddress,
3392    pub size: DeviceSize,
3393}
3394
3395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>
3396#[repr(C)]
3397#[derive(Copy, Clone, Debug)]
3398pub struct CopyMemoryToAccelerationStructureInfoKHR {
3399    pub s_type: StructureType,
3400    pub next: *const c_void,
3401    pub src: DeviceOrHostAddressConstKHR,
3402    pub dst: AccelerationStructureKHR,
3403    pub mode: CopyAccelerationStructureModeKHR,
3404}
3405
3406impl Default for CopyMemoryToAccelerationStructureInfoKHR {
3407    #[inline]
3408    fn default() -> Self {
3409        Self {
3410            s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
3411            next: ptr::null(),
3412            src: DeviceOrHostAddressConstKHR::default(),
3413            dst: AccelerationStructureKHR::default(),
3414            mode: CopyAccelerationStructureModeKHR::default(),
3415        }
3416    }
3417}
3418
3419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandNV.html>
3420#[repr(C)]
3421#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3422pub struct CopyMemoryToImageIndirectCommandNV {
3423    pub src_address: DeviceAddress,
3424    pub buffer_row_length: u32,
3425    pub buffer_image_height: u32,
3426    pub image_subresource: ImageSubresourceLayers,
3427    pub image_offset: Offset3D,
3428    pub image_extent: Extent3D,
3429}
3430
3431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html>
3432#[repr(C)]
3433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3434pub struct CopyMemoryToImageInfo {
3435    pub s_type: StructureType,
3436    pub next: *const c_void,
3437    pub flags: HostImageCopyFlags,
3438    pub dst_image: Image,
3439    pub dst_image_layout: ImageLayout,
3440    pub region_count: u32,
3441    pub regions: *const MemoryToImageCopy,
3442}
3443
3444impl Default for CopyMemoryToImageInfo {
3445    #[inline]
3446    fn default() -> Self {
3447        Self {
3448            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INFO,
3449            next: ptr::null(),
3450            flags: HostImageCopyFlags::default(),
3451            dst_image: Image::default(),
3452            dst_image_layout: ImageLayout::default(),
3453            region_count: u32::default(),
3454            regions: ptr::null(),
3455        }
3456    }
3457}
3458
3459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html>
3460#[repr(C)]
3461#[derive(Copy, Clone, Debug)]
3462pub struct CopyMemoryToMicromapInfoEXT {
3463    pub s_type: StructureType,
3464    pub next: *const c_void,
3465    pub src: DeviceOrHostAddressConstKHR,
3466    pub dst: MicromapEXT,
3467    pub mode: CopyMicromapModeEXT,
3468}
3469
3470impl Default for CopyMemoryToMicromapInfoEXT {
3471    #[inline]
3472    fn default() -> Self {
3473        Self {
3474            s_type: StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT,
3475            next: ptr::null(),
3476            src: DeviceOrHostAddressConstKHR::default(),
3477            dst: MicromapEXT::default(),
3478            mode: CopyMicromapModeEXT::default(),
3479        }
3480    }
3481}
3482
3483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html>
3484#[repr(C)]
3485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3486pub struct CopyMicromapInfoEXT {
3487    pub s_type: StructureType,
3488    pub next: *const c_void,
3489    pub src: MicromapEXT,
3490    pub dst: MicromapEXT,
3491    pub mode: CopyMicromapModeEXT,
3492}
3493
3494impl Default for CopyMicromapInfoEXT {
3495    #[inline]
3496    fn default() -> Self {
3497        Self {
3498            s_type: StructureType::COPY_MICROMAP_INFO_EXT,
3499            next: ptr::null(),
3500            src: MicromapEXT::default(),
3501            dst: MicromapEXT::default(),
3502            mode: CopyMicromapModeEXT::default(),
3503        }
3504    }
3505}
3506
3507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html>
3508#[repr(C)]
3509#[derive(Copy, Clone, Debug)]
3510pub struct CopyMicromapToMemoryInfoEXT {
3511    pub s_type: StructureType,
3512    pub next: *const c_void,
3513    pub src: MicromapEXT,
3514    pub dst: DeviceOrHostAddressKHR,
3515    pub mode: CopyMicromapModeEXT,
3516}
3517
3518impl Default for CopyMicromapToMemoryInfoEXT {
3519    #[inline]
3520    fn default() -> Self {
3521        Self {
3522            s_type: StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT,
3523            next: ptr::null(),
3524            src: MicromapEXT::default(),
3525            dst: DeviceOrHostAddressKHR::default(),
3526            mode: CopyMicromapModeEXT::default(),
3527        }
3528    }
3529}
3530
3531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyTensorInfoARM.html>
3532#[repr(C)]
3533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3534pub struct CopyTensorInfoARM {
3535    pub s_type: StructureType,
3536    pub next: *const c_void,
3537    pub src_tensor: TensorARM,
3538    pub dst_tensor: TensorARM,
3539    pub region_count: u32,
3540    pub regions: *const TensorCopyARM,
3541}
3542
3543impl Default for CopyTensorInfoARM {
3544    #[inline]
3545    fn default() -> Self {
3546        Self {
3547            s_type: StructureType::COPY_TENSOR_INFO_ARM,
3548            next: ptr::null(),
3549            src_tensor: TensorARM::default(),
3550            dst_tensor: TensorARM::default(),
3551            region_count: u32::default(),
3552            regions: ptr::null(),
3553        }
3554    }
3555}
3556
3557/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html>
3558#[repr(C)]
3559#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3560pub struct CuFunctionCreateInfoNVX {
3561    pub s_type: StructureType,
3562    pub next: *const c_void,
3563    pub module: CuModuleNVX,
3564    pub name: *const c_char,
3565}
3566
3567impl Default for CuFunctionCreateInfoNVX {
3568    #[inline]
3569    fn default() -> Self {
3570        Self {
3571            s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
3572            next: ptr::null(),
3573            module: CuModuleNVX::default(),
3574            name: ptr::null(),
3575        }
3576    }
3577}
3578
3579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html>
3580#[repr(C)]
3581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3582pub struct CuLaunchInfoNVX {
3583    pub s_type: StructureType,
3584    pub next: *const c_void,
3585    pub function: CuFunctionNVX,
3586    pub grid_dim_x: u32,
3587    pub grid_dim_y: u32,
3588    pub grid_dim_z: u32,
3589    pub block_dim_x: u32,
3590    pub block_dim_y: u32,
3591    pub block_dim_z: u32,
3592    pub shared_mem_bytes: u32,
3593    pub param_count: usize,
3594    pub params: *const c_void,
3595    pub extra_count: usize,
3596    pub extras: *const c_void,
3597}
3598
3599impl Default for CuLaunchInfoNVX {
3600    #[inline]
3601    fn default() -> Self {
3602        Self {
3603            s_type: StructureType::CU_LAUNCH_INFO_NVX,
3604            next: ptr::null(),
3605            function: CuFunctionNVX::default(),
3606            grid_dim_x: u32::default(),
3607            grid_dim_y: u32::default(),
3608            grid_dim_z: u32::default(),
3609            block_dim_x: u32::default(),
3610            block_dim_y: u32::default(),
3611            block_dim_z: u32::default(),
3612            shared_mem_bytes: u32::default(),
3613            param_count: usize::default(),
3614            params: ptr::null(),
3615            extra_count: usize::default(),
3616            extras: ptr::null(),
3617        }
3618    }
3619}
3620
3621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html>
3622#[repr(C)]
3623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3624pub struct CuModuleCreateInfoNVX {
3625    pub s_type: StructureType,
3626    pub next: *const c_void,
3627    pub data_size: usize,
3628    pub data: *const c_void,
3629}
3630
3631impl Default for CuModuleCreateInfoNVX {
3632    #[inline]
3633    fn default() -> Self {
3634        Self {
3635            s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
3636            next: ptr::null(),
3637            data_size: usize::default(),
3638            data: ptr::null(),
3639        }
3640    }
3641}
3642
3643/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html>
3644#[repr(C)]
3645#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3646pub struct CuModuleTexturingModeCreateInfoNVX {
3647    pub s_type: StructureType,
3648    pub next: *const c_void,
3649    pub use64bit_texturing: Bool32,
3650}
3651
3652impl Default for CuModuleTexturingModeCreateInfoNVX {
3653    #[inline]
3654    fn default() -> Self {
3655        Self {
3656            s_type: StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX,
3657            next: ptr::null(),
3658            use64bit_texturing: Bool32::default(),
3659        }
3660    }
3661}
3662
3663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html>
3664#[repr(C)]
3665#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3666pub struct CudaFunctionCreateInfoNV {
3667    pub s_type: StructureType,
3668    pub next: *const c_void,
3669    pub module: CudaModuleNV,
3670    pub name: *const c_char,
3671}
3672
3673impl Default for CudaFunctionCreateInfoNV {
3674    #[inline]
3675    fn default() -> Self {
3676        Self {
3677            s_type: StructureType::CUDA_FUNCTION_CREATE_INFO_NV,
3678            next: ptr::null(),
3679            module: CudaModuleNV::default(),
3680            name: ptr::null(),
3681        }
3682    }
3683}
3684
3685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html>
3686#[repr(C)]
3687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3688pub struct CudaLaunchInfoNV {
3689    pub s_type: StructureType,
3690    pub next: *const c_void,
3691    pub function: CudaFunctionNV,
3692    pub grid_dim_x: u32,
3693    pub grid_dim_y: u32,
3694    pub grid_dim_z: u32,
3695    pub block_dim_x: u32,
3696    pub block_dim_y: u32,
3697    pub block_dim_z: u32,
3698    pub shared_mem_bytes: u32,
3699    pub param_count: usize,
3700    pub params: *const c_void,
3701    pub extra_count: usize,
3702    pub extras: *const c_void,
3703}
3704
3705impl Default for CudaLaunchInfoNV {
3706    #[inline]
3707    fn default() -> Self {
3708        Self {
3709            s_type: StructureType::CUDA_LAUNCH_INFO_NV,
3710            next: ptr::null(),
3711            function: CudaFunctionNV::default(),
3712            grid_dim_x: u32::default(),
3713            grid_dim_y: u32::default(),
3714            grid_dim_z: u32::default(),
3715            block_dim_x: u32::default(),
3716            block_dim_y: u32::default(),
3717            block_dim_z: u32::default(),
3718            shared_mem_bytes: u32::default(),
3719            param_count: usize::default(),
3720            params: ptr::null(),
3721            extra_count: usize::default(),
3722            extras: ptr::null(),
3723        }
3724    }
3725}
3726
3727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html>
3728#[repr(C)]
3729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3730pub struct CudaModuleCreateInfoNV {
3731    pub s_type: StructureType,
3732    pub next: *const c_void,
3733    pub data_size: usize,
3734    pub data: *const c_void,
3735}
3736
3737impl Default for CudaModuleCreateInfoNV {
3738    #[inline]
3739    fn default() -> Self {
3740        Self {
3741            s_type: StructureType::CUDA_MODULE_CREATE_INFO_NV,
3742            next: ptr::null(),
3743            data_size: usize::default(),
3744            data: ptr::null(),
3745        }
3746    }
3747}
3748
3749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html>
3750#[repr(C)]
3751#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3752pub struct D3D12FenceSubmitInfoKHR {
3753    pub s_type: StructureType,
3754    pub next: *const c_void,
3755    pub wait_semaphore_values_count: u32,
3756    pub wait_semaphore_values: *const u64,
3757    pub signal_semaphore_values_count: u32,
3758    pub signal_semaphore_values: *const u64,
3759}
3760
3761impl Default for D3D12FenceSubmitInfoKHR {
3762    #[inline]
3763    fn default() -> Self {
3764        Self {
3765            s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
3766            next: ptr::null(),
3767            wait_semaphore_values_count: u32::default(),
3768            wait_semaphore_values: ptr::null(),
3769            signal_semaphore_values_count: u32::default(),
3770            signal_semaphore_values: ptr::null(),
3771        }
3772    }
3773}
3774
3775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCompilerControlCreateInfoARM.html>
3776#[repr(C)]
3777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3778pub struct DataGraphPipelineCompilerControlCreateInfoARM {
3779    pub s_type: StructureType,
3780    pub next: *const c_void,
3781    pub vendor_options: *const c_char,
3782}
3783
3784impl Default for DataGraphPipelineCompilerControlCreateInfoARM {
3785    #[inline]
3786    fn default() -> Self {
3787        Self {
3788            s_type: StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM,
3789            next: ptr::null(),
3790            vendor_options: ptr::null(),
3791        }
3792    }
3793}
3794
3795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantARM.html>
3796#[repr(C)]
3797#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3798pub struct DataGraphPipelineConstantARM {
3799    pub s_type: StructureType,
3800    pub next: *const c_void,
3801    pub id: u32,
3802    pub constant_data: *const c_void,
3803}
3804
3805impl Default for DataGraphPipelineConstantARM {
3806    #[inline]
3807    fn default() -> Self {
3808        Self {
3809            s_type: StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM,
3810            next: ptr::null(),
3811            id: u32::default(),
3812            constant_data: ptr::null(),
3813        }
3814    }
3815}
3816
3817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.html>
3818#[repr(C)]
3819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3820pub struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
3821    pub s_type: StructureType,
3822    pub next: *const c_void,
3823    pub dimension: u32,
3824    pub zero_count: u32,
3825    pub group_size: u32,
3826}
3827
3828impl Default for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
3829    #[inline]
3830    fn default() -> Self {
3831        Self {
3832            s_type:
3833                StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM,
3834            next: ptr::null(),
3835            dimension: u32::default(),
3836            zero_count: u32::default(),
3837            group_size: u32::default(),
3838        }
3839    }
3840}
3841
3842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCreateInfoARM.html>
3843#[repr(C)]
3844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3845pub struct DataGraphPipelineCreateInfoARM {
3846    pub s_type: StructureType,
3847    pub next: *const c_void,
3848    pub flags: PipelineCreateFlags2KHR,
3849    pub layout: PipelineLayout,
3850    pub resource_info_count: u32,
3851    pub resource_infos: *const DataGraphPipelineResourceInfoARM,
3852}
3853
3854impl Default for DataGraphPipelineCreateInfoARM {
3855    #[inline]
3856    fn default() -> Self {
3857        Self {
3858            s_type: StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM,
3859            next: ptr::null(),
3860            flags: PipelineCreateFlags2KHR::default(),
3861            layout: PipelineLayout::default(),
3862            resource_info_count: u32::default(),
3863            resource_infos: ptr::null(),
3864        }
3865    }
3866}
3867
3868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchInfoARM.html>
3869#[repr(C)]
3870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3871pub struct DataGraphPipelineDispatchInfoARM {
3872    pub s_type: StructureType,
3873    pub next: *mut c_void,
3874    pub flags: DataGraphPipelineDispatchFlagsARM,
3875}
3876
3877impl Default for DataGraphPipelineDispatchInfoARM {
3878    #[inline]
3879    fn default() -> Self {
3880        Self {
3881            s_type: StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM,
3882            next: ptr::null_mut(),
3883            flags: DataGraphPipelineDispatchFlagsARM::default(),
3884        }
3885    }
3886}
3887
3888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineIdentifierCreateInfoARM.html>
3889#[repr(C)]
3890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3891pub struct DataGraphPipelineIdentifierCreateInfoARM {
3892    pub s_type: StructureType,
3893    pub next: *const c_void,
3894    pub identifier_size: u32,
3895    pub identifier: *const u8,
3896}
3897
3898impl Default for DataGraphPipelineIdentifierCreateInfoARM {
3899    #[inline]
3900    fn default() -> Self {
3901        Self {
3902            s_type: StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM,
3903            next: ptr::null(),
3904            identifier_size: u32::default(),
3905            identifier: ptr::null(),
3906        }
3907    }
3908}
3909
3910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineInfoARM.html>
3911#[repr(C)]
3912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3913pub struct DataGraphPipelineInfoARM {
3914    pub s_type: StructureType,
3915    pub next: *const c_void,
3916    pub data_graph_pipeline: Pipeline,
3917}
3918
3919impl Default for DataGraphPipelineInfoARM {
3920    #[inline]
3921    fn default() -> Self {
3922        Self {
3923            s_type: StructureType::DATA_GRAPH_PIPELINE_INFO_ARM,
3924            next: ptr::null(),
3925            data_graph_pipeline: Pipeline::default(),
3926        }
3927    }
3928}
3929
3930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyQueryResultARM.html>
3931#[repr(C)]
3932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3933pub struct DataGraphPipelinePropertyQueryResultARM {
3934    pub s_type: StructureType,
3935    pub next: *const c_void,
3936    pub property: DataGraphPipelinePropertyARM,
3937    pub is_text: Bool32,
3938    pub data_size: usize,
3939    pub data: *mut c_void,
3940}
3941
3942impl Default for DataGraphPipelinePropertyQueryResultARM {
3943    #[inline]
3944    fn default() -> Self {
3945        Self {
3946            s_type: StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM,
3947            next: ptr::null(),
3948            property: DataGraphPipelinePropertyARM::default(),
3949            is_text: Bool32::default(),
3950            data_size: usize::default(),
3951            data: ptr::null_mut(),
3952        }
3953    }
3954}
3955
3956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineResourceInfoARM.html>
3957#[repr(C)]
3958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3959pub struct DataGraphPipelineResourceInfoARM {
3960    pub s_type: StructureType,
3961    pub next: *const c_void,
3962    pub descriptor_set: u32,
3963    pub binding: u32,
3964    pub array_element: u32,
3965}
3966
3967impl Default for DataGraphPipelineResourceInfoARM {
3968    #[inline]
3969    fn default() -> Self {
3970        Self {
3971            s_type: StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM,
3972            next: ptr::null(),
3973            descriptor_set: u32::default(),
3974            binding: u32::default(),
3975            array_element: u32::default(),
3976        }
3977    }
3978}
3979
3980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementARM.html>
3981#[repr(C)]
3982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3983pub struct DataGraphPipelineSessionBindPointRequirementARM {
3984    pub s_type: StructureType,
3985    pub next: *const c_void,
3986    pub bind_point: DataGraphPipelineSessionBindPointARM,
3987    pub bind_point_type: DataGraphPipelineSessionBindPointTypeARM,
3988    pub num_objects: u32,
3989}
3990
3991impl Default for DataGraphPipelineSessionBindPointRequirementARM {
3992    #[inline]
3993    fn default() -> Self {
3994        Self {
3995            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM,
3996            next: ptr::null(),
3997            bind_point: DataGraphPipelineSessionBindPointARM::default(),
3998            bind_point_type: DataGraphPipelineSessionBindPointTypeARM::default(),
3999            num_objects: u32::default(),
4000        }
4001    }
4002}
4003
4004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementsInfoARM.html>
4005#[repr(C)]
4006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4007pub struct DataGraphPipelineSessionBindPointRequirementsInfoARM {
4008    pub s_type: StructureType,
4009    pub next: *const c_void,
4010    pub session: DataGraphPipelineSessionARM,
4011}
4012
4013impl Default for DataGraphPipelineSessionBindPointRequirementsInfoARM {
4014    #[inline]
4015    fn default() -> Self {
4016        Self {
4017            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM,
4018            next: ptr::null(),
4019            session: DataGraphPipelineSessionARM::default(),
4020        }
4021    }
4022}
4023
4024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateInfoARM.html>
4025#[repr(C)]
4026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4027pub struct DataGraphPipelineSessionCreateInfoARM {
4028    pub s_type: StructureType,
4029    pub next: *const c_void,
4030    pub flags: DataGraphPipelineSessionCreateFlagsARM,
4031    pub data_graph_pipeline: Pipeline,
4032}
4033
4034impl Default for DataGraphPipelineSessionCreateInfoARM {
4035    #[inline]
4036    fn default() -> Self {
4037        Self {
4038            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM,
4039            next: ptr::null(),
4040            flags: DataGraphPipelineSessionCreateFlagsARM::default(),
4041            data_graph_pipeline: Pipeline::default(),
4042        }
4043    }
4044}
4045
4046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionMemoryRequirementsInfoARM.html>
4047#[repr(C)]
4048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4049pub struct DataGraphPipelineSessionMemoryRequirementsInfoARM {
4050    pub s_type: StructureType,
4051    pub next: *const c_void,
4052    pub session: DataGraphPipelineSessionARM,
4053    pub bind_point: DataGraphPipelineSessionBindPointARM,
4054    pub object_index: u32,
4055}
4056
4057impl Default for DataGraphPipelineSessionMemoryRequirementsInfoARM {
4058    #[inline]
4059    fn default() -> Self {
4060        Self {
4061            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM,
4062            next: ptr::null(),
4063            session: DataGraphPipelineSessionARM::default(),
4064            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4065            object_index: u32::default(),
4066        }
4067    }
4068}
4069
4070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineShaderModuleCreateInfoARM.html>
4071#[repr(C)]
4072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4073pub struct DataGraphPipelineShaderModuleCreateInfoARM {
4074    pub s_type: StructureType,
4075    pub next: *const c_void,
4076    pub module: ShaderModule,
4077    pub name: *const c_char,
4078    pub specialization_info: *const SpecializationInfo,
4079    pub constant_count: u32,
4080    pub constants: *const DataGraphPipelineConstantARM,
4081}
4082
4083impl Default for DataGraphPipelineShaderModuleCreateInfoARM {
4084    #[inline]
4085    fn default() -> Self {
4086        Self {
4087            s_type: StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM,
4088            next: ptr::null(),
4089            module: ShaderModule::default(),
4090            name: ptr::null(),
4091            specialization_info: ptr::null(),
4092            constant_count: u32::default(),
4093            constants: ptr::null(),
4094        }
4095    }
4096}
4097
4098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphProcessingEngineCreateInfoARM.html>
4099#[repr(C)]
4100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4101pub struct DataGraphProcessingEngineCreateInfoARM {
4102    pub s_type: StructureType,
4103    pub next: *const c_void,
4104    pub processing_engine_count: u32,
4105    pub processing_engines: *mut PhysicalDeviceDataGraphProcessingEngineARM,
4106}
4107
4108impl Default for DataGraphProcessingEngineCreateInfoARM {
4109    #[inline]
4110    fn default() -> Self {
4111        Self {
4112            s_type: StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM,
4113            next: ptr::null(),
4114            processing_engine_count: u32::default(),
4115            processing_engines: ptr::null_mut(),
4116        }
4117    }
4118}
4119
4120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html>
4121#[repr(C)]
4122#[derive(Copy, Clone, Debug, PartialEq)]
4123pub struct DebugMarkerMarkerInfoEXT {
4124    pub s_type: StructureType,
4125    pub next: *const c_void,
4126    pub marker_name: *const c_char,
4127    pub color: [f32; 4],
4128}
4129
4130impl Default for DebugMarkerMarkerInfoEXT {
4131    #[inline]
4132    fn default() -> Self {
4133        Self {
4134            s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
4135            next: ptr::null(),
4136            marker_name: ptr::null(),
4137            color: [f32::default(); 4],
4138        }
4139    }
4140}
4141
4142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html>
4143#[repr(C)]
4144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4145pub struct DebugMarkerObjectNameInfoEXT {
4146    pub s_type: StructureType,
4147    pub next: *const c_void,
4148    pub object_type: DebugReportObjectTypeEXT,
4149    pub object: u64,
4150    pub object_name: *const c_char,
4151}
4152
4153impl Default for DebugMarkerObjectNameInfoEXT {
4154    #[inline]
4155    fn default() -> Self {
4156        Self {
4157            s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
4158            next: ptr::null(),
4159            object_type: DebugReportObjectTypeEXT::default(),
4160            object: u64::default(),
4161            object_name: ptr::null(),
4162        }
4163    }
4164}
4165
4166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html>
4167#[repr(C)]
4168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4169pub struct DebugMarkerObjectTagInfoEXT {
4170    pub s_type: StructureType,
4171    pub next: *const c_void,
4172    pub object_type: DebugReportObjectTypeEXT,
4173    pub object: u64,
4174    pub tag_name: u64,
4175    pub tag_size: usize,
4176    pub tag: *const c_void,
4177}
4178
4179impl Default for DebugMarkerObjectTagInfoEXT {
4180    #[inline]
4181    fn default() -> Self {
4182        Self {
4183            s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
4184            next: ptr::null(),
4185            object_type: DebugReportObjectTypeEXT::default(),
4186            object: u64::default(),
4187            tag_name: u64::default(),
4188            tag_size: usize::default(),
4189            tag: ptr::null(),
4190        }
4191    }
4192}
4193
4194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html>
4195#[repr(C)]
4196#[derive(Copy, Clone)]
4197pub struct DebugReportCallbackCreateInfoEXT {
4198    pub s_type: StructureType,
4199    pub next: *const c_void,
4200    pub flags: DebugReportFlagsEXT,
4201    pub callback: PFN_vkDebugReportCallbackEXT,
4202    pub user_data: *mut c_void,
4203}
4204
4205impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
4206    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4207        f.debug_struct("DebugReportCallbackCreateInfoEXT")
4208            .field("s_type", &self.s_type)
4209            .field("next", &self.next)
4210            .field("flags", &self.flags)
4211            .field("callback", &(self.callback.map(|f| f as *const u8)))
4212            .field("user_data", &self.user_data)
4213            .finish()
4214    }
4215}
4216
4217impl Default for DebugReportCallbackCreateInfoEXT {
4218    #[inline]
4219    fn default() -> Self {
4220        Self {
4221            s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
4222            next: ptr::null(),
4223            flags: DebugReportFlagsEXT::default(),
4224            callback: PFN_vkDebugReportCallbackEXT::default(),
4225            user_data: ptr::null_mut(),
4226        }
4227    }
4228}
4229
4230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html>
4231#[repr(C)]
4232#[derive(Copy, Clone, Debug, PartialEq)]
4233pub struct DebugUtilsLabelEXT {
4234    pub s_type: StructureType,
4235    pub next: *const c_void,
4236    pub label_name: *const c_char,
4237    pub color: [f32; 4],
4238}
4239
4240impl Default for DebugUtilsLabelEXT {
4241    #[inline]
4242    fn default() -> Self {
4243        Self {
4244            s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
4245            next: ptr::null(),
4246            label_name: ptr::null(),
4247            color: [f32::default(); 4],
4248        }
4249    }
4250}
4251
4252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>
4253#[repr(C)]
4254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4255pub struct DebugUtilsMessengerCallbackDataEXT {
4256    pub s_type: StructureType,
4257    pub next: *const c_void,
4258    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
4259    pub message_id_name: *const c_char,
4260    pub message_id_number: i32,
4261    pub message: *const c_char,
4262    pub queue_label_count: u32,
4263    pub queue_labels: *const DebugUtilsLabelEXT,
4264    pub cmd_buf_label_count: u32,
4265    pub cmd_buf_labels: *const DebugUtilsLabelEXT,
4266    pub object_count: u32,
4267    pub objects: *const DebugUtilsObjectNameInfoEXT,
4268}
4269
4270impl Default for DebugUtilsMessengerCallbackDataEXT {
4271    #[inline]
4272    fn default() -> Self {
4273        Self {
4274            s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
4275            next: ptr::null(),
4276            flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
4277            message_id_name: ptr::null(),
4278            message_id_number: i32::default(),
4279            message: ptr::null(),
4280            queue_label_count: u32::default(),
4281            queue_labels: ptr::null(),
4282            cmd_buf_label_count: u32::default(),
4283            cmd_buf_labels: ptr::null(),
4284            object_count: u32::default(),
4285            objects: ptr::null(),
4286        }
4287    }
4288}
4289
4290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>
4291#[repr(C)]
4292#[derive(Copy, Clone)]
4293pub struct DebugUtilsMessengerCreateInfoEXT {
4294    pub s_type: StructureType,
4295    pub next: *const c_void,
4296    pub flags: DebugUtilsMessengerCreateFlagsEXT,
4297    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
4298    pub message_type: DebugUtilsMessageTypeFlagsEXT,
4299    pub user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
4300    pub user_data: *mut c_void,
4301}
4302
4303impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
4304    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4305        f.debug_struct("DebugUtilsMessengerCreateInfoEXT")
4306            .field("s_type", &self.s_type)
4307            .field("next", &self.next)
4308            .field("flags", &self.flags)
4309            .field("message_severity", &self.message_severity)
4310            .field("message_type", &self.message_type)
4311            .field(
4312                "user_callback",
4313                &(self.user_callback.map(|f| f as *const u8)),
4314            )
4315            .field("user_data", &self.user_data)
4316            .finish()
4317    }
4318}
4319
4320impl Default for DebugUtilsMessengerCreateInfoEXT {
4321    #[inline]
4322    fn default() -> Self {
4323        Self {
4324            s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
4325            next: ptr::null(),
4326            flags: DebugUtilsMessengerCreateFlagsEXT::default(),
4327            message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
4328            message_type: DebugUtilsMessageTypeFlagsEXT::default(),
4329            user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
4330            user_data: ptr::null_mut(),
4331        }
4332    }
4333}
4334
4335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html>
4336#[repr(C)]
4337#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4338pub struct DebugUtilsObjectNameInfoEXT {
4339    pub s_type: StructureType,
4340    pub next: *const c_void,
4341    pub object_type: ObjectType,
4342    pub object_handle: u64,
4343    pub object_name: *const c_char,
4344}
4345
4346impl Default for DebugUtilsObjectNameInfoEXT {
4347    #[inline]
4348    fn default() -> Self {
4349        Self {
4350            s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
4351            next: ptr::null(),
4352            object_type: ObjectType::default(),
4353            object_handle: u64::default(),
4354            object_name: ptr::null(),
4355        }
4356    }
4357}
4358
4359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html>
4360#[repr(C)]
4361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4362pub struct DebugUtilsObjectTagInfoEXT {
4363    pub s_type: StructureType,
4364    pub next: *const c_void,
4365    pub object_type: ObjectType,
4366    pub object_handle: u64,
4367    pub tag_name: u64,
4368    pub tag_size: usize,
4369    pub tag: *const c_void,
4370}
4371
4372impl Default for DebugUtilsObjectTagInfoEXT {
4373    #[inline]
4374    fn default() -> Self {
4375        Self {
4376            s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
4377            next: ptr::null(),
4378            object_type: ObjectType::default(),
4379            object_handle: u64::default(),
4380            tag_name: u64::default(),
4381            tag_size: usize::default(),
4382            tag: ptr::null(),
4383        }
4384    }
4385}
4386
4387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html>
4388#[repr(C)]
4389#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4390pub struct DecompressMemoryRegionNV {
4391    pub src_address: DeviceAddress,
4392    pub dst_address: DeviceAddress,
4393    pub compressed_size: DeviceSize,
4394    pub decompressed_size: DeviceSize,
4395    pub decompression_method: MemoryDecompressionMethodFlagsNV,
4396}
4397
4398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>
4399#[repr(C)]
4400#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4401pub struct DedicatedAllocationBufferCreateInfoNV {
4402    pub s_type: StructureType,
4403    pub next: *const c_void,
4404    pub dedicated_allocation: Bool32,
4405}
4406
4407impl Default for DedicatedAllocationBufferCreateInfoNV {
4408    #[inline]
4409    fn default() -> Self {
4410        Self {
4411            s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
4412            next: ptr::null(),
4413            dedicated_allocation: Bool32::default(),
4414        }
4415    }
4416}
4417
4418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html>
4419#[repr(C)]
4420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4421pub struct DedicatedAllocationImageCreateInfoNV {
4422    pub s_type: StructureType,
4423    pub next: *const c_void,
4424    pub dedicated_allocation: Bool32,
4425}
4426
4427impl Default for DedicatedAllocationImageCreateInfoNV {
4428    #[inline]
4429    fn default() -> Self {
4430        Self {
4431            s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
4432            next: ptr::null(),
4433            dedicated_allocation: Bool32::default(),
4434        }
4435    }
4436}
4437
4438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>
4439#[repr(C)]
4440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4441pub struct DedicatedAllocationMemoryAllocateInfoNV {
4442    pub s_type: StructureType,
4443    pub next: *const c_void,
4444    pub image: Image,
4445    pub buffer: Buffer,
4446}
4447
4448impl Default for DedicatedAllocationMemoryAllocateInfoNV {
4449    #[inline]
4450    fn default() -> Self {
4451        Self {
4452            s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
4453            next: ptr::null(),
4454            image: Image::default(),
4455            buffer: Buffer::default(),
4456        }
4457    }
4458}
4459
4460/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfo.html>
4461#[repr(C)]
4462#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4463pub struct DependencyInfo {
4464    pub s_type: StructureType,
4465    pub next: *const c_void,
4466    pub dependency_flags: DependencyFlags,
4467    pub memory_barrier_count: u32,
4468    pub memory_barriers: *const MemoryBarrier2,
4469    pub buffer_memory_barrier_count: u32,
4470    pub buffer_memory_barriers: *const BufferMemoryBarrier2,
4471    pub image_memory_barrier_count: u32,
4472    pub image_memory_barriers: *const ImageMemoryBarrier2,
4473}
4474
4475impl Default for DependencyInfo {
4476    #[inline]
4477    fn default() -> Self {
4478        Self {
4479            s_type: StructureType::DEPENDENCY_INFO,
4480            next: ptr::null(),
4481            dependency_flags: DependencyFlags::default(),
4482            memory_barrier_count: u32::default(),
4483            memory_barriers: ptr::null(),
4484            buffer_memory_barrier_count: u32::default(),
4485            buffer_memory_barriers: ptr::null(),
4486            image_memory_barrier_count: u32::default(),
4487            image_memory_barriers: ptr::null(),
4488        }
4489    }
4490}
4491
4492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html>
4493#[repr(C)]
4494#[derive(Copy, Clone, Debug, PartialEq)]
4495pub struct DepthBiasInfoEXT {
4496    pub s_type: StructureType,
4497    pub next: *const c_void,
4498    pub depth_bias_constant_factor: f32,
4499    pub depth_bias_clamp: f32,
4500    pub depth_bias_slope_factor: f32,
4501}
4502
4503impl Default for DepthBiasInfoEXT {
4504    #[inline]
4505    fn default() -> Self {
4506        Self {
4507            s_type: StructureType::DEPTH_BIAS_INFO_EXT,
4508            next: ptr::null(),
4509            depth_bias_constant_factor: f32::default(),
4510            depth_bias_clamp: f32::default(),
4511            depth_bias_slope_factor: f32::default(),
4512        }
4513    }
4514}
4515
4516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html>
4517#[repr(C)]
4518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4519pub struct DepthBiasRepresentationInfoEXT {
4520    pub s_type: StructureType,
4521    pub next: *const c_void,
4522    pub depth_bias_representation: DepthBiasRepresentationEXT,
4523    pub depth_bias_exact: Bool32,
4524}
4525
4526impl Default for DepthBiasRepresentationInfoEXT {
4527    #[inline]
4528    fn default() -> Self {
4529        Self {
4530            s_type: StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT,
4531            next: ptr::null(),
4532            depth_bias_representation: DepthBiasRepresentationEXT::default(),
4533            depth_bias_exact: Bool32::default(),
4534        }
4535    }
4536}
4537
4538/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html>
4539#[repr(C)]
4540#[derive(Copy, Clone, Default, Debug, PartialEq)]
4541pub struct DepthClampRangeEXT {
4542    pub min_depth_clamp: f32,
4543    pub max_depth_clamp: f32,
4544}
4545
4546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html>
4547#[repr(C)]
4548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4549pub struct DescriptorAddressInfoEXT {
4550    pub s_type: StructureType,
4551    pub next: *mut c_void,
4552    pub address: DeviceAddress,
4553    pub range: DeviceSize,
4554    pub format: Format,
4555}
4556
4557impl Default for DescriptorAddressInfoEXT {
4558    #[inline]
4559    fn default() -> Self {
4560        Self {
4561            s_type: StructureType::DESCRIPTOR_ADDRESS_INFO_EXT,
4562            next: ptr::null_mut(),
4563            address: DeviceAddress::default(),
4564            range: DeviceSize::default(),
4565            format: Format::default(),
4566        }
4567    }
4568}
4569
4570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html>
4571#[repr(C)]
4572#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4573pub struct DescriptorBufferBindingInfoEXT {
4574    pub s_type: StructureType,
4575    pub next: *const c_void,
4576    pub address: DeviceAddress,
4577    pub usage: BufferUsageFlags,
4578}
4579
4580impl Default for DescriptorBufferBindingInfoEXT {
4581    #[inline]
4582    fn default() -> Self {
4583        Self {
4584            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT,
4585            next: ptr::null(),
4586            address: DeviceAddress::default(),
4587            usage: BufferUsageFlags::default(),
4588        }
4589    }
4590}
4591
4592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html>
4593#[repr(C)]
4594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4595pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXT {
4596    pub s_type: StructureType,
4597    pub next: *const c_void,
4598    pub buffer: Buffer,
4599}
4600
4601impl Default for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
4602    #[inline]
4603    fn default() -> Self {
4604        Self {
4605            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT,
4606            next: ptr::null(),
4607            buffer: Buffer::default(),
4608        }
4609    }
4610}
4611
4612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html>
4613#[repr(C)]
4614#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4615pub struct DescriptorBufferInfo {
4616    pub buffer: Buffer,
4617    pub offset: DeviceSize,
4618    pub range: DeviceSize,
4619}
4620
4621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html>
4622#[repr(C)]
4623#[derive(Copy, Clone, Debug)]
4624pub struct DescriptorGetInfoEXT {
4625    pub s_type: StructureType,
4626    pub next: *const c_void,
4627    pub type_: DescriptorType,
4628    pub data: DescriptorDataEXT,
4629}
4630
4631impl Default for DescriptorGetInfoEXT {
4632    #[inline]
4633    fn default() -> Self {
4634        Self {
4635            s_type: StructureType::DESCRIPTOR_GET_INFO_EXT,
4636            next: ptr::null(),
4637            type_: DescriptorType::default(),
4638            data: DescriptorDataEXT::default(),
4639        }
4640    }
4641}
4642
4643/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetTensorInfoARM.html>
4644#[repr(C)]
4645#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4646pub struct DescriptorGetTensorInfoARM {
4647    pub s_type: StructureType,
4648    pub next: *const c_void,
4649    pub tensor_view: TensorViewARM,
4650}
4651
4652impl Default for DescriptorGetTensorInfoARM {
4653    #[inline]
4654    fn default() -> Self {
4655        Self {
4656            s_type: StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM,
4657            next: ptr::null(),
4658            tensor_view: TensorViewARM::default(),
4659        }
4660    }
4661}
4662
4663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html>
4664#[repr(C)]
4665#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4666pub struct DescriptorImageInfo {
4667    pub sampler: Sampler,
4668    pub image_view: ImageView,
4669    pub image_layout: ImageLayout,
4670}
4671
4672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html>
4673#[repr(C)]
4674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4675pub struct DescriptorPoolCreateInfo {
4676    pub s_type: StructureType,
4677    pub next: *const c_void,
4678    pub flags: DescriptorPoolCreateFlags,
4679    pub max_sets: u32,
4680    pub pool_size_count: u32,
4681    pub pool_sizes: *const DescriptorPoolSize,
4682}
4683
4684impl Default for DescriptorPoolCreateInfo {
4685    #[inline]
4686    fn default() -> Self {
4687        Self {
4688            s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
4689            next: ptr::null(),
4690            flags: DescriptorPoolCreateFlags::default(),
4691            max_sets: u32::default(),
4692            pool_size_count: u32::default(),
4693            pool_sizes: ptr::null(),
4694        }
4695    }
4696}
4697
4698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html>
4699#[repr(C)]
4700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4701pub struct DescriptorPoolInlineUniformBlockCreateInfo {
4702    pub s_type: StructureType,
4703    pub next: *const c_void,
4704    pub max_inline_uniform_block_bindings: u32,
4705}
4706
4707impl Default for DescriptorPoolInlineUniformBlockCreateInfo {
4708    #[inline]
4709    fn default() -> Self {
4710        Self {
4711            s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
4712            next: ptr::null(),
4713            max_inline_uniform_block_bindings: u32::default(),
4714        }
4715    }
4716}
4717
4718/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html>
4719#[repr(C)]
4720#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4721pub struct DescriptorPoolSize {
4722    pub type_: DescriptorType,
4723    pub descriptor_count: u32,
4724}
4725
4726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html>
4727#[repr(C)]
4728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4729pub struct DescriptorSetAllocateInfo {
4730    pub s_type: StructureType,
4731    pub next: *const c_void,
4732    pub descriptor_pool: DescriptorPool,
4733    pub descriptor_set_count: u32,
4734    pub set_layouts: *const DescriptorSetLayout,
4735}
4736
4737impl Default for DescriptorSetAllocateInfo {
4738    #[inline]
4739    fn default() -> Self {
4740        Self {
4741            s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
4742            next: ptr::null(),
4743            descriptor_pool: DescriptorPool::default(),
4744            descriptor_set_count: u32::default(),
4745            set_layouts: ptr::null(),
4746        }
4747    }
4748}
4749
4750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html>
4751#[repr(C)]
4752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4753pub struct DescriptorSetBindingReferenceVALVE {
4754    pub s_type: StructureType,
4755    pub next: *const c_void,
4756    pub descriptor_set_layout: DescriptorSetLayout,
4757    pub binding: u32,
4758}
4759
4760impl Default for DescriptorSetBindingReferenceVALVE {
4761    #[inline]
4762    fn default() -> Self {
4763        Self {
4764            s_type: StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,
4765            next: ptr::null(),
4766            descriptor_set_layout: DescriptorSetLayout::default(),
4767            binding: u32::default(),
4768        }
4769    }
4770}
4771
4772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html>
4773#[repr(C)]
4774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4775pub struct DescriptorSetLayoutBinding {
4776    pub binding: u32,
4777    pub descriptor_type: DescriptorType,
4778    pub descriptor_count: u32,
4779    pub stage_flags: ShaderStageFlags,
4780    pub immutable_samplers: *const Sampler,
4781}
4782
4783impl Default for DescriptorSetLayoutBinding {
4784    #[inline]
4785    fn default() -> Self {
4786        Self {
4787            binding: u32::default(),
4788            descriptor_type: DescriptorType::default(),
4789            descriptor_count: u32::default(),
4790            stage_flags: ShaderStageFlags::default(),
4791            immutable_samplers: ptr::null(),
4792        }
4793    }
4794}
4795
4796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>
4797#[repr(C)]
4798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4799pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
4800    pub s_type: StructureType,
4801    pub next: *const c_void,
4802    pub binding_count: u32,
4803    pub binding_flags: *const DescriptorBindingFlags,
4804}
4805
4806impl Default for DescriptorSetLayoutBindingFlagsCreateInfo {
4807    #[inline]
4808    fn default() -> Self {
4809        Self {
4810            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
4811            next: ptr::null(),
4812            binding_count: u32::default(),
4813            binding_flags: ptr::null(),
4814        }
4815    }
4816}
4817
4818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html>
4819#[repr(C)]
4820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4821pub struct DescriptorSetLayoutCreateInfo {
4822    pub s_type: StructureType,
4823    pub next: *const c_void,
4824    pub flags: DescriptorSetLayoutCreateFlags,
4825    pub binding_count: u32,
4826    pub bindings: *const DescriptorSetLayoutBinding,
4827}
4828
4829impl Default for DescriptorSetLayoutCreateInfo {
4830    #[inline]
4831    fn default() -> Self {
4832        Self {
4833            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
4834            next: ptr::null(),
4835            flags: DescriptorSetLayoutCreateFlags::default(),
4836            binding_count: u32::default(),
4837            bindings: ptr::null(),
4838        }
4839    }
4840}
4841
4842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html>
4843#[repr(C)]
4844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4845pub struct DescriptorSetLayoutHostMappingInfoVALVE {
4846    pub s_type: StructureType,
4847    pub next: *mut c_void,
4848    pub descriptor_offset: usize,
4849    pub descriptor_size: u32,
4850}
4851
4852impl Default for DescriptorSetLayoutHostMappingInfoVALVE {
4853    #[inline]
4854    fn default() -> Self {
4855        Self {
4856            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
4857            next: ptr::null_mut(),
4858            descriptor_offset: usize::default(),
4859            descriptor_size: u32::default(),
4860        }
4861    }
4862}
4863
4864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html>
4865#[repr(C)]
4866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4867pub struct DescriptorSetLayoutSupport {
4868    pub s_type: StructureType,
4869    pub next: *mut c_void,
4870    pub supported: Bool32,
4871}
4872
4873impl Default for DescriptorSetLayoutSupport {
4874    #[inline]
4875    fn default() -> Self {
4876        Self {
4877            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
4878            next: ptr::null_mut(),
4879            supported: Bool32::default(),
4880        }
4881    }
4882}
4883
4884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>
4885#[repr(C)]
4886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4887pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
4888    pub s_type: StructureType,
4889    pub next: *const c_void,
4890    pub descriptor_set_count: u32,
4891    pub descriptor_counts: *const u32,
4892}
4893
4894impl Default for DescriptorSetVariableDescriptorCountAllocateInfo {
4895    #[inline]
4896    fn default() -> Self {
4897        Self {
4898            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
4899            next: ptr::null(),
4900            descriptor_set_count: u32::default(),
4901            descriptor_counts: ptr::null(),
4902        }
4903    }
4904}
4905
4906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>
4907#[repr(C)]
4908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4909pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
4910    pub s_type: StructureType,
4911    pub next: *mut c_void,
4912    pub max_variable_descriptor_count: u32,
4913}
4914
4915impl Default for DescriptorSetVariableDescriptorCountLayoutSupport {
4916    #[inline]
4917    fn default() -> Self {
4918        Self {
4919            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
4920            next: ptr::null_mut(),
4921            max_variable_descriptor_count: u32::default(),
4922        }
4923    }
4924}
4925
4926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html>
4927#[repr(C)]
4928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4929pub struct DescriptorUpdateTemplateCreateInfo {
4930    pub s_type: StructureType,
4931    pub next: *const c_void,
4932    pub flags: DescriptorUpdateTemplateCreateFlags,
4933    pub descriptor_update_entry_count: u32,
4934    pub descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
4935    pub template_type: DescriptorUpdateTemplateType,
4936    pub descriptor_set_layout: DescriptorSetLayout,
4937    pub pipeline_bind_point: PipelineBindPoint,
4938    pub pipeline_layout: PipelineLayout,
4939    pub set: u32,
4940}
4941
4942impl Default for DescriptorUpdateTemplateCreateInfo {
4943    #[inline]
4944    fn default() -> Self {
4945        Self {
4946            s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
4947            next: ptr::null(),
4948            flags: DescriptorUpdateTemplateCreateFlags::default(),
4949            descriptor_update_entry_count: u32::default(),
4950            descriptor_update_entries: ptr::null(),
4951            template_type: DescriptorUpdateTemplateType::default(),
4952            descriptor_set_layout: DescriptorSetLayout::default(),
4953            pipeline_bind_point: PipelineBindPoint::default(),
4954            pipeline_layout: PipelineLayout::default(),
4955            set: u32::default(),
4956        }
4957    }
4958}
4959
4960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html>
4961#[repr(C)]
4962#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4963pub struct DescriptorUpdateTemplateEntry {
4964    pub dst_binding: u32,
4965    pub dst_array_element: u32,
4966    pub descriptor_count: u32,
4967    pub descriptor_type: DescriptorType,
4968    pub offset: usize,
4969    pub stride: usize,
4970}
4971
4972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html>
4973#[repr(C)]
4974#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4975pub struct DeviceAddressBindingCallbackDataEXT {
4976    pub s_type: StructureType,
4977    pub next: *mut c_void,
4978    pub flags: DeviceAddressBindingFlagsEXT,
4979    pub base_address: DeviceAddress,
4980    pub size: DeviceSize,
4981    pub binding_type: DeviceAddressBindingTypeEXT,
4982}
4983
4984impl Default for DeviceAddressBindingCallbackDataEXT {
4985    #[inline]
4986    fn default() -> Self {
4987        Self {
4988            s_type: StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT,
4989            next: ptr::null_mut(),
4990            flags: DeviceAddressBindingFlagsEXT::default(),
4991            base_address: DeviceAddress::default(),
4992            size: DeviceSize::default(),
4993            binding_type: DeviceAddressBindingTypeEXT::default(),
4994        }
4995    }
4996}
4997
4998/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html>
4999#[repr(C)]
5000#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5001pub struct DeviceBufferMemoryRequirements {
5002    pub s_type: StructureType,
5003    pub next: *const c_void,
5004    pub create_info: *const BufferCreateInfo,
5005}
5006
5007impl Default for DeviceBufferMemoryRequirements {
5008    #[inline]
5009    fn default() -> Self {
5010        Self {
5011            s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS,
5012            next: ptr::null(),
5013            create_info: ptr::null(),
5014        }
5015    }
5016}
5017
5018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html>
5019#[repr(C)]
5020#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5021pub struct DeviceCreateInfo {
5022    pub s_type: StructureType,
5023    pub next: *const c_void,
5024    pub flags: DeviceCreateFlags,
5025    pub queue_create_info_count: u32,
5026    pub queue_create_infos: *const DeviceQueueCreateInfo,
5027    pub enabled_layer_count: u32,
5028    pub enabled_layer_names: *const *const c_char,
5029    pub enabled_extension_count: u32,
5030    pub enabled_extension_names: *const *const c_char,
5031    pub enabled_features: *const PhysicalDeviceFeatures,
5032}
5033
5034impl Default for DeviceCreateInfo {
5035    #[inline]
5036    fn default() -> Self {
5037        Self {
5038            s_type: StructureType::DEVICE_CREATE_INFO,
5039            next: ptr::null(),
5040            flags: DeviceCreateFlags::default(),
5041            queue_create_info_count: u32::default(),
5042            queue_create_infos: ptr::null(),
5043            enabled_layer_count: u32::default(),
5044            enabled_layer_names: ptr::null(),
5045            enabled_extension_count: u32::default(),
5046            enabled_extension_names: ptr::null(),
5047            enabled_features: ptr::null(),
5048        }
5049    }
5050}
5051
5052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>
5053#[repr(C)]
5054#[derive(Copy, Clone)]
5055pub struct DeviceDeviceMemoryReportCreateInfoEXT {
5056    pub s_type: StructureType,
5057    pub next: *const c_void,
5058    pub flags: DeviceMemoryReportFlagsEXT,
5059    pub user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
5060    pub user_data: *mut c_void,
5061}
5062
5063impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
5064    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5065        f.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
5066            .field("s_type", &self.s_type)
5067            .field("next", &self.next)
5068            .field("flags", &self.flags)
5069            .field(
5070                "user_callback",
5071                &(self.user_callback.map(|f| f as *const u8)),
5072            )
5073            .field("user_data", &self.user_data)
5074            .finish()
5075    }
5076}
5077
5078impl Default for DeviceDeviceMemoryReportCreateInfoEXT {
5079    #[inline]
5080    fn default() -> Self {
5081        Self {
5082            s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
5083            next: ptr::null(),
5084            flags: DeviceMemoryReportFlagsEXT::default(),
5085            user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
5086            user_data: ptr::null_mut(),
5087        }
5088    }
5089}
5090
5091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>
5092#[repr(C)]
5093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5094pub struct DeviceDiagnosticsConfigCreateInfoNV {
5095    pub s_type: StructureType,
5096    pub next: *const c_void,
5097    pub flags: DeviceDiagnosticsConfigFlagsNV,
5098}
5099
5100impl Default for DeviceDiagnosticsConfigCreateInfoNV {
5101    #[inline]
5102    fn default() -> Self {
5103        Self {
5104            s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
5105            next: ptr::null(),
5106            flags: DeviceDiagnosticsConfigFlagsNV::default(),
5107        }
5108    }
5109}
5110
5111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html>
5112#[repr(C)]
5113#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5114pub struct DeviceEventInfoEXT {
5115    pub s_type: StructureType,
5116    pub next: *const c_void,
5117    pub device_event: DeviceEventTypeEXT,
5118}
5119
5120impl Default for DeviceEventInfoEXT {
5121    #[inline]
5122    fn default() -> Self {
5123        Self {
5124            s_type: StructureType::DEVICE_EVENT_INFO_EXT,
5125            next: ptr::null(),
5126            device_event: DeviceEventTypeEXT::default(),
5127        }
5128    }
5129}
5130
5131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoEXT.html>
5132#[repr(C)]
5133#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5134pub struct DeviceFaultAddressInfoEXT {
5135    pub address_type: DeviceFaultAddressTypeEXT,
5136    pub reported_address: DeviceAddress,
5137    pub address_precision: DeviceSize,
5138}
5139
5140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html>
5141#[repr(C)]
5142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5143pub struct DeviceFaultCountsEXT {
5144    pub s_type: StructureType,
5145    pub next: *mut c_void,
5146    pub address_info_count: u32,
5147    pub vendor_info_count: u32,
5148    pub vendor_binary_size: DeviceSize,
5149}
5150
5151impl Default for DeviceFaultCountsEXT {
5152    #[inline]
5153    fn default() -> Self {
5154        Self {
5155            s_type: StructureType::DEVICE_FAULT_COUNTS_EXT,
5156            next: ptr::null_mut(),
5157            address_info_count: u32::default(),
5158            vendor_info_count: u32::default(),
5159            vendor_binary_size: DeviceSize::default(),
5160        }
5161    }
5162}
5163
5164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html>
5165#[repr(C)]
5166#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5167pub struct DeviceFaultInfoEXT {
5168    pub s_type: StructureType,
5169    pub next: *mut c_void,
5170    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5171    pub address_infos: *mut DeviceFaultAddressInfoEXT,
5172    pub vendor_infos: *mut DeviceFaultVendorInfoEXT,
5173    pub vendor_binary_data: *mut c_void,
5174}
5175
5176impl Default for DeviceFaultInfoEXT {
5177    #[inline]
5178    fn default() -> Self {
5179        Self {
5180            s_type: StructureType::DEVICE_FAULT_INFO_EXT,
5181            next: ptr::null_mut(),
5182            description: StringArray::default(),
5183            address_infos: ptr::null_mut(),
5184            vendor_infos: ptr::null_mut(),
5185            vendor_binary_data: ptr::null_mut(),
5186        }
5187    }
5188}
5189
5190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneEXT.html>
5191#[repr(C)]
5192#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5193pub struct DeviceFaultVendorBinaryHeaderVersionOneEXT {
5194    pub header_size: u32,
5195    pub header_version: DeviceFaultVendorBinaryHeaderVersionEXT,
5196    pub vendor_id: u32,
5197    pub device_id: u32,
5198    pub driver_version: u32,
5199    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
5200    pub application_name_offset: u32,
5201    pub application_version: u32,
5202    pub engine_name_offset: u32,
5203    pub engine_version: u32,
5204    pub api_version: u32,
5205}
5206
5207/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoEXT.html>
5208#[repr(C)]
5209#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5210pub struct DeviceFaultVendorInfoEXT {
5211    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5212    pub vendor_fault_code: u64,
5213    pub vendor_fault_data: u64,
5214}
5215
5216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html>
5217#[repr(C)]
5218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5219pub struct DeviceGroupBindSparseInfo {
5220    pub s_type: StructureType,
5221    pub next: *const c_void,
5222    pub resource_device_index: u32,
5223    pub memory_device_index: u32,
5224}
5225
5226impl Default for DeviceGroupBindSparseInfo {
5227    #[inline]
5228    fn default() -> Self {
5229        Self {
5230            s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
5231            next: ptr::null(),
5232            resource_device_index: u32::default(),
5233            memory_device_index: u32::default(),
5234        }
5235    }
5236}
5237
5238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html>
5239#[repr(C)]
5240#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5241pub struct DeviceGroupCommandBufferBeginInfo {
5242    pub s_type: StructureType,
5243    pub next: *const c_void,
5244    pub device_mask: u32,
5245}
5246
5247impl Default for DeviceGroupCommandBufferBeginInfo {
5248    #[inline]
5249    fn default() -> Self {
5250        Self {
5251            s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
5252            next: ptr::null(),
5253            device_mask: u32::default(),
5254        }
5255    }
5256}
5257
5258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html>
5259#[repr(C)]
5260#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5261pub struct DeviceGroupDeviceCreateInfo {
5262    pub s_type: StructureType,
5263    pub next: *const c_void,
5264    pub physical_device_count: u32,
5265    pub physical_devices: *const PhysicalDevice,
5266}
5267
5268impl Default for DeviceGroupDeviceCreateInfo {
5269    #[inline]
5270    fn default() -> Self {
5271        Self {
5272            s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
5273            next: ptr::null(),
5274            physical_device_count: u32::default(),
5275            physical_devices: ptr::null(),
5276        }
5277    }
5278}
5279
5280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>
5281#[repr(C)]
5282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5283pub struct DeviceGroupPresentCapabilitiesKHR {
5284    pub s_type: StructureType,
5285    pub next: *mut c_void,
5286    pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE],
5287    pub modes: DeviceGroupPresentModeFlagsKHR,
5288}
5289
5290impl Default for DeviceGroupPresentCapabilitiesKHR {
5291    #[inline]
5292    fn default() -> Self {
5293        Self {
5294            s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
5295            next: ptr::null_mut(),
5296            present_mask: [u32::default(); MAX_DEVICE_GROUP_SIZE],
5297            modes: DeviceGroupPresentModeFlagsKHR::default(),
5298        }
5299    }
5300}
5301
5302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html>
5303#[repr(C)]
5304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5305pub struct DeviceGroupPresentInfoKHR {
5306    pub s_type: StructureType,
5307    pub next: *const c_void,
5308    pub swapchain_count: u32,
5309    pub device_masks: *const u32,
5310    pub mode: DeviceGroupPresentModeFlagsKHR,
5311}
5312
5313impl Default for DeviceGroupPresentInfoKHR {
5314    #[inline]
5315    fn default() -> Self {
5316        Self {
5317            s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
5318            next: ptr::null(),
5319            swapchain_count: u32::default(),
5320            device_masks: ptr::null(),
5321            mode: DeviceGroupPresentModeFlagsKHR::default(),
5322        }
5323    }
5324}
5325
5326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html>
5327#[repr(C)]
5328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5329pub struct DeviceGroupRenderPassBeginInfo {
5330    pub s_type: StructureType,
5331    pub next: *const c_void,
5332    pub device_mask: u32,
5333    pub device_render_area_count: u32,
5334    pub device_render_areas: *const Rect2D,
5335}
5336
5337impl Default for DeviceGroupRenderPassBeginInfo {
5338    #[inline]
5339    fn default() -> Self {
5340        Self {
5341            s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
5342            next: ptr::null(),
5343            device_mask: u32::default(),
5344            device_render_area_count: u32::default(),
5345            device_render_areas: ptr::null(),
5346        }
5347    }
5348}
5349
5350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html>
5351#[repr(C)]
5352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5353pub struct DeviceGroupSubmitInfo {
5354    pub s_type: StructureType,
5355    pub next: *const c_void,
5356    pub wait_semaphore_count: u32,
5357    pub wait_semaphore_device_indices: *const u32,
5358    pub command_buffer_count: u32,
5359    pub command_buffer_device_masks: *const u32,
5360    pub signal_semaphore_count: u32,
5361    pub signal_semaphore_device_indices: *const u32,
5362}
5363
5364impl Default for DeviceGroupSubmitInfo {
5365    #[inline]
5366    fn default() -> Self {
5367        Self {
5368            s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
5369            next: ptr::null(),
5370            wait_semaphore_count: u32::default(),
5371            wait_semaphore_device_indices: ptr::null(),
5372            command_buffer_count: u32::default(),
5373            command_buffer_device_masks: ptr::null(),
5374            signal_semaphore_count: u32::default(),
5375            signal_semaphore_device_indices: ptr::null(),
5376        }
5377    }
5378}
5379
5380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>
5381#[repr(C)]
5382#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5383pub struct DeviceGroupSwapchainCreateInfoKHR {
5384    pub s_type: StructureType,
5385    pub next: *const c_void,
5386    pub modes: DeviceGroupPresentModeFlagsKHR,
5387}
5388
5389impl Default for DeviceGroupSwapchainCreateInfoKHR {
5390    #[inline]
5391    fn default() -> Self {
5392        Self {
5393            s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
5394            next: ptr::null(),
5395            modes: DeviceGroupPresentModeFlagsKHR::default(),
5396        }
5397    }
5398}
5399
5400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html>
5401#[repr(C)]
5402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5403pub struct DeviceImageMemoryRequirements {
5404    pub s_type: StructureType,
5405    pub next: *const c_void,
5406    pub create_info: *const ImageCreateInfo,
5407    pub plane_aspect: ImageAspectFlags,
5408}
5409
5410impl Default for DeviceImageMemoryRequirements {
5411    #[inline]
5412    fn default() -> Self {
5413        Self {
5414            s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS,
5415            next: ptr::null(),
5416            create_info: ptr::null(),
5417            plane_aspect: ImageAspectFlags::default(),
5418        }
5419    }
5420}
5421
5422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html>
5423#[repr(C)]
5424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5425pub struct DeviceImageSubresourceInfo {
5426    pub s_type: StructureType,
5427    pub next: *const c_void,
5428    pub create_info: *const ImageCreateInfo,
5429    pub subresource: *const ImageSubresource2,
5430}
5431
5432impl Default for DeviceImageSubresourceInfo {
5433    #[inline]
5434    fn default() -> Self {
5435        Self {
5436            s_type: StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO,
5437            next: ptr::null(),
5438            create_info: ptr::null(),
5439            subresource: ptr::null(),
5440        }
5441    }
5442}
5443
5444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>
5445#[repr(C)]
5446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5447pub struct DeviceMemoryOpaqueCaptureAddressInfo {
5448    pub s_type: StructureType,
5449    pub next: *const c_void,
5450    pub memory: DeviceMemory,
5451}
5452
5453impl Default for DeviceMemoryOpaqueCaptureAddressInfo {
5454    #[inline]
5455    fn default() -> Self {
5456        Self {
5457            s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
5458            next: ptr::null(),
5459            memory: DeviceMemory::default(),
5460        }
5461    }
5462}
5463
5464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>
5465#[repr(C)]
5466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5467pub struct DeviceMemoryOverallocationCreateInfoAMD {
5468    pub s_type: StructureType,
5469    pub next: *const c_void,
5470    pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
5471}
5472
5473impl Default for DeviceMemoryOverallocationCreateInfoAMD {
5474    #[inline]
5475    fn default() -> Self {
5476        Self {
5477            s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
5478            next: ptr::null(),
5479            overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
5480        }
5481    }
5482}
5483
5484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html>
5485#[repr(C)]
5486#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5487pub struct DeviceMemoryReportCallbackDataEXT {
5488    pub s_type: StructureType,
5489    pub next: *mut c_void,
5490    pub flags: DeviceMemoryReportFlagsEXT,
5491    pub type_: DeviceMemoryReportEventTypeEXT,
5492    pub memory_object_id: u64,
5493    pub size: DeviceSize,
5494    pub object_type: ObjectType,
5495    pub object_handle: u64,
5496    pub heap_index: u32,
5497}
5498
5499impl Default for DeviceMemoryReportCallbackDataEXT {
5500    #[inline]
5501    fn default() -> Self {
5502        Self {
5503            s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
5504            next: ptr::null_mut(),
5505            flags: DeviceMemoryReportFlagsEXT::default(),
5506            type_: DeviceMemoryReportEventTypeEXT::default(),
5507            memory_object_id: u64::default(),
5508            size: DeviceSize::default(),
5509            object_type: ObjectType::default(),
5510            object_handle: u64::default(),
5511            heap_index: u32::default(),
5512        }
5513    }
5514}
5515
5516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html>
5517#[repr(C)]
5518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5519pub struct DevicePipelineBinaryInternalCacheControlKHR {
5520    pub s_type: StructureType,
5521    pub next: *const c_void,
5522    pub disable_internal_cache: Bool32,
5523}
5524
5525impl Default for DevicePipelineBinaryInternalCacheControlKHR {
5526    #[inline]
5527    fn default() -> Self {
5528        Self {
5529            s_type: StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR,
5530            next: ptr::null(),
5531            disable_internal_cache: Bool32::default(),
5532        }
5533    }
5534}
5535
5536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html>
5537#[repr(C)]
5538#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5539pub struct DevicePrivateDataCreateInfo {
5540    pub s_type: StructureType,
5541    pub next: *const c_void,
5542    pub private_data_slot_request_count: u32,
5543}
5544
5545impl Default for DevicePrivateDataCreateInfo {
5546    #[inline]
5547    fn default() -> Self {
5548        Self {
5549            s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO,
5550            next: ptr::null(),
5551            private_data_slot_request_count: u32::default(),
5552        }
5553    }
5554}
5555
5556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html>
5557#[repr(C)]
5558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5559pub struct DeviceQueueCreateInfo {
5560    pub s_type: StructureType,
5561    pub next: *const c_void,
5562    pub flags: DeviceQueueCreateFlags,
5563    pub queue_family_index: u32,
5564    pub queue_count: u32,
5565    pub queue_priorities: *const f32,
5566}
5567
5568impl Default for DeviceQueueCreateInfo {
5569    #[inline]
5570    fn default() -> Self {
5571        Self {
5572            s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
5573            next: ptr::null(),
5574            flags: DeviceQueueCreateFlags::default(),
5575            queue_family_index: u32::default(),
5576            queue_count: u32::default(),
5577            queue_priorities: ptr::null(),
5578        }
5579    }
5580}
5581
5582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html>
5583#[repr(C)]
5584#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5585pub struct DeviceQueueGlobalPriorityCreateInfo {
5586    pub s_type: StructureType,
5587    pub next: *const c_void,
5588    pub global_priority: QueueGlobalPriority,
5589}
5590
5591impl Default for DeviceQueueGlobalPriorityCreateInfo {
5592    #[inline]
5593    fn default() -> Self {
5594        Self {
5595            s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,
5596            next: ptr::null(),
5597            global_priority: QueueGlobalPriority::default(),
5598        }
5599    }
5600}
5601
5602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html>
5603#[repr(C)]
5604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5605pub struct DeviceQueueInfo2 {
5606    pub s_type: StructureType,
5607    pub next: *const c_void,
5608    pub flags: DeviceQueueCreateFlags,
5609    pub queue_family_index: u32,
5610    pub queue_index: u32,
5611}
5612
5613impl Default for DeviceQueueInfo2 {
5614    #[inline]
5615    fn default() -> Self {
5616        Self {
5617            s_type: StructureType::DEVICE_QUEUE_INFO_2,
5618            next: ptr::null(),
5619            flags: DeviceQueueCreateFlags::default(),
5620            queue_family_index: u32::default(),
5621            queue_index: u32::default(),
5622        }
5623    }
5624}
5625
5626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html>
5627#[repr(C)]
5628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5629pub struct DeviceQueueShaderCoreControlCreateInfoARM {
5630    pub s_type: StructureType,
5631    pub next: *mut c_void,
5632    pub shader_core_count: u32,
5633}
5634
5635impl Default for DeviceQueueShaderCoreControlCreateInfoARM {
5636    #[inline]
5637    fn default() -> Self {
5638        Self {
5639            s_type: StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM,
5640            next: ptr::null_mut(),
5641            shader_core_count: u32::default(),
5642        }
5643    }
5644}
5645
5646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.html>
5647#[repr(C)]
5648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5649pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
5650    pub s_type: StructureType,
5651    pub next: *const c_void,
5652    pub semaphore_sci_sync_pool_request_count: u32,
5653}
5654
5655impl Default for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
5656    #[inline]
5657    fn default() -> Self {
5658        Self {
5659            s_type: StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV,
5660            next: ptr::null(),
5661            semaphore_sci_sync_pool_request_count: u32::default(),
5662        }
5663    }
5664}
5665
5666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceTensorMemoryRequirementsARM.html>
5667#[repr(C)]
5668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5669pub struct DeviceTensorMemoryRequirementsARM {
5670    pub s_type: StructureType,
5671    pub next: *const c_void,
5672    pub create_info: *const TensorCreateInfoARM,
5673}
5674
5675impl Default for DeviceTensorMemoryRequirementsARM {
5676    #[inline]
5677    fn default() -> Self {
5678        Self {
5679            s_type: StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM,
5680            next: ptr::null(),
5681            create_info: ptr::null(),
5682        }
5683    }
5684}
5685
5686/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html>
5687#[repr(C)]
5688#[derive(Copy, Clone)]
5689pub struct DirectDriverLoadingInfoLUNARG {
5690    pub s_type: StructureType,
5691    pub next: *mut c_void,
5692    pub flags: DirectDriverLoadingFlagsLUNARG,
5693    pub get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG,
5694}
5695
5696impl fmt::Debug for DirectDriverLoadingInfoLUNARG {
5697    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5698        f.debug_struct("DirectDriverLoadingInfoLUNARG")
5699            .field("s_type", &self.s_type)
5700            .field("next", &self.next)
5701            .field("flags", &self.flags)
5702            .field(
5703                "get_instance_proc_addr",
5704                &(self.get_instance_proc_addr.map(|f| f as *const u8)),
5705            )
5706            .finish()
5707    }
5708}
5709
5710impl Default for DirectDriverLoadingInfoLUNARG {
5711    #[inline]
5712    fn default() -> Self {
5713        Self {
5714            s_type: StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG,
5715            next: ptr::null_mut(),
5716            flags: DirectDriverLoadingFlagsLUNARG::default(),
5717            get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG::default(),
5718        }
5719    }
5720}
5721
5722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html>
5723#[repr(C)]
5724#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5725pub struct DirectDriverLoadingListLUNARG {
5726    pub s_type: StructureType,
5727    pub next: *const c_void,
5728    pub mode: DirectDriverLoadingModeLUNARG,
5729    pub driver_count: u32,
5730    pub drivers: *const DirectDriverLoadingInfoLUNARG,
5731}
5732
5733impl Default for DirectDriverLoadingListLUNARG {
5734    #[inline]
5735    fn default() -> Self {
5736        Self {
5737            s_type: StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG,
5738            next: ptr::null(),
5739            mode: DirectDriverLoadingModeLUNARG::default(),
5740            driver_count: u32::default(),
5741            drivers: ptr::null(),
5742        }
5743    }
5744}
5745
5746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html>
5747#[repr(C)]
5748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5749pub struct DirectFBSurfaceCreateInfoEXT {
5750    pub s_type: StructureType,
5751    pub next: *const c_void,
5752    pub flags: DirectFBSurfaceCreateFlagsEXT,
5753    pub dfb: *mut IDirectFB,
5754    pub surface: *mut IDirectFBSurface,
5755}
5756
5757impl Default for DirectFBSurfaceCreateInfoEXT {
5758    #[inline]
5759    fn default() -> Self {
5760        Self {
5761            s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
5762            next: ptr::null(),
5763            flags: DirectFBSurfaceCreateFlagsEXT::default(),
5764            dfb: ptr::null_mut(),
5765            surface: ptr::null_mut(),
5766        }
5767    }
5768}
5769
5770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html>
5771#[repr(C)]
5772#[derive(Copy, Clone, Default, Debug)]
5773pub struct DispatchGraphCountInfoAMDX {
5774    pub count: u32,
5775    pub infos: DeviceOrHostAddressConstAMDX,
5776    pub stride: u64,
5777}
5778
5779/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html>
5780#[repr(C)]
5781#[derive(Copy, Clone, Default, Debug)]
5782pub struct DispatchGraphInfoAMDX {
5783    pub node_index: u32,
5784    pub payload_count: u32,
5785    pub payloads: DeviceOrHostAddressConstAMDX,
5786    pub payload_stride: u64,
5787}
5788
5789/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html>
5790#[repr(C)]
5791#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5792pub struct DispatchIndirectCommand {
5793    pub x: u32,
5794    pub y: u32,
5795    pub z: u32,
5796}
5797
5798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchTileInfoQCOM.html>
5799#[repr(C)]
5800#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5801pub struct DispatchTileInfoQCOM {
5802    pub s_type: StructureType,
5803    pub next: *const c_void,
5804}
5805
5806impl Default for DispatchTileInfoQCOM {
5807    #[inline]
5808    fn default() -> Self {
5809        Self {
5810            s_type: StructureType::DISPATCH_TILE_INFO_QCOM,
5811            next: ptr::null(),
5812        }
5813    }
5814}
5815
5816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html>
5817#[repr(C)]
5818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5819pub struct DisplayEventInfoEXT {
5820    pub s_type: StructureType,
5821    pub next: *const c_void,
5822    pub display_event: DisplayEventTypeEXT,
5823}
5824
5825impl Default for DisplayEventInfoEXT {
5826    #[inline]
5827    fn default() -> Self {
5828        Self {
5829            s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
5830            next: ptr::null(),
5831            display_event: DisplayEventTypeEXT::default(),
5832        }
5833    }
5834}
5835
5836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html>
5837#[repr(C)]
5838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5839pub struct DisplayModeCreateInfoKHR {
5840    pub s_type: StructureType,
5841    pub next: *const c_void,
5842    pub flags: DisplayModeCreateFlagsKHR,
5843    pub parameters: DisplayModeParametersKHR,
5844}
5845
5846impl Default for DisplayModeCreateInfoKHR {
5847    #[inline]
5848    fn default() -> Self {
5849        Self {
5850            s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
5851            next: ptr::null(),
5852            flags: DisplayModeCreateFlagsKHR::default(),
5853            parameters: DisplayModeParametersKHR::default(),
5854        }
5855    }
5856}
5857
5858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html>
5859#[repr(C)]
5860#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5861pub struct DisplayModeParametersKHR {
5862    pub visible_region: Extent2D,
5863    pub refresh_rate: u32,
5864}
5865
5866/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html>
5867#[repr(C)]
5868#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5869pub struct DisplayModeProperties2KHR {
5870    pub s_type: StructureType,
5871    pub next: *mut c_void,
5872    pub display_mode_properties: DisplayModePropertiesKHR,
5873}
5874
5875impl Default for DisplayModeProperties2KHR {
5876    #[inline]
5877    fn default() -> Self {
5878        Self {
5879            s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
5880            next: ptr::null_mut(),
5881            display_mode_properties: DisplayModePropertiesKHR::default(),
5882        }
5883    }
5884}
5885
5886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html>
5887#[repr(C)]
5888#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5889pub struct DisplayModePropertiesKHR {
5890    pub display_mode: DisplayModeKHR,
5891    pub parameters: DisplayModeParametersKHR,
5892}
5893
5894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html>
5895#[repr(C)]
5896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5897pub struct DisplayModeStereoPropertiesNV {
5898    pub s_type: StructureType,
5899    pub next: *const c_void,
5900    pub hdmi_3d_supported: Bool32,
5901}
5902
5903impl Default for DisplayModeStereoPropertiesNV {
5904    #[inline]
5905    fn default() -> Self {
5906        Self {
5907            s_type: StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV,
5908            next: ptr::null(),
5909            hdmi_3d_supported: Bool32::default(),
5910        }
5911    }
5912}
5913
5914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>
5915#[repr(C)]
5916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5917pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
5918    pub s_type: StructureType,
5919    pub next: *mut c_void,
5920    pub local_dimming_support: Bool32,
5921}
5922
5923impl Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
5924    #[inline]
5925    fn default() -> Self {
5926        Self {
5927            s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
5928            next: ptr::null_mut(),
5929            local_dimming_support: Bool32::default(),
5930        }
5931    }
5932}
5933
5934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html>
5935#[repr(C)]
5936#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5937pub struct DisplayPlaneCapabilities2KHR {
5938    pub s_type: StructureType,
5939    pub next: *mut c_void,
5940    pub capabilities: DisplayPlaneCapabilitiesKHR,
5941}
5942
5943impl Default for DisplayPlaneCapabilities2KHR {
5944    #[inline]
5945    fn default() -> Self {
5946        Self {
5947            s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
5948            next: ptr::null_mut(),
5949            capabilities: DisplayPlaneCapabilitiesKHR::default(),
5950        }
5951    }
5952}
5953
5954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html>
5955#[repr(C)]
5956#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5957pub struct DisplayPlaneCapabilitiesKHR {
5958    pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
5959    pub min_src_position: Offset2D,
5960    pub max_src_position: Offset2D,
5961    pub min_src_extent: Extent2D,
5962    pub max_src_extent: Extent2D,
5963    pub min_dst_position: Offset2D,
5964    pub max_dst_position: Offset2D,
5965    pub min_dst_extent: Extent2D,
5966    pub max_dst_extent: Extent2D,
5967}
5968
5969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html>
5970#[repr(C)]
5971#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5972pub struct DisplayPlaneInfo2KHR {
5973    pub s_type: StructureType,
5974    pub next: *const c_void,
5975    pub mode: DisplayModeKHR,
5976    pub plane_index: u32,
5977}
5978
5979impl Default for DisplayPlaneInfo2KHR {
5980    #[inline]
5981    fn default() -> Self {
5982        Self {
5983            s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
5984            next: ptr::null(),
5985            mode: DisplayModeKHR::default(),
5986            plane_index: u32::default(),
5987        }
5988    }
5989}
5990
5991/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html>
5992#[repr(C)]
5993#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5994pub struct DisplayPlaneProperties2KHR {
5995    pub s_type: StructureType,
5996    pub next: *mut c_void,
5997    pub display_plane_properties: DisplayPlanePropertiesKHR,
5998}
5999
6000impl Default for DisplayPlaneProperties2KHR {
6001    #[inline]
6002    fn default() -> Self {
6003        Self {
6004            s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
6005            next: ptr::null_mut(),
6006            display_plane_properties: DisplayPlanePropertiesKHR::default(),
6007        }
6008    }
6009}
6010
6011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html>
6012#[repr(C)]
6013#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6014pub struct DisplayPlanePropertiesKHR {
6015    pub current_display: DisplayKHR,
6016    pub current_stack_index: u32,
6017}
6018
6019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html>
6020#[repr(C)]
6021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6022pub struct DisplayPowerInfoEXT {
6023    pub s_type: StructureType,
6024    pub next: *const c_void,
6025    pub power_state: DisplayPowerStateEXT,
6026}
6027
6028impl Default for DisplayPowerInfoEXT {
6029    #[inline]
6030    fn default() -> Self {
6031        Self {
6032            s_type: StructureType::DISPLAY_POWER_INFO_EXT,
6033            next: ptr::null(),
6034            power_state: DisplayPowerStateEXT::default(),
6035        }
6036    }
6037}
6038
6039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html>
6040#[repr(C)]
6041#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6042pub struct DisplayPresentInfoKHR {
6043    pub s_type: StructureType,
6044    pub next: *const c_void,
6045    pub src_rect: Rect2D,
6046    pub dst_rect: Rect2D,
6047    pub persistent: Bool32,
6048}
6049
6050impl Default for DisplayPresentInfoKHR {
6051    #[inline]
6052    fn default() -> Self {
6053        Self {
6054            s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
6055            next: ptr::null(),
6056            src_rect: Rect2D::default(),
6057            dst_rect: Rect2D::default(),
6058            persistent: Bool32::default(),
6059        }
6060    }
6061}
6062
6063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html>
6064#[repr(C)]
6065#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6066pub struct DisplayProperties2KHR {
6067    pub s_type: StructureType,
6068    pub next: *mut c_void,
6069    pub display_properties: DisplayPropertiesKHR,
6070}
6071
6072impl Default for DisplayProperties2KHR {
6073    #[inline]
6074    fn default() -> Self {
6075        Self {
6076            s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
6077            next: ptr::null_mut(),
6078            display_properties: DisplayPropertiesKHR::default(),
6079        }
6080    }
6081}
6082
6083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html>
6084#[repr(C)]
6085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6086pub struct DisplayPropertiesKHR {
6087    pub display: DisplayKHR,
6088    pub display_name: *const c_char,
6089    pub physical_dimensions: Extent2D,
6090    pub physical_resolution: Extent2D,
6091    pub supported_transforms: SurfaceTransformFlagsKHR,
6092    pub plane_reorder_possible: Bool32,
6093    pub persistent_content: Bool32,
6094}
6095
6096impl Default for DisplayPropertiesKHR {
6097    #[inline]
6098    fn default() -> Self {
6099        Self {
6100            display: DisplayKHR::default(),
6101            display_name: ptr::null(),
6102            physical_dimensions: Extent2D::default(),
6103            physical_resolution: Extent2D::default(),
6104            supported_transforms: SurfaceTransformFlagsKHR::default(),
6105            plane_reorder_possible: Bool32::default(),
6106            persistent_content: Bool32::default(),
6107        }
6108    }
6109}
6110
6111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html>
6112#[repr(C)]
6113#[derive(Copy, Clone, Debug, PartialEq)]
6114pub struct DisplaySurfaceCreateInfoKHR {
6115    pub s_type: StructureType,
6116    pub next: *const c_void,
6117    pub flags: DisplaySurfaceCreateFlagsKHR,
6118    pub display_mode: DisplayModeKHR,
6119    pub plane_index: u32,
6120    pub plane_stack_index: u32,
6121    pub transform: SurfaceTransformFlagsKHR,
6122    pub global_alpha: f32,
6123    pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
6124    pub image_extent: Extent2D,
6125}
6126
6127impl Default for DisplaySurfaceCreateInfoKHR {
6128    #[inline]
6129    fn default() -> Self {
6130        Self {
6131            s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
6132            next: ptr::null(),
6133            flags: DisplaySurfaceCreateFlagsKHR::default(),
6134            display_mode: DisplayModeKHR::default(),
6135            plane_index: u32::default(),
6136            plane_stack_index: u32::default(),
6137            transform: SurfaceTransformFlagsKHR::default(),
6138            global_alpha: f32::default(),
6139            alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
6140            image_extent: Extent2D::default(),
6141        }
6142    }
6143}
6144
6145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html>
6146#[repr(C)]
6147#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6148pub struct DisplaySurfaceStereoCreateInfoNV {
6149    pub s_type: StructureType,
6150    pub next: *const c_void,
6151    pub stereo_type: DisplaySurfaceStereoTypeNV,
6152}
6153
6154impl Default for DisplaySurfaceStereoCreateInfoNV {
6155    #[inline]
6156    fn default() -> Self {
6157        Self {
6158            s_type: StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV,
6159            next: ptr::null(),
6160            stereo_type: DisplaySurfaceStereoTypeNV::default(),
6161        }
6162    }
6163}
6164
6165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html>
6166#[repr(C)]
6167#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6168pub struct DrawIndexedIndirectCommand {
6169    pub index_count: u32,
6170    pub instance_count: u32,
6171    pub first_index: u32,
6172    pub vertex_offset: i32,
6173    pub first_instance: u32,
6174}
6175
6176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html>
6177#[repr(C)]
6178#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6179pub struct DrawIndirectCommand {
6180    pub vertex_count: u32,
6181    pub instance_count: u32,
6182    pub first_vertex: u32,
6183    pub first_instance: u32,
6184}
6185
6186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html>
6187#[repr(C)]
6188#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6189pub struct DrawIndirectCountIndirectCommandEXT {
6190    pub buffer_address: DeviceAddress,
6191    pub stride: u32,
6192    pub command_count: u32,
6193}
6194
6195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html>
6196#[repr(C)]
6197#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6198pub struct DrawMeshTasksIndirectCommandEXT {
6199    pub group_count_x: u32,
6200    pub group_count_y: u32,
6201    pub group_count_z: u32,
6202}
6203
6204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html>
6205#[repr(C)]
6206#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6207pub struct DrawMeshTasksIndirectCommandNV {
6208    pub task_count: u32,
6209    pub first_task: u32,
6210}
6211
6212/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html>
6213#[repr(C)]
6214#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6215pub struct DrmFormatModifierProperties2EXT {
6216    pub drm_format_modifier: u64,
6217    pub drm_format_modifier_plane_count: u32,
6218    pub drm_format_modifier_tiling_features: FormatFeatureFlags2,
6219}
6220
6221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html>
6222#[repr(C)]
6223#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6224pub struct DrmFormatModifierPropertiesEXT {
6225    pub drm_format_modifier: u64,
6226    pub drm_format_modifier_plane_count: u32,
6227    pub drm_format_modifier_tiling_features: FormatFeatureFlags,
6228}
6229
6230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html>
6231#[repr(C)]
6232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6233pub struct DrmFormatModifierPropertiesList2EXT {
6234    pub s_type: StructureType,
6235    pub next: *mut c_void,
6236    pub drm_format_modifier_count: u32,
6237    pub drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
6238}
6239
6240impl Default for DrmFormatModifierPropertiesList2EXT {
6241    #[inline]
6242    fn default() -> Self {
6243        Self {
6244            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
6245            next: ptr::null_mut(),
6246            drm_format_modifier_count: u32::default(),
6247            drm_format_modifier_properties: ptr::null_mut(),
6248        }
6249    }
6250}
6251
6252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html>
6253#[repr(C)]
6254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6255pub struct DrmFormatModifierPropertiesListEXT {
6256    pub s_type: StructureType,
6257    pub next: *mut c_void,
6258    pub drm_format_modifier_count: u32,
6259    pub drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
6260}
6261
6262impl Default for DrmFormatModifierPropertiesListEXT {
6263    #[inline]
6264    fn default() -> Self {
6265        Self {
6266            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
6267            next: ptr::null_mut(),
6268            drm_format_modifier_count: u32::default(),
6269            drm_format_modifier_properties: ptr::null_mut(),
6270        }
6271    }
6272}
6273
6274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateInfo.html>
6275#[repr(C)]
6276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6277pub struct EventCreateInfo {
6278    pub s_type: StructureType,
6279    pub next: *const c_void,
6280    pub flags: EventCreateFlags,
6281}
6282
6283impl Default for EventCreateInfo {
6284    #[inline]
6285    fn default() -> Self {
6286        Self {
6287            s_type: StructureType::EVENT_CREATE_INFO,
6288            next: ptr::null(),
6289            flags: EventCreateFlags::default(),
6290        }
6291    }
6292}
6293
6294/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html>
6295#[repr(C)]
6296#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6297pub struct ExecutionGraphPipelineCreateInfoAMDX {
6298    pub s_type: StructureType,
6299    pub next: *const c_void,
6300    pub flags: PipelineCreateFlags,
6301    pub stage_count: u32,
6302    pub stages: *const PipelineShaderStageCreateInfo,
6303    pub library_info: *const PipelineLibraryCreateInfoKHR,
6304    pub layout: PipelineLayout,
6305    pub base_pipeline_handle: Pipeline,
6306    pub base_pipeline_index: i32,
6307}
6308
6309impl Default for ExecutionGraphPipelineCreateInfoAMDX {
6310    #[inline]
6311    fn default() -> Self {
6312        Self {
6313            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX,
6314            next: ptr::null(),
6315            flags: PipelineCreateFlags::default(),
6316            stage_count: u32::default(),
6317            stages: ptr::null(),
6318            library_info: ptr::null(),
6319            layout: PipelineLayout::default(),
6320            base_pipeline_handle: Pipeline::default(),
6321            base_pipeline_index: i32::default(),
6322        }
6323    }
6324}
6325
6326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html>
6327#[repr(C)]
6328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6329pub struct ExecutionGraphPipelineScratchSizeAMDX {
6330    pub s_type: StructureType,
6331    pub next: *mut c_void,
6332    pub min_size: DeviceSize,
6333    pub max_size: DeviceSize,
6334    pub size_granularity: DeviceSize,
6335}
6336
6337impl Default for ExecutionGraphPipelineScratchSizeAMDX {
6338    #[inline]
6339    fn default() -> Self {
6340        Self {
6341            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX,
6342            next: ptr::null_mut(),
6343            min_size: DeviceSize::default(),
6344            max_size: DeviceSize::default(),
6345            size_granularity: DeviceSize::default(),
6346        }
6347    }
6348}
6349
6350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html>
6351#[repr(C)]
6352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6353pub struct ExportFenceCreateInfo {
6354    pub s_type: StructureType,
6355    pub next: *const c_void,
6356    pub handle_types: ExternalFenceHandleTypeFlags,
6357}
6358
6359impl Default for ExportFenceCreateInfo {
6360    #[inline]
6361    fn default() -> Self {
6362        Self {
6363            s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
6364            next: ptr::null(),
6365            handle_types: ExternalFenceHandleTypeFlags::default(),
6366        }
6367    }
6368}
6369
6370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceSciSyncInfoNV.html>
6371#[repr(C)]
6372#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6373pub struct ExportFenceSciSyncInfoNV {
6374    pub s_type: StructureType,
6375    pub next: *const c_void,
6376    pub attributes: NvSciSyncAttrList,
6377}
6378
6379impl Default for ExportFenceSciSyncInfoNV {
6380    #[inline]
6381    fn default() -> Self {
6382        Self {
6383            s_type: StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV,
6384            next: ptr::null(),
6385            attributes: ptr::null_mut(),
6386        }
6387    }
6388}
6389
6390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html>
6391#[repr(C)]
6392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6393pub struct ExportFenceWin32HandleInfoKHR {
6394    pub s_type: StructureType,
6395    pub next: *const c_void,
6396    pub attributes: *const SECURITY_ATTRIBUTES,
6397    pub dw_access: DWORD,
6398    pub name: LPCWSTR,
6399}
6400
6401impl Default for ExportFenceWin32HandleInfoKHR {
6402    #[inline]
6403    fn default() -> Self {
6404        Self {
6405            s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6406            next: ptr::null(),
6407            attributes: ptr::null(),
6408            dw_access: DWORD::default(),
6409            name: ptr::null_mut(),
6410        }
6411    }
6412}
6413
6414/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html>
6415#[repr(C)]
6416#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6417pub struct ExportMemoryAllocateInfo {
6418    pub s_type: StructureType,
6419    pub next: *const c_void,
6420    pub handle_types: ExternalMemoryHandleTypeFlags,
6421}
6422
6423impl Default for ExportMemoryAllocateInfo {
6424    #[inline]
6425    fn default() -> Self {
6426        Self {
6427            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
6428            next: ptr::null(),
6429            handle_types: ExternalMemoryHandleTypeFlags::default(),
6430        }
6431    }
6432}
6433
6434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html>
6435#[repr(C)]
6436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6437pub struct ExportMemoryAllocateInfoNV {
6438    pub s_type: StructureType,
6439    pub next: *const c_void,
6440    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
6441}
6442
6443impl Default for ExportMemoryAllocateInfoNV {
6444    #[inline]
6445    fn default() -> Self {
6446        Self {
6447            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
6448            next: ptr::null(),
6449            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
6450        }
6451    }
6452}
6453
6454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemorySciBufInfoNV.html>
6455#[repr(C)]
6456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6457pub struct ExportMemorySciBufInfoNV {
6458    pub s_type: StructureType,
6459    pub next: *const c_void,
6460    pub attributes: NvSciBufAttrList,
6461}
6462
6463impl Default for ExportMemorySciBufInfoNV {
6464    #[inline]
6465    fn default() -> Self {
6466        Self {
6467            s_type: StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV,
6468            next: ptr::null(),
6469            attributes: ptr::null_mut(),
6470        }
6471    }
6472}
6473
6474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html>
6475#[repr(C)]
6476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6477pub struct ExportMemoryWin32HandleInfoKHR {
6478    pub s_type: StructureType,
6479    pub next: *const c_void,
6480    pub attributes: *const SECURITY_ATTRIBUTES,
6481    pub dw_access: DWORD,
6482    pub name: LPCWSTR,
6483}
6484
6485impl Default for ExportMemoryWin32HandleInfoKHR {
6486    #[inline]
6487    fn default() -> Self {
6488        Self {
6489            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6490            next: ptr::null(),
6491            attributes: ptr::null(),
6492            dw_access: DWORD::default(),
6493            name: ptr::null_mut(),
6494        }
6495    }
6496}
6497
6498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html>
6499#[repr(C)]
6500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6501pub struct ExportMemoryWin32HandleInfoNV {
6502    pub s_type: StructureType,
6503    pub next: *const c_void,
6504    pub attributes: *const SECURITY_ATTRIBUTES,
6505    pub dw_access: DWORD,
6506}
6507
6508impl Default for ExportMemoryWin32HandleInfoNV {
6509    #[inline]
6510    fn default() -> Self {
6511        Self {
6512            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6513            next: ptr::null(),
6514            attributes: ptr::null(),
6515            dw_access: DWORD::default(),
6516        }
6517    }
6518}
6519
6520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html>
6521#[repr(C)]
6522#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6523pub struct ExportMetalBufferInfoEXT {
6524    pub s_type: StructureType,
6525    pub next: *const c_void,
6526    pub memory: DeviceMemory,
6527    pub mtl_buffer: MTLBuffer_id,
6528}
6529
6530impl Default for ExportMetalBufferInfoEXT {
6531    #[inline]
6532    fn default() -> Self {
6533        Self {
6534            s_type: StructureType::EXPORT_METAL_BUFFER_INFO_EXT,
6535            next: ptr::null(),
6536            memory: DeviceMemory::default(),
6537            mtl_buffer: ptr::null_mut(),
6538        }
6539    }
6540}
6541
6542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html>
6543#[repr(C)]
6544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6545pub struct ExportMetalCommandQueueInfoEXT {
6546    pub s_type: StructureType,
6547    pub next: *const c_void,
6548    pub queue: Queue,
6549    pub mtl_command_queue: MTLCommandQueue_id,
6550}
6551
6552impl Default for ExportMetalCommandQueueInfoEXT {
6553    #[inline]
6554    fn default() -> Self {
6555        Self {
6556            s_type: StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT,
6557            next: ptr::null(),
6558            queue: Queue::default(),
6559            mtl_command_queue: ptr::null_mut(),
6560        }
6561    }
6562}
6563
6564/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html>
6565#[repr(C)]
6566#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6567pub struct ExportMetalDeviceInfoEXT {
6568    pub s_type: StructureType,
6569    pub next: *const c_void,
6570    pub mtl_device: MTLDevice_id,
6571}
6572
6573impl Default for ExportMetalDeviceInfoEXT {
6574    #[inline]
6575    fn default() -> Self {
6576        Self {
6577            s_type: StructureType::EXPORT_METAL_DEVICE_INFO_EXT,
6578            next: ptr::null(),
6579            mtl_device: ptr::null_mut(),
6580        }
6581    }
6582}
6583
6584/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html>
6585#[repr(C)]
6586#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6587pub struct ExportMetalIOSurfaceInfoEXT {
6588    pub s_type: StructureType,
6589    pub next: *const c_void,
6590    pub image: Image,
6591    pub io_surface: IOSurfaceRef,
6592}
6593
6594impl Default for ExportMetalIOSurfaceInfoEXT {
6595    #[inline]
6596    fn default() -> Self {
6597        Self {
6598            s_type: StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT,
6599            next: ptr::null(),
6600            image: Image::default(),
6601            io_surface: ptr::null_mut(),
6602        }
6603    }
6604}
6605
6606/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html>
6607#[repr(C)]
6608#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6609pub struct ExportMetalObjectCreateInfoEXT {
6610    pub s_type: StructureType,
6611    pub next: *const c_void,
6612    pub export_object_type: ExportMetalObjectTypeFlagsEXT,
6613}
6614
6615impl Default for ExportMetalObjectCreateInfoEXT {
6616    #[inline]
6617    fn default() -> Self {
6618        Self {
6619            s_type: StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
6620            next: ptr::null(),
6621            export_object_type: ExportMetalObjectTypeFlagsEXT::default(),
6622        }
6623    }
6624}
6625
6626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html>
6627#[repr(C)]
6628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6629pub struct ExportMetalObjectsInfoEXT {
6630    pub s_type: StructureType,
6631    pub next: *const c_void,
6632}
6633
6634impl Default for ExportMetalObjectsInfoEXT {
6635    #[inline]
6636    fn default() -> Self {
6637        Self {
6638            s_type: StructureType::EXPORT_METAL_OBJECTS_INFO_EXT,
6639            next: ptr::null(),
6640        }
6641    }
6642}
6643
6644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html>
6645#[repr(C)]
6646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6647pub struct ExportMetalSharedEventInfoEXT {
6648    pub s_type: StructureType,
6649    pub next: *const c_void,
6650    pub semaphore: Semaphore,
6651    pub event: Event,
6652    pub mtl_shared_event: MTLSharedEvent_id,
6653}
6654
6655impl Default for ExportMetalSharedEventInfoEXT {
6656    #[inline]
6657    fn default() -> Self {
6658        Self {
6659            s_type: StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT,
6660            next: ptr::null(),
6661            semaphore: Semaphore::default(),
6662            event: Event::default(),
6663            mtl_shared_event: ptr::null_mut(),
6664        }
6665    }
6666}
6667
6668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html>
6669#[repr(C)]
6670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6671pub struct ExportMetalTextureInfoEXT {
6672    pub s_type: StructureType,
6673    pub next: *const c_void,
6674    pub image: Image,
6675    pub image_view: ImageView,
6676    pub buffer_view: BufferView,
6677    pub plane: ImageAspectFlags,
6678    pub mtl_texture: MTLTexture_id,
6679}
6680
6681impl Default for ExportMetalTextureInfoEXT {
6682    #[inline]
6683    fn default() -> Self {
6684        Self {
6685            s_type: StructureType::EXPORT_METAL_TEXTURE_INFO_EXT,
6686            next: ptr::null(),
6687            image: Image::default(),
6688            image_view: ImageView::default(),
6689            buffer_view: BufferView::default(),
6690            plane: ImageAspectFlags::default(),
6691            mtl_texture: ptr::null_mut(),
6692        }
6693    }
6694}
6695
6696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html>
6697#[repr(C)]
6698#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6699pub struct ExportSemaphoreCreateInfo {
6700    pub s_type: StructureType,
6701    pub next: *const c_void,
6702    pub handle_types: ExternalSemaphoreHandleTypeFlags,
6703}
6704
6705impl Default for ExportSemaphoreCreateInfo {
6706    #[inline]
6707    fn default() -> Self {
6708        Self {
6709            s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
6710            next: ptr::null(),
6711            handle_types: ExternalSemaphoreHandleTypeFlags::default(),
6712        }
6713    }
6714}
6715
6716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreSciSyncInfoNV.html>
6717#[repr(C)]
6718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6719pub struct ExportSemaphoreSciSyncInfoNV {
6720    pub s_type: StructureType,
6721    pub next: *const c_void,
6722    pub attributes: NvSciSyncAttrList,
6723}
6724
6725impl Default for ExportSemaphoreSciSyncInfoNV {
6726    #[inline]
6727    fn default() -> Self {
6728        Self {
6729            s_type: StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
6730            next: ptr::null(),
6731            attributes: ptr::null_mut(),
6732        }
6733    }
6734}
6735
6736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>
6737#[repr(C)]
6738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6739pub struct ExportSemaphoreWin32HandleInfoKHR {
6740    pub s_type: StructureType,
6741    pub next: *const c_void,
6742    pub attributes: *const SECURITY_ATTRIBUTES,
6743    pub dw_access: DWORD,
6744    pub name: LPCWSTR,
6745}
6746
6747impl Default for ExportSemaphoreWin32HandleInfoKHR {
6748    #[inline]
6749    fn default() -> Self {
6750        Self {
6751            s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6752            next: ptr::null(),
6753            attributes: ptr::null(),
6754            dw_access: DWORD::default(),
6755            name: ptr::null_mut(),
6756        }
6757    }
6758}
6759
6760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtensionProperties.html>
6761#[repr(C)]
6762#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6763pub struct ExtensionProperties {
6764    pub extension_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
6765    pub spec_version: u32,
6766}
6767
6768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent2D.html>
6769#[repr(C)]
6770#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6771pub struct Extent2D {
6772    pub width: u32,
6773    pub height: u32,
6774}
6775
6776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent3D.html>
6777#[repr(C)]
6778#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6779pub struct Extent3D {
6780    pub width: u32,
6781    pub height: u32,
6782    pub depth: u32,
6783}
6784
6785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferProperties.html>
6786#[repr(C)]
6787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6788pub struct ExternalBufferProperties {
6789    pub s_type: StructureType,
6790    pub next: *mut c_void,
6791    pub external_memory_properties: ExternalMemoryProperties,
6792}
6793
6794impl Default for ExternalBufferProperties {
6795    #[inline]
6796    fn default() -> Self {
6797        Self {
6798            s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
6799            next: ptr::null_mut(),
6800            external_memory_properties: ExternalMemoryProperties::default(),
6801        }
6802    }
6803}
6804
6805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueCreateInfoNV.html>
6806#[repr(C)]
6807#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6808pub struct ExternalComputeQueueCreateInfoNV {
6809    pub s_type: StructureType,
6810    pub next: *const c_void,
6811    pub preferred_queue: Queue,
6812}
6813
6814impl Default for ExternalComputeQueueCreateInfoNV {
6815    #[inline]
6816    fn default() -> Self {
6817        Self {
6818            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV,
6819            next: ptr::null(),
6820            preferred_queue: Queue::default(),
6821        }
6822    }
6823}
6824
6825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDataParamsNV.html>
6826#[repr(C)]
6827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6828pub struct ExternalComputeQueueDataParamsNV {
6829    pub s_type: StructureType,
6830    pub next: *const c_void,
6831    pub device_index: u32,
6832}
6833
6834impl Default for ExternalComputeQueueDataParamsNV {
6835    #[inline]
6836    fn default() -> Self {
6837        Self {
6838            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV,
6839            next: ptr::null(),
6840            device_index: u32::default(),
6841        }
6842    }
6843}
6844
6845/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDeviceCreateInfoNV.html>
6846#[repr(C)]
6847#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6848pub struct ExternalComputeQueueDeviceCreateInfoNV {
6849    pub s_type: StructureType,
6850    pub next: *const c_void,
6851    pub reserved_external_queues: u32,
6852}
6853
6854impl Default for ExternalComputeQueueDeviceCreateInfoNV {
6855    #[inline]
6856    fn default() -> Self {
6857        Self {
6858            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV,
6859            next: ptr::null(),
6860            reserved_external_queues: u32::default(),
6861        }
6862    }
6863}
6864
6865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceProperties.html>
6866#[repr(C)]
6867#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6868pub struct ExternalFenceProperties {
6869    pub s_type: StructureType,
6870    pub next: *mut c_void,
6871    pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
6872    pub compatible_handle_types: ExternalFenceHandleTypeFlags,
6873    pub external_fence_features: ExternalFenceFeatureFlags,
6874}
6875
6876impl Default for ExternalFenceProperties {
6877    #[inline]
6878    fn default() -> Self {
6879        Self {
6880            s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
6881            next: ptr::null_mut(),
6882            export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
6883            compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
6884            external_fence_features: ExternalFenceFeatureFlags::default(),
6885        }
6886    }
6887}
6888
6889/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html>
6890#[repr(C)]
6891#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6892pub struct ExternalFormatANDROID {
6893    pub s_type: StructureType,
6894    pub next: *mut c_void,
6895    pub external_format: u64,
6896}
6897
6898impl Default for ExternalFormatANDROID {
6899    #[inline]
6900    fn default() -> Self {
6901        Self {
6902            s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
6903            next: ptr::null_mut(),
6904            external_format: u64::default(),
6905        }
6906    }
6907}
6908
6909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatQNX.html>
6910#[repr(C)]
6911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6912pub struct ExternalFormatQNX {
6913    pub s_type: StructureType,
6914    pub next: *mut c_void,
6915    pub external_format: u64,
6916}
6917
6918impl Default for ExternalFormatQNX {
6919    #[inline]
6920    fn default() -> Self {
6921        Self {
6922            s_type: StructureType::EXTERNAL_FORMAT_QNX,
6923            next: ptr::null_mut(),
6924            external_format: u64::default(),
6925        }
6926    }
6927}
6928
6929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html>
6930#[repr(C)]
6931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6932pub struct ExternalImageFormatProperties {
6933    pub s_type: StructureType,
6934    pub next: *mut c_void,
6935    pub external_memory_properties: ExternalMemoryProperties,
6936}
6937
6938impl Default for ExternalImageFormatProperties {
6939    #[inline]
6940    fn default() -> Self {
6941        Self {
6942            s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
6943            next: ptr::null_mut(),
6944            external_memory_properties: ExternalMemoryProperties::default(),
6945        }
6946    }
6947}
6948
6949/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html>
6950#[repr(C)]
6951#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6952pub struct ExternalImageFormatPropertiesNV {
6953    pub image_format_properties: ImageFormatProperties,
6954    pub external_memory_features: ExternalMemoryFeatureFlagsNV,
6955    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
6956    pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
6957}
6958
6959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html>
6960#[repr(C)]
6961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6962pub struct ExternalMemoryAcquireUnmodifiedEXT {
6963    pub s_type: StructureType,
6964    pub next: *const c_void,
6965    pub acquire_unmodified_memory: Bool32,
6966}
6967
6968impl Default for ExternalMemoryAcquireUnmodifiedEXT {
6969    #[inline]
6970    fn default() -> Self {
6971        Self {
6972            s_type: StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT,
6973            next: ptr::null(),
6974            acquire_unmodified_memory: Bool32::default(),
6975        }
6976    }
6977}
6978
6979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html>
6980#[repr(C)]
6981#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6982pub struct ExternalMemoryBufferCreateInfo {
6983    pub s_type: StructureType,
6984    pub next: *const c_void,
6985    pub handle_types: ExternalMemoryHandleTypeFlags,
6986}
6987
6988impl Default for ExternalMemoryBufferCreateInfo {
6989    #[inline]
6990    fn default() -> Self {
6991        Self {
6992            s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
6993            next: ptr::null(),
6994            handle_types: ExternalMemoryHandleTypeFlags::default(),
6995        }
6996    }
6997}
6998
6999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html>
7000#[repr(C)]
7001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7002pub struct ExternalMemoryImageCreateInfo {
7003    pub s_type: StructureType,
7004    pub next: *const c_void,
7005    pub handle_types: ExternalMemoryHandleTypeFlags,
7006}
7007
7008impl Default for ExternalMemoryImageCreateInfo {
7009    #[inline]
7010    fn default() -> Self {
7011        Self {
7012            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
7013            next: ptr::null(),
7014            handle_types: ExternalMemoryHandleTypeFlags::default(),
7015        }
7016    }
7017}
7018
7019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html>
7020#[repr(C)]
7021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7022pub struct ExternalMemoryImageCreateInfoNV {
7023    pub s_type: StructureType,
7024    pub next: *const c_void,
7025    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7026}
7027
7028impl Default for ExternalMemoryImageCreateInfoNV {
7029    #[inline]
7030    fn default() -> Self {
7031        Self {
7032            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
7033            next: ptr::null(),
7034            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7035        }
7036    }
7037}
7038
7039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html>
7040#[repr(C)]
7041#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7042pub struct ExternalMemoryProperties {
7043    pub external_memory_features: ExternalMemoryFeatureFlags,
7044    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
7045    pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
7046}
7047
7048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryTensorCreateInfoARM.html>
7049#[repr(C)]
7050#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7051pub struct ExternalMemoryTensorCreateInfoARM {
7052    pub s_type: StructureType,
7053    pub next: *const c_void,
7054    pub handle_types: ExternalMemoryHandleTypeFlags,
7055}
7056
7057impl Default for ExternalMemoryTensorCreateInfoARM {
7058    #[inline]
7059    fn default() -> Self {
7060        Self {
7061            s_type: StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM,
7062            next: ptr::null(),
7063            handle_types: ExternalMemoryHandleTypeFlags::default(),
7064        }
7065    }
7066}
7067
7068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html>
7069#[repr(C)]
7070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7071pub struct ExternalSemaphoreProperties {
7072    pub s_type: StructureType,
7073    pub next: *mut c_void,
7074    pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
7075    pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
7076    pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
7077}
7078
7079impl Default for ExternalSemaphoreProperties {
7080    #[inline]
7081    fn default() -> Self {
7082        Self {
7083            s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
7084            next: ptr::null_mut(),
7085            export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7086            compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7087            external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
7088        }
7089    }
7090}
7091
7092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalTensorPropertiesARM.html>
7093#[repr(C)]
7094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7095pub struct ExternalTensorPropertiesARM {
7096    pub s_type: StructureType,
7097    pub next: *const c_void,
7098    pub external_memory_properties: ExternalMemoryProperties,
7099}
7100
7101impl Default for ExternalTensorPropertiesARM {
7102    #[inline]
7103    fn default() -> Self {
7104        Self {
7105            s_type: StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM,
7106            next: ptr::null(),
7107            external_memory_properties: ExternalMemoryProperties::default(),
7108        }
7109    }
7110}
7111
7112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateInfo.html>
7113#[repr(C)]
7114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7115pub struct FenceCreateInfo {
7116    pub s_type: StructureType,
7117    pub next: *const c_void,
7118    pub flags: FenceCreateFlags,
7119}
7120
7121impl Default for FenceCreateInfo {
7122    #[inline]
7123    fn default() -> Self {
7124        Self {
7125            s_type: StructureType::FENCE_CREATE_INFO,
7126            next: ptr::null(),
7127            flags: FenceCreateFlags::default(),
7128        }
7129    }
7130}
7131
7132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html>
7133#[repr(C)]
7134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7135pub struct FenceGetFdInfoKHR {
7136    pub s_type: StructureType,
7137    pub next: *const c_void,
7138    pub fence: Fence,
7139    pub handle_type: ExternalFenceHandleTypeFlags,
7140}
7141
7142impl Default for FenceGetFdInfoKHR {
7143    #[inline]
7144    fn default() -> Self {
7145        Self {
7146            s_type: StructureType::FENCE_GET_FD_INFO_KHR,
7147            next: ptr::null(),
7148            fence: Fence::default(),
7149            handle_type: ExternalFenceHandleTypeFlags::default(),
7150        }
7151    }
7152}
7153
7154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetSciSyncInfoNV.html>
7155#[repr(C)]
7156#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7157pub struct FenceGetSciSyncInfoNV {
7158    pub s_type: StructureType,
7159    pub next: *const c_void,
7160    pub fence: Fence,
7161    pub handle_type: ExternalFenceHandleTypeFlags,
7162}
7163
7164impl Default for FenceGetSciSyncInfoNV {
7165    #[inline]
7166    fn default() -> Self {
7167        Self {
7168            s_type: StructureType::FENCE_GET_SCI_SYNC_INFO_NV,
7169            next: ptr::null(),
7170            fence: Fence::default(),
7171            handle_type: ExternalFenceHandleTypeFlags::default(),
7172        }
7173    }
7174}
7175
7176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html>
7177#[repr(C)]
7178#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7179pub struct FenceGetWin32HandleInfoKHR {
7180    pub s_type: StructureType,
7181    pub next: *const c_void,
7182    pub fence: Fence,
7183    pub handle_type: ExternalFenceHandleTypeFlags,
7184}
7185
7186impl Default for FenceGetWin32HandleInfoKHR {
7187    #[inline]
7188    fn default() -> Self {
7189        Self {
7190            s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
7191            next: ptr::null(),
7192            fence: Fence::default(),
7193            handle_type: ExternalFenceHandleTypeFlags::default(),
7194        }
7195    }
7196}
7197
7198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>
7199#[repr(C)]
7200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7201pub struct FilterCubicImageViewImageFormatPropertiesEXT {
7202    pub s_type: StructureType,
7203    pub next: *mut c_void,
7204    pub filter_cubic: Bool32,
7205    pub filter_cubic_minmax: Bool32,
7206}
7207
7208impl Default for FilterCubicImageViewImageFormatPropertiesEXT {
7209    #[inline]
7210    fn default() -> Self {
7211        Self {
7212            s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
7213            next: ptr::null_mut(),
7214            filter_cubic: Bool32::default(),
7215            filter_cubic_minmax: Bool32::default(),
7216        }
7217    }
7218}
7219
7220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties.html>
7221#[repr(C)]
7222#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7223pub struct FormatProperties {
7224    pub linear_tiling_features: FormatFeatureFlags,
7225    pub optimal_tiling_features: FormatFeatureFlags,
7226    pub buffer_features: FormatFeatureFlags,
7227}
7228
7229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2.html>
7230#[repr(C)]
7231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7232pub struct FormatProperties2 {
7233    pub s_type: StructureType,
7234    pub next: *mut c_void,
7235    pub format_properties: FormatProperties,
7236}
7237
7238impl Default for FormatProperties2 {
7239    #[inline]
7240    fn default() -> Self {
7241        Self {
7242            s_type: StructureType::FORMAT_PROPERTIES_2,
7243            next: ptr::null_mut(),
7244            format_properties: FormatProperties::default(),
7245        }
7246    }
7247}
7248
7249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3.html>
7250#[repr(C)]
7251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7252pub struct FormatProperties3 {
7253    pub s_type: StructureType,
7254    pub next: *mut c_void,
7255    pub linear_tiling_features: FormatFeatureFlags2,
7256    pub optimal_tiling_features: FormatFeatureFlags2,
7257    pub buffer_features: FormatFeatureFlags2,
7258}
7259
7260impl Default for FormatProperties3 {
7261    #[inline]
7262    fn default() -> Self {
7263        Self {
7264            s_type: StructureType::FORMAT_PROPERTIES_3,
7265            next: ptr::null_mut(),
7266            linear_tiling_features: FormatFeatureFlags2::default(),
7267            optimal_tiling_features: FormatFeatureFlags2::default(),
7268            buffer_features: FormatFeatureFlags2::default(),
7269        }
7270    }
7271}
7272
7273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>
7274#[repr(C)]
7275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7276pub struct FragmentShadingRateAttachmentInfoKHR {
7277    pub s_type: StructureType,
7278    pub next: *const c_void,
7279    pub fragment_shading_rate_attachment: *const AttachmentReference2,
7280    pub shading_rate_attachment_texel_size: Extent2D,
7281}
7282
7283impl Default for FragmentShadingRateAttachmentInfoKHR {
7284    #[inline]
7285    fn default() -> Self {
7286        Self {
7287            s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
7288            next: ptr::null(),
7289            fragment_shading_rate_attachment: ptr::null(),
7290            shading_rate_attachment_texel_size: Extent2D::default(),
7291        }
7292    }
7293}
7294
7295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html>
7296#[repr(C)]
7297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7298pub struct FrameBoundaryEXT {
7299    pub s_type: StructureType,
7300    pub next: *const c_void,
7301    pub flags: FrameBoundaryFlagsEXT,
7302    pub frame_id: u64,
7303    pub image_count: u32,
7304    pub images: *const Image,
7305    pub buffer_count: u32,
7306    pub buffers: *const Buffer,
7307    pub tag_name: u64,
7308    pub tag_size: usize,
7309    pub tag: *const c_void,
7310}
7311
7312impl Default for FrameBoundaryEXT {
7313    #[inline]
7314    fn default() -> Self {
7315        Self {
7316            s_type: StructureType::FRAME_BOUNDARY_EXT,
7317            next: ptr::null(),
7318            flags: FrameBoundaryFlagsEXT::default(),
7319            frame_id: u64::default(),
7320            image_count: u32::default(),
7321            images: ptr::null(),
7322            buffer_count: u32::default(),
7323            buffers: ptr::null(),
7324            tag_name: u64::default(),
7325            tag_size: usize::default(),
7326            tag: ptr::null(),
7327        }
7328    }
7329}
7330
7331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryTensorsARM.html>
7332#[repr(C)]
7333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7334pub struct FrameBoundaryTensorsARM {
7335    pub s_type: StructureType,
7336    pub next: *const c_void,
7337    pub tensor_count: u32,
7338    pub tensors: *const TensorARM,
7339}
7340
7341impl Default for FrameBoundaryTensorsARM {
7342    #[inline]
7343    fn default() -> Self {
7344        Self {
7345            s_type: StructureType::FRAME_BOUNDARY_TENSORS_ARM,
7346            next: ptr::null(),
7347            tensor_count: u32::default(),
7348            tensors: ptr::null(),
7349        }
7350    }
7351}
7352
7353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html>
7354#[repr(C)]
7355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7356pub struct FramebufferAttachmentImageInfo {
7357    pub s_type: StructureType,
7358    pub next: *const c_void,
7359    pub flags: ImageCreateFlags,
7360    pub usage: ImageUsageFlags,
7361    pub width: u32,
7362    pub height: u32,
7363    pub layer_count: u32,
7364    pub view_format_count: u32,
7365    pub view_formats: *const Format,
7366}
7367
7368impl Default for FramebufferAttachmentImageInfo {
7369    #[inline]
7370    fn default() -> Self {
7371        Self {
7372            s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
7373            next: ptr::null(),
7374            flags: ImageCreateFlags::default(),
7375            usage: ImageUsageFlags::default(),
7376            width: u32::default(),
7377            height: u32::default(),
7378            layer_count: u32::default(),
7379            view_format_count: u32::default(),
7380            view_formats: ptr::null(),
7381        }
7382    }
7383}
7384
7385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html>
7386#[repr(C)]
7387#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7388pub struct FramebufferAttachmentsCreateInfo {
7389    pub s_type: StructureType,
7390    pub next: *const c_void,
7391    pub attachment_image_info_count: u32,
7392    pub attachment_image_infos: *const FramebufferAttachmentImageInfo,
7393}
7394
7395impl Default for FramebufferAttachmentsCreateInfo {
7396    #[inline]
7397    fn default() -> Self {
7398        Self {
7399            s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
7400            next: ptr::null(),
7401            attachment_image_info_count: u32::default(),
7402            attachment_image_infos: ptr::null(),
7403        }
7404    }
7405}
7406
7407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html>
7408#[repr(C)]
7409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7410pub struct FramebufferCreateInfo {
7411    pub s_type: StructureType,
7412    pub next: *const c_void,
7413    pub flags: FramebufferCreateFlags,
7414    pub render_pass: RenderPass,
7415    pub attachment_count: u32,
7416    pub attachments: *const ImageView,
7417    pub width: u32,
7418    pub height: u32,
7419    pub layers: u32,
7420}
7421
7422impl Default for FramebufferCreateInfo {
7423    #[inline]
7424    fn default() -> Self {
7425        Self {
7426            s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
7427            next: ptr::null(),
7428            flags: FramebufferCreateFlags::default(),
7429            render_pass: RenderPass::default(),
7430            attachment_count: u32::default(),
7431            attachments: ptr::null(),
7432            width: u32::default(),
7433            height: u32::default(),
7434            layers: u32::default(),
7435        }
7436    }
7437}
7438
7439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html>
7440#[repr(C)]
7441#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7442pub struct FramebufferMixedSamplesCombinationNV {
7443    pub s_type: StructureType,
7444    pub next: *mut c_void,
7445    pub coverage_reduction_mode: CoverageReductionModeNV,
7446    pub rasterization_samples: SampleCountFlags,
7447    pub depth_stencil_samples: SampleCountFlags,
7448    pub color_samples: SampleCountFlags,
7449}
7450
7451impl Default for FramebufferMixedSamplesCombinationNV {
7452    #[inline]
7453    fn default() -> Self {
7454        Self {
7455            s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
7456            next: ptr::null_mut(),
7457            coverage_reduction_mode: CoverageReductionModeNV::default(),
7458            rasterization_samples: SampleCountFlags::default(),
7459            depth_stencil_samples: SampleCountFlags::default(),
7460            color_samples: SampleCountFlags::default(),
7461        }
7462    }
7463}
7464
7465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html>
7466#[repr(C)]
7467#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7468pub struct GeneratedCommandsInfoEXT {
7469    pub s_type: StructureType,
7470    pub next: *const c_void,
7471    pub shader_stages: ShaderStageFlags,
7472    pub indirect_execution_set: IndirectExecutionSetEXT,
7473    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
7474    pub indirect_address: DeviceAddress,
7475    pub indirect_address_size: DeviceSize,
7476    pub preprocess_address: DeviceAddress,
7477    pub preprocess_size: DeviceSize,
7478    pub max_sequence_count: u32,
7479    pub sequence_count_address: DeviceAddress,
7480    pub max_draw_count: u32,
7481}
7482
7483impl Default for GeneratedCommandsInfoEXT {
7484    #[inline]
7485    fn default() -> Self {
7486        Self {
7487            s_type: StructureType::GENERATED_COMMANDS_INFO_EXT,
7488            next: ptr::null(),
7489            shader_stages: ShaderStageFlags::default(),
7490            indirect_execution_set: IndirectExecutionSetEXT::default(),
7491            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
7492            indirect_address: DeviceAddress::default(),
7493            indirect_address_size: DeviceSize::default(),
7494            preprocess_address: DeviceAddress::default(),
7495            preprocess_size: DeviceSize::default(),
7496            max_sequence_count: u32::default(),
7497            sequence_count_address: DeviceAddress::default(),
7498            max_draw_count: u32::default(),
7499        }
7500    }
7501}
7502
7503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html>
7504#[repr(C)]
7505#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7506pub struct GeneratedCommandsInfoNV {
7507    pub s_type: StructureType,
7508    pub next: *const c_void,
7509    pub pipeline_bind_point: PipelineBindPoint,
7510    pub pipeline: Pipeline,
7511    pub indirect_commands_layout: IndirectCommandsLayoutNV,
7512    pub stream_count: u32,
7513    pub streams: *const IndirectCommandsStreamNV,
7514    pub sequences_count: u32,
7515    pub preprocess_buffer: Buffer,
7516    pub preprocess_offset: DeviceSize,
7517    pub preprocess_size: DeviceSize,
7518    pub sequences_count_buffer: Buffer,
7519    pub sequences_count_offset: DeviceSize,
7520    pub sequences_index_buffer: Buffer,
7521    pub sequences_index_offset: DeviceSize,
7522}
7523
7524impl Default for GeneratedCommandsInfoNV {
7525    #[inline]
7526    fn default() -> Self {
7527        Self {
7528            s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
7529            next: ptr::null(),
7530            pipeline_bind_point: PipelineBindPoint::default(),
7531            pipeline: Pipeline::default(),
7532            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
7533            stream_count: u32::default(),
7534            streams: ptr::null(),
7535            sequences_count: u32::default(),
7536            preprocess_buffer: Buffer::default(),
7537            preprocess_offset: DeviceSize::default(),
7538            preprocess_size: DeviceSize::default(),
7539            sequences_count_buffer: Buffer::default(),
7540            sequences_count_offset: DeviceSize::default(),
7541            sequences_index_buffer: Buffer::default(),
7542            sequences_index_offset: DeviceSize::default(),
7543        }
7544    }
7545}
7546
7547/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html>
7548#[repr(C)]
7549#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7550pub struct GeneratedCommandsMemoryRequirementsInfoEXT {
7551    pub s_type: StructureType,
7552    pub next: *const c_void,
7553    pub indirect_execution_set: IndirectExecutionSetEXT,
7554    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
7555    pub max_sequence_count: u32,
7556    pub max_draw_count: u32,
7557}
7558
7559impl Default for GeneratedCommandsMemoryRequirementsInfoEXT {
7560    #[inline]
7561    fn default() -> Self {
7562        Self {
7563            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT,
7564            next: ptr::null(),
7565            indirect_execution_set: IndirectExecutionSetEXT::default(),
7566            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
7567            max_sequence_count: u32::default(),
7568            max_draw_count: u32::default(),
7569        }
7570    }
7571}
7572
7573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>
7574#[repr(C)]
7575#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7576pub struct GeneratedCommandsMemoryRequirementsInfoNV {
7577    pub s_type: StructureType,
7578    pub next: *const c_void,
7579    pub pipeline_bind_point: PipelineBindPoint,
7580    pub pipeline: Pipeline,
7581    pub indirect_commands_layout: IndirectCommandsLayoutNV,
7582    pub max_sequences_count: u32,
7583}
7584
7585impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
7586    #[inline]
7587    fn default() -> Self {
7588        Self {
7589            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
7590            next: ptr::null(),
7591            pipeline_bind_point: PipelineBindPoint::default(),
7592            pipeline: Pipeline::default(),
7593            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
7594            max_sequences_count: u32::default(),
7595        }
7596    }
7597}
7598
7599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html>
7600#[repr(C)]
7601#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7602pub struct GeneratedCommandsPipelineInfoEXT {
7603    pub s_type: StructureType,
7604    pub next: *mut c_void,
7605    pub pipeline: Pipeline,
7606}
7607
7608impl Default for GeneratedCommandsPipelineInfoEXT {
7609    #[inline]
7610    fn default() -> Self {
7611        Self {
7612            s_type: StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT,
7613            next: ptr::null_mut(),
7614            pipeline: Pipeline::default(),
7615        }
7616    }
7617}
7618
7619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html>
7620#[repr(C)]
7621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7622pub struct GeneratedCommandsShaderInfoEXT {
7623    pub s_type: StructureType,
7624    pub next: *mut c_void,
7625    pub shader_count: u32,
7626    pub shaders: *const ShaderEXT,
7627}
7628
7629impl Default for GeneratedCommandsShaderInfoEXT {
7630    #[inline]
7631    fn default() -> Self {
7632        Self {
7633            s_type: StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT,
7634            next: ptr::null_mut(),
7635            shader_count: u32::default(),
7636            shaders: ptr::null(),
7637        }
7638    }
7639}
7640
7641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryAABBNV.html>
7642#[repr(C)]
7643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7644pub struct GeometryAABBNV {
7645    pub s_type: StructureType,
7646    pub next: *const c_void,
7647    pub aabb_data: Buffer,
7648    pub num_aab_bs: u32,
7649    pub stride: u32,
7650    pub offset: DeviceSize,
7651}
7652
7653impl Default for GeometryAABBNV {
7654    #[inline]
7655    fn default() -> Self {
7656        Self {
7657            s_type: StructureType::GEOMETRY_AABB_NV,
7658            next: ptr::null(),
7659            aabb_data: Buffer::default(),
7660            num_aab_bs: u32::default(),
7661            stride: u32::default(),
7662            offset: DeviceSize::default(),
7663        }
7664    }
7665}
7666
7667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryDataNV.html>
7668#[repr(C)]
7669#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7670pub struct GeometryDataNV {
7671    pub triangles: GeometryTrianglesNV,
7672    pub aabbs: GeometryAABBNV,
7673}
7674
7675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryNV.html>
7676#[repr(C)]
7677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7678pub struct GeometryNV {
7679    pub s_type: StructureType,
7680    pub next: *const c_void,
7681    pub geometry_type: GeometryTypeKHR,
7682    pub geometry: GeometryDataNV,
7683    pub flags: GeometryFlagsKHR,
7684}
7685
7686impl Default for GeometryNV {
7687    #[inline]
7688    fn default() -> Self {
7689        Self {
7690            s_type: StructureType::GEOMETRY_NV,
7691            next: ptr::null(),
7692            geometry_type: GeometryTypeKHR::default(),
7693            geometry: GeometryDataNV::default(),
7694            flags: GeometryFlagsKHR::default(),
7695        }
7696    }
7697}
7698
7699/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html>
7700#[repr(C)]
7701#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7702pub struct GeometryTrianglesNV {
7703    pub s_type: StructureType,
7704    pub next: *const c_void,
7705    pub vertex_data: Buffer,
7706    pub vertex_offset: DeviceSize,
7707    pub vertex_count: u32,
7708    pub vertex_stride: DeviceSize,
7709    pub vertex_format: Format,
7710    pub index_data: Buffer,
7711    pub index_offset: DeviceSize,
7712    pub index_count: u32,
7713    pub index_type: IndexType,
7714    pub transform_data: Buffer,
7715    pub transform_offset: DeviceSize,
7716}
7717
7718impl Default for GeometryTrianglesNV {
7719    #[inline]
7720    fn default() -> Self {
7721        Self {
7722            s_type: StructureType::GEOMETRY_TRIANGLES_NV,
7723            next: ptr::null(),
7724            vertex_data: Buffer::default(),
7725            vertex_offset: DeviceSize::default(),
7726            vertex_count: u32::default(),
7727            vertex_stride: DeviceSize::default(),
7728            vertex_format: Format::default(),
7729            index_data: Buffer::default(),
7730            index_offset: DeviceSize::default(),
7731            index_count: u32::default(),
7732            index_type: IndexType::default(),
7733            transform_data: Buffer::default(),
7734            transform_offset: DeviceSize::default(),
7735        }
7736    }
7737}
7738
7739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html>
7740#[repr(C)]
7741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7742pub struct GetLatencyMarkerInfoNV {
7743    pub s_type: StructureType,
7744    pub next: *const c_void,
7745    pub timing_count: u32,
7746    pub timings: *mut LatencyTimingsFrameReportNV,
7747}
7748
7749impl Default for GetLatencyMarkerInfoNV {
7750    #[inline]
7751    fn default() -> Self {
7752        Self {
7753            s_type: StructureType::GET_LATENCY_MARKER_INFO_NV,
7754            next: ptr::null(),
7755            timing_count: u32::default(),
7756            timings: ptr::null_mut(),
7757        }
7758    }
7759}
7760
7761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html>
7762#[repr(C)]
7763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7764pub struct GraphicsPipelineCreateInfo {
7765    pub s_type: StructureType,
7766    pub next: *const c_void,
7767    pub flags: PipelineCreateFlags,
7768    pub stage_count: u32,
7769    pub stages: *const PipelineShaderStageCreateInfo,
7770    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
7771    pub input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
7772    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
7773    pub viewport_state: *const PipelineViewportStateCreateInfo,
7774    pub rasterization_state: *const PipelineRasterizationStateCreateInfo,
7775    pub multisample_state: *const PipelineMultisampleStateCreateInfo,
7776    pub depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
7777    pub color_blend_state: *const PipelineColorBlendStateCreateInfo,
7778    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
7779    pub layout: PipelineLayout,
7780    pub render_pass: RenderPass,
7781    pub subpass: u32,
7782    pub base_pipeline_handle: Pipeline,
7783    pub base_pipeline_index: i32,
7784}
7785
7786impl Default for GraphicsPipelineCreateInfo {
7787    #[inline]
7788    fn default() -> Self {
7789        Self {
7790            s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
7791            next: ptr::null(),
7792            flags: PipelineCreateFlags::default(),
7793            stage_count: u32::default(),
7794            stages: ptr::null(),
7795            vertex_input_state: ptr::null(),
7796            input_assembly_state: ptr::null(),
7797            tessellation_state: ptr::null(),
7798            viewport_state: ptr::null(),
7799            rasterization_state: ptr::null(),
7800            multisample_state: ptr::null(),
7801            depth_stencil_state: ptr::null(),
7802            color_blend_state: ptr::null(),
7803            dynamic_state: ptr::null(),
7804            layout: PipelineLayout::default(),
7805            render_pass: RenderPass::default(),
7806            subpass: u32::default(),
7807            base_pipeline_handle: Pipeline::default(),
7808            base_pipeline_index: i32::default(),
7809        }
7810    }
7811}
7812
7813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html>
7814#[repr(C)]
7815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7816pub struct GraphicsPipelineLibraryCreateInfoEXT {
7817    pub s_type: StructureType,
7818    pub next: *const c_void,
7819    pub flags: GraphicsPipelineLibraryFlagsEXT,
7820}
7821
7822impl Default for GraphicsPipelineLibraryCreateInfoEXT {
7823    #[inline]
7824    fn default() -> Self {
7825        Self {
7826            s_type: StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,
7827            next: ptr::null(),
7828            flags: GraphicsPipelineLibraryFlagsEXT::default(),
7829        }
7830    }
7831}
7832
7833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>
7834#[repr(C)]
7835#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7836pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
7837    pub s_type: StructureType,
7838    pub next: *const c_void,
7839    pub group_count: u32,
7840    pub groups: *const GraphicsShaderGroupCreateInfoNV,
7841    pub pipeline_count: u32,
7842    pub pipelines: *const Pipeline,
7843}
7844
7845impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
7846    #[inline]
7847    fn default() -> Self {
7848        Self {
7849            s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
7850            next: ptr::null(),
7851            group_count: u32::default(),
7852            groups: ptr::null(),
7853            pipeline_count: u32::default(),
7854            pipelines: ptr::null(),
7855        }
7856    }
7857}
7858
7859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html>
7860#[repr(C)]
7861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7862pub struct GraphicsShaderGroupCreateInfoNV {
7863    pub s_type: StructureType,
7864    pub next: *const c_void,
7865    pub stage_count: u32,
7866    pub stages: *const PipelineShaderStageCreateInfo,
7867    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
7868    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
7869}
7870
7871impl Default for GraphicsShaderGroupCreateInfoNV {
7872    #[inline]
7873    fn default() -> Self {
7874        Self {
7875            s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
7876            next: ptr::null(),
7877            stage_count: u32::default(),
7878            stages: ptr::null(),
7879            vertex_input_state: ptr::null(),
7880            tessellation_state: ptr::null(),
7881        }
7882    }
7883}
7884
7885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html>
7886#[repr(C)]
7887#[derive(Copy, Clone, Debug, PartialEq)]
7888pub struct HdrMetadataEXT {
7889    pub s_type: StructureType,
7890    pub next: *const c_void,
7891    pub display_primary_red: XYColorEXT,
7892    pub display_primary_green: XYColorEXT,
7893    pub display_primary_blue: XYColorEXT,
7894    pub white_point: XYColorEXT,
7895    pub max_luminance: f32,
7896    pub min_luminance: f32,
7897    pub max_content_light_level: f32,
7898    pub max_frame_average_light_level: f32,
7899}
7900
7901impl Default for HdrMetadataEXT {
7902    #[inline]
7903    fn default() -> Self {
7904        Self {
7905            s_type: StructureType::HDR_METADATA_EXT,
7906            next: ptr::null(),
7907            display_primary_red: XYColorEXT::default(),
7908            display_primary_green: XYColorEXT::default(),
7909            display_primary_blue: XYColorEXT::default(),
7910            white_point: XYColorEXT::default(),
7911            max_luminance: f32::default(),
7912            min_luminance: f32::default(),
7913            max_content_light_level: f32::default(),
7914            max_frame_average_light_level: f32::default(),
7915        }
7916    }
7917}
7918
7919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html>
7920#[repr(C)]
7921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7922pub struct HdrVividDynamicMetadataHUAWEI {
7923    pub s_type: StructureType,
7924    pub next: *const c_void,
7925    pub dynamic_metadata_size: usize,
7926    pub dynamic_metadata: *const c_void,
7927}
7928
7929impl Default for HdrVividDynamicMetadataHUAWEI {
7930    #[inline]
7931    fn default() -> Self {
7932        Self {
7933            s_type: StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI,
7934            next: ptr::null(),
7935            dynamic_metadata_size: usize::default(),
7936            dynamic_metadata: ptr::null(),
7937        }
7938    }
7939}
7940
7941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html>
7942#[repr(C)]
7943#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7944pub struct HeadlessSurfaceCreateInfoEXT {
7945    pub s_type: StructureType,
7946    pub next: *const c_void,
7947    pub flags: HeadlessSurfaceCreateFlagsEXT,
7948}
7949
7950impl Default for HeadlessSurfaceCreateInfoEXT {
7951    #[inline]
7952    fn default() -> Self {
7953        Self {
7954            s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
7955            next: ptr::null(),
7956            flags: HeadlessSurfaceCreateFlagsEXT::default(),
7957        }
7958    }
7959}
7960
7961/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html>
7962#[repr(C)]
7963#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7964pub struct HostImageCopyDevicePerformanceQuery {
7965    pub s_type: StructureType,
7966    pub next: *mut c_void,
7967    pub optimal_device_access: Bool32,
7968    pub identical_memory_layout: Bool32,
7969}
7970
7971impl Default for HostImageCopyDevicePerformanceQuery {
7972    #[inline]
7973    fn default() -> Self {
7974        Self {
7975            s_type: StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,
7976            next: ptr::null_mut(),
7977            optimal_device_access: Bool32::default(),
7978            identical_memory_layout: Bool32::default(),
7979        }
7980    }
7981}
7982
7983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html>
7984#[repr(C)]
7985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7986pub struct HostImageLayoutTransitionInfo {
7987    pub s_type: StructureType,
7988    pub next: *const c_void,
7989    pub image: Image,
7990    pub old_layout: ImageLayout,
7991    pub new_layout: ImageLayout,
7992    pub subresource_range: ImageSubresourceRange,
7993}
7994
7995impl Default for HostImageLayoutTransitionInfo {
7996    #[inline]
7997    fn default() -> Self {
7998        Self {
7999            s_type: StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO,
8000            next: ptr::null(),
8001            image: Image::default(),
8002            old_layout: ImageLayout::default(),
8003            new_layout: ImageLayout::default(),
8004            subresource_range: ImageSubresourceRange::default(),
8005        }
8006    }
8007}
8008
8009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html>
8010#[repr(C)]
8011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8012pub struct IOSSurfaceCreateInfoMVK {
8013    pub s_type: StructureType,
8014    pub next: *const c_void,
8015    pub flags: IOSSurfaceCreateFlagsMVK,
8016    pub view: *const c_void,
8017}
8018
8019impl Default for IOSSurfaceCreateInfoMVK {
8020    #[inline]
8021    fn default() -> Self {
8022        Self {
8023            s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
8024            next: ptr::null(),
8025            flags: IOSSurfaceCreateFlagsMVK::default(),
8026            view: ptr::null(),
8027        }
8028    }
8029}
8030
8031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html>
8032#[repr(C)]
8033#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8034pub struct ImageAlignmentControlCreateInfoMESA {
8035    pub s_type: StructureType,
8036    pub next: *const c_void,
8037    pub maximum_requested_alignment: u32,
8038}
8039
8040impl Default for ImageAlignmentControlCreateInfoMESA {
8041    #[inline]
8042    fn default() -> Self {
8043        Self {
8044            s_type: StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA,
8045            next: ptr::null(),
8046            maximum_requested_alignment: u32::default(),
8047        }
8048    }
8049}
8050
8051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit.html>
8052#[repr(C)]
8053#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8054pub struct ImageBlit {
8055    pub src_subresource: ImageSubresourceLayers,
8056    pub src_offsets: [Offset3D; 2],
8057    pub dst_subresource: ImageSubresourceLayers,
8058    pub dst_offsets: [Offset3D; 2],
8059}
8060
8061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2.html>
8062#[repr(C)]
8063#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8064pub struct ImageBlit2 {
8065    pub s_type: StructureType,
8066    pub next: *const c_void,
8067    pub src_subresource: ImageSubresourceLayers,
8068    pub src_offsets: [Offset3D; 2],
8069    pub dst_subresource: ImageSubresourceLayers,
8070    pub dst_offsets: [Offset3D; 2],
8071}
8072
8073impl Default for ImageBlit2 {
8074    #[inline]
8075    fn default() -> Self {
8076        Self {
8077            s_type: StructureType::IMAGE_BLIT_2,
8078            next: ptr::null(),
8079            src_subresource: ImageSubresourceLayers::default(),
8080            src_offsets: [Offset3D::default(); 2],
8081            dst_subresource: ImageSubresourceLayers::default(),
8082            dst_offsets: [Offset3D::default(); 2],
8083        }
8084    }
8085}
8086
8087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html>
8088#[repr(C)]
8089#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8090pub struct ImageCaptureDescriptorDataInfoEXT {
8091    pub s_type: StructureType,
8092    pub next: *const c_void,
8093    pub image: Image,
8094}
8095
8096impl Default for ImageCaptureDescriptorDataInfoEXT {
8097    #[inline]
8098    fn default() -> Self {
8099        Self {
8100            s_type: StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
8101            next: ptr::null(),
8102            image: Image::default(),
8103        }
8104    }
8105}
8106
8107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html>
8108#[repr(C)]
8109#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8110pub struct ImageCompressionControlEXT {
8111    pub s_type: StructureType,
8112    pub next: *const c_void,
8113    pub flags: ImageCompressionFlagsEXT,
8114    pub compression_control_plane_count: u32,
8115    pub fixed_rate_flags: *mut ImageCompressionFixedRateFlagsEXT,
8116}
8117
8118impl Default for ImageCompressionControlEXT {
8119    #[inline]
8120    fn default() -> Self {
8121        Self {
8122            s_type: StructureType::IMAGE_COMPRESSION_CONTROL_EXT,
8123            next: ptr::null(),
8124            flags: ImageCompressionFlagsEXT::default(),
8125            compression_control_plane_count: u32::default(),
8126            fixed_rate_flags: ptr::null_mut(),
8127        }
8128    }
8129}
8130
8131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html>
8132#[repr(C)]
8133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8134pub struct ImageCompressionPropertiesEXT {
8135    pub s_type: StructureType,
8136    pub next: *mut c_void,
8137    pub image_compression_flags: ImageCompressionFlagsEXT,
8138    pub image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT,
8139}
8140
8141impl Default for ImageCompressionPropertiesEXT {
8142    #[inline]
8143    fn default() -> Self {
8144        Self {
8145            s_type: StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT,
8146            next: ptr::null_mut(),
8147            image_compression_flags: ImageCompressionFlagsEXT::default(),
8148            image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT::default(),
8149        }
8150    }
8151}
8152
8153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html>
8154#[repr(C)]
8155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8156pub struct ImageConstraintsInfoFUCHSIA {
8157    pub s_type: StructureType,
8158    pub next: *const c_void,
8159    pub format_constraints_count: u32,
8160    pub format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
8161    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
8162    pub flags: ImageConstraintsInfoFlagsFUCHSIA,
8163}
8164
8165impl Default for ImageConstraintsInfoFUCHSIA {
8166    #[inline]
8167    fn default() -> Self {
8168        Self {
8169            s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
8170            next: ptr::null(),
8171            format_constraints_count: u32::default(),
8172            format_constraints: ptr::null(),
8173            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
8174            flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
8175        }
8176    }
8177}
8178
8179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy.html>
8180#[repr(C)]
8181#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8182pub struct ImageCopy {
8183    pub src_subresource: ImageSubresourceLayers,
8184    pub src_offset: Offset3D,
8185    pub dst_subresource: ImageSubresourceLayers,
8186    pub dst_offset: Offset3D,
8187    pub extent: Extent3D,
8188}
8189
8190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2.html>
8191#[repr(C)]
8192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8193pub struct ImageCopy2 {
8194    pub s_type: StructureType,
8195    pub next: *const c_void,
8196    pub src_subresource: ImageSubresourceLayers,
8197    pub src_offset: Offset3D,
8198    pub dst_subresource: ImageSubresourceLayers,
8199    pub dst_offset: Offset3D,
8200    pub extent: Extent3D,
8201}
8202
8203impl Default for ImageCopy2 {
8204    #[inline]
8205    fn default() -> Self {
8206        Self {
8207            s_type: StructureType::IMAGE_COPY_2,
8208            next: ptr::null(),
8209            src_subresource: ImageSubresourceLayers::default(),
8210            src_offset: Offset3D::default(),
8211            dst_subresource: ImageSubresourceLayers::default(),
8212            dst_offset: Offset3D::default(),
8213            extent: Extent3D::default(),
8214        }
8215    }
8216}
8217
8218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateInfo.html>
8219#[repr(C)]
8220#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8221pub struct ImageCreateInfo {
8222    pub s_type: StructureType,
8223    pub next: *const c_void,
8224    pub flags: ImageCreateFlags,
8225    pub image_type: ImageType,
8226    pub format: Format,
8227    pub extent: Extent3D,
8228    pub mip_levels: u32,
8229    pub array_layers: u32,
8230    pub samples: SampleCountFlags,
8231    pub tiling: ImageTiling,
8232    pub usage: ImageUsageFlags,
8233    pub sharing_mode: SharingMode,
8234    pub queue_family_index_count: u32,
8235    pub queue_family_indices: *const u32,
8236    pub initial_layout: ImageLayout,
8237}
8238
8239impl Default for ImageCreateInfo {
8240    #[inline]
8241    fn default() -> Self {
8242        Self {
8243            s_type: StructureType::IMAGE_CREATE_INFO,
8244            next: ptr::null(),
8245            flags: ImageCreateFlags::default(),
8246            image_type: ImageType::default(),
8247            format: Format::default(),
8248            extent: Extent3D::default(),
8249            mip_levels: u32::default(),
8250            array_layers: u32::default(),
8251            samples: SampleCountFlags::default(),
8252            tiling: ImageTiling::default(),
8253            usage: ImageUsageFlags::default(),
8254            sharing_mode: SharingMode::default(),
8255            queue_family_index_count: u32::default(),
8256            queue_family_indices: ptr::null(),
8257            initial_layout: ImageLayout::default(),
8258        }
8259    }
8260}
8261
8262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>
8263#[repr(C)]
8264#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8265pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
8266    pub s_type: StructureType,
8267    pub next: *const c_void,
8268    pub drm_format_modifier: u64,
8269    pub drm_format_modifier_plane_count: u32,
8270    pub plane_layouts: *const SubresourceLayout,
8271}
8272
8273impl Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
8274    #[inline]
8275    fn default() -> Self {
8276        Self {
8277            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
8278            next: ptr::null(),
8279            drm_format_modifier: u64::default(),
8280            drm_format_modifier_plane_count: u32::default(),
8281            plane_layouts: ptr::null(),
8282        }
8283    }
8284}
8285
8286/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>
8287#[repr(C)]
8288#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8289pub struct ImageDrmFormatModifierListCreateInfoEXT {
8290    pub s_type: StructureType,
8291    pub next: *const c_void,
8292    pub drm_format_modifier_count: u32,
8293    pub drm_format_modifiers: *const u64,
8294}
8295
8296impl Default for ImageDrmFormatModifierListCreateInfoEXT {
8297    #[inline]
8298    fn default() -> Self {
8299        Self {
8300            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
8301            next: ptr::null(),
8302            drm_format_modifier_count: u32::default(),
8303            drm_format_modifiers: ptr::null(),
8304        }
8305    }
8306}
8307
8308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html>
8309#[repr(C)]
8310#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8311pub struct ImageDrmFormatModifierPropertiesEXT {
8312    pub s_type: StructureType,
8313    pub next: *mut c_void,
8314    pub drm_format_modifier: u64,
8315}
8316
8317impl Default for ImageDrmFormatModifierPropertiesEXT {
8318    #[inline]
8319    fn default() -> Self {
8320        Self {
8321            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
8322            next: ptr::null_mut(),
8323            drm_format_modifier: u64::default(),
8324        }
8325    }
8326}
8327
8328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>
8329#[repr(C)]
8330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8331pub struct ImageFormatConstraintsInfoFUCHSIA {
8332    pub s_type: StructureType,
8333    pub next: *const c_void,
8334    pub image_create_info: ImageCreateInfo,
8335    pub required_format_features: FormatFeatureFlags,
8336    pub flags: ImageFormatConstraintsFlagsFUCHSIA,
8337    pub sysmem_pixel_format: u64,
8338    pub color_space_count: u32,
8339    pub color_spaces: *const SysmemColorSpaceFUCHSIA,
8340}
8341
8342impl Default for ImageFormatConstraintsInfoFUCHSIA {
8343    #[inline]
8344    fn default() -> Self {
8345        Self {
8346            s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
8347            next: ptr::null(),
8348            image_create_info: ImageCreateInfo::default(),
8349            required_format_features: FormatFeatureFlags::default(),
8350            flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
8351            sysmem_pixel_format: u64::default(),
8352            color_space_count: u32::default(),
8353            color_spaces: ptr::null(),
8354        }
8355    }
8356}
8357
8358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html>
8359#[repr(C)]
8360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8361pub struct ImageFormatListCreateInfo {
8362    pub s_type: StructureType,
8363    pub next: *const c_void,
8364    pub view_format_count: u32,
8365    pub view_formats: *const Format,
8366}
8367
8368impl Default for ImageFormatListCreateInfo {
8369    #[inline]
8370    fn default() -> Self {
8371        Self {
8372            s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
8373            next: ptr::null(),
8374            view_format_count: u32::default(),
8375            view_formats: ptr::null(),
8376        }
8377    }
8378}
8379
8380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties.html>
8381#[repr(C)]
8382#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8383pub struct ImageFormatProperties {
8384    pub max_extent: Extent3D,
8385    pub max_mip_levels: u32,
8386    pub max_array_layers: u32,
8387    pub sample_counts: SampleCountFlags,
8388    pub max_resource_size: DeviceSize,
8389}
8390
8391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2.html>
8392#[repr(C)]
8393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8394pub struct ImageFormatProperties2 {
8395    pub s_type: StructureType,
8396    pub next: *mut c_void,
8397    pub image_format_properties: ImageFormatProperties,
8398}
8399
8400impl Default for ImageFormatProperties2 {
8401    #[inline]
8402    fn default() -> Self {
8403        Self {
8404            s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
8405            next: ptr::null_mut(),
8406            image_format_properties: ImageFormatProperties::default(),
8407        }
8408    }
8409}
8410
8411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html>
8412#[repr(C)]
8413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8414pub struct ImageMemoryBarrier {
8415    pub s_type: StructureType,
8416    pub next: *const c_void,
8417    pub src_access_mask: AccessFlags,
8418    pub dst_access_mask: AccessFlags,
8419    pub old_layout: ImageLayout,
8420    pub new_layout: ImageLayout,
8421    pub src_queue_family_index: u32,
8422    pub dst_queue_family_index: u32,
8423    pub image: Image,
8424    pub subresource_range: ImageSubresourceRange,
8425}
8426
8427impl Default for ImageMemoryBarrier {
8428    #[inline]
8429    fn default() -> Self {
8430        Self {
8431            s_type: StructureType::IMAGE_MEMORY_BARRIER,
8432            next: ptr::null(),
8433            src_access_mask: AccessFlags::default(),
8434            dst_access_mask: AccessFlags::default(),
8435            old_layout: ImageLayout::default(),
8436            new_layout: ImageLayout::default(),
8437            src_queue_family_index: u32::default(),
8438            dst_queue_family_index: u32::default(),
8439            image: Image::default(),
8440            subresource_range: ImageSubresourceRange::default(),
8441        }
8442    }
8443}
8444
8445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html>
8446#[repr(C)]
8447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8448pub struct ImageMemoryBarrier2 {
8449    pub s_type: StructureType,
8450    pub next: *const c_void,
8451    pub src_stage_mask: PipelineStageFlags2,
8452    pub src_access_mask: AccessFlags2,
8453    pub dst_stage_mask: PipelineStageFlags2,
8454    pub dst_access_mask: AccessFlags2,
8455    pub old_layout: ImageLayout,
8456    pub new_layout: ImageLayout,
8457    pub src_queue_family_index: u32,
8458    pub dst_queue_family_index: u32,
8459    pub image: Image,
8460    pub subresource_range: ImageSubresourceRange,
8461}
8462
8463impl Default for ImageMemoryBarrier2 {
8464    #[inline]
8465    fn default() -> Self {
8466        Self {
8467            s_type: StructureType::IMAGE_MEMORY_BARRIER_2,
8468            next: ptr::null(),
8469            src_stage_mask: PipelineStageFlags2::default(),
8470            src_access_mask: AccessFlags2::default(),
8471            dst_stage_mask: PipelineStageFlags2::default(),
8472            dst_access_mask: AccessFlags2::default(),
8473            old_layout: ImageLayout::default(),
8474            new_layout: ImageLayout::default(),
8475            src_queue_family_index: u32::default(),
8476            dst_queue_family_index: u32::default(),
8477            image: Image::default(),
8478            subresource_range: ImageSubresourceRange::default(),
8479        }
8480    }
8481}
8482
8483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html>
8484#[repr(C)]
8485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8486pub struct ImageMemoryRequirementsInfo2 {
8487    pub s_type: StructureType,
8488    pub next: *const c_void,
8489    pub image: Image,
8490}
8491
8492impl Default for ImageMemoryRequirementsInfo2 {
8493    #[inline]
8494    fn default() -> Self {
8495        Self {
8496            s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
8497            next: ptr::null(),
8498            image: Image::default(),
8499        }
8500    }
8501}
8502
8503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>
8504#[repr(C)]
8505#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8506pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
8507    pub s_type: StructureType,
8508    pub next: *const c_void,
8509    pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
8510    pub image_pipe_handle: zx_handle_t,
8511}
8512
8513impl Default for ImagePipeSurfaceCreateInfoFUCHSIA {
8514    #[inline]
8515    fn default() -> Self {
8516        Self {
8517            s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
8518            next: ptr::null(),
8519            flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
8520            image_pipe_handle: zx_handle_t::default(),
8521        }
8522    }
8523}
8524
8525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html>
8526#[repr(C)]
8527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8528pub struct ImagePlaneMemoryRequirementsInfo {
8529    pub s_type: StructureType,
8530    pub next: *const c_void,
8531    pub plane_aspect: ImageAspectFlags,
8532}
8533
8534impl Default for ImagePlaneMemoryRequirementsInfo {
8535    #[inline]
8536    fn default() -> Self {
8537        Self {
8538            s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
8539            next: ptr::null(),
8540            plane_aspect: ImageAspectFlags::default(),
8541        }
8542    }
8543}
8544
8545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve.html>
8546#[repr(C)]
8547#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8548pub struct ImageResolve {
8549    pub src_subresource: ImageSubresourceLayers,
8550    pub src_offset: Offset3D,
8551    pub dst_subresource: ImageSubresourceLayers,
8552    pub dst_offset: Offset3D,
8553    pub extent: Extent3D,
8554}
8555
8556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2.html>
8557#[repr(C)]
8558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8559pub struct ImageResolve2 {
8560    pub s_type: StructureType,
8561    pub next: *const c_void,
8562    pub src_subresource: ImageSubresourceLayers,
8563    pub src_offset: Offset3D,
8564    pub dst_subresource: ImageSubresourceLayers,
8565    pub dst_offset: Offset3D,
8566    pub extent: Extent3D,
8567}
8568
8569impl Default for ImageResolve2 {
8570    #[inline]
8571    fn default() -> Self {
8572        Self {
8573            s_type: StructureType::IMAGE_RESOLVE_2,
8574            next: ptr::null(),
8575            src_subresource: ImageSubresourceLayers::default(),
8576            src_offset: Offset3D::default(),
8577            dst_subresource: ImageSubresourceLayers::default(),
8578            dst_offset: Offset3D::default(),
8579            extent: Extent3D::default(),
8580        }
8581    }
8582}
8583
8584/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html>
8585#[repr(C)]
8586#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8587pub struct ImageSparseMemoryRequirementsInfo2 {
8588    pub s_type: StructureType,
8589    pub next: *const c_void,
8590    pub image: Image,
8591}
8592
8593impl Default for ImageSparseMemoryRequirementsInfo2 {
8594    #[inline]
8595    fn default() -> Self {
8596        Self {
8597            s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
8598            next: ptr::null(),
8599            image: Image::default(),
8600        }
8601    }
8602}
8603
8604/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html>
8605#[repr(C)]
8606#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8607pub struct ImageStencilUsageCreateInfo {
8608    pub s_type: StructureType,
8609    pub next: *const c_void,
8610    pub stencil_usage: ImageUsageFlags,
8611}
8612
8613impl Default for ImageStencilUsageCreateInfo {
8614    #[inline]
8615    fn default() -> Self {
8616        Self {
8617            s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
8618            next: ptr::null(),
8619            stencil_usage: ImageUsageFlags::default(),
8620        }
8621    }
8622}
8623
8624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource.html>
8625#[repr(C)]
8626#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8627pub struct ImageSubresource {
8628    pub aspect_mask: ImageAspectFlags,
8629    pub mip_level: u32,
8630    pub array_layer: u32,
8631}
8632
8633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2.html>
8634#[repr(C)]
8635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8636pub struct ImageSubresource2 {
8637    pub s_type: StructureType,
8638    pub next: *mut c_void,
8639    pub image_subresource: ImageSubresource,
8640}
8641
8642impl Default for ImageSubresource2 {
8643    #[inline]
8644    fn default() -> Self {
8645        Self {
8646            s_type: StructureType::IMAGE_SUBRESOURCE_2,
8647            next: ptr::null_mut(),
8648            image_subresource: ImageSubresource::default(),
8649        }
8650    }
8651}
8652
8653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html>
8654#[repr(C)]
8655#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8656pub struct ImageSubresourceLayers {
8657    pub aspect_mask: ImageAspectFlags,
8658    pub mip_level: u32,
8659    pub base_array_layer: u32,
8660    pub layer_count: u32,
8661}
8662
8663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceRange.html>
8664#[repr(C)]
8665#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8666pub struct ImageSubresourceRange {
8667    pub aspect_mask: ImageAspectFlags,
8668    pub base_mip_level: u32,
8669    pub level_count: u32,
8670    pub base_array_layer: u32,
8671    pub layer_count: u32,
8672}
8673
8674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html>
8675#[repr(C)]
8676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8677pub struct ImageSwapchainCreateInfoKHR {
8678    pub s_type: StructureType,
8679    pub next: *const c_void,
8680    pub swapchain: SwapchainKHR,
8681}
8682
8683impl Default for ImageSwapchainCreateInfoKHR {
8684    #[inline]
8685    fn default() -> Self {
8686        Self {
8687            s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
8688            next: ptr::null(),
8689            swapchain: SwapchainKHR::default(),
8690        }
8691    }
8692}
8693
8694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html>
8695#[repr(C)]
8696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8697pub struct ImageToMemoryCopy {
8698    pub s_type: StructureType,
8699    pub next: *const c_void,
8700    pub host_pointer: *mut c_void,
8701    pub memory_row_length: u32,
8702    pub memory_image_height: u32,
8703    pub image_subresource: ImageSubresourceLayers,
8704    pub image_offset: Offset3D,
8705    pub image_extent: Extent3D,
8706}
8707
8708impl Default for ImageToMemoryCopy {
8709    #[inline]
8710    fn default() -> Self {
8711        Self {
8712            s_type: StructureType::IMAGE_TO_MEMORY_COPY,
8713            next: ptr::null(),
8714            host_pointer: ptr::null_mut(),
8715            memory_row_length: u32::default(),
8716            memory_image_height: u32::default(),
8717            image_subresource: ImageSubresourceLayers::default(),
8718            image_offset: Offset3D::default(),
8719            image_extent: Extent3D::default(),
8720        }
8721    }
8722}
8723
8724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html>
8725#[repr(C)]
8726#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8727pub struct ImageViewASTCDecodeModeEXT {
8728    pub s_type: StructureType,
8729    pub next: *const c_void,
8730    pub decode_mode: Format,
8731}
8732
8733impl Default for ImageViewASTCDecodeModeEXT {
8734    #[inline]
8735    fn default() -> Self {
8736        Self {
8737            s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
8738            next: ptr::null(),
8739            decode_mode: Format::default(),
8740        }
8741    }
8742}
8743
8744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html>
8745#[repr(C)]
8746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8747pub struct ImageViewAddressPropertiesNVX {
8748    pub s_type: StructureType,
8749    pub next: *mut c_void,
8750    pub device_address: DeviceAddress,
8751    pub size: DeviceSize,
8752}
8753
8754impl Default for ImageViewAddressPropertiesNVX {
8755    #[inline]
8756    fn default() -> Self {
8757        Self {
8758            s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
8759            next: ptr::null_mut(),
8760            device_address: DeviceAddress::default(),
8761            size: DeviceSize::default(),
8762        }
8763    }
8764}
8765
8766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html>
8767#[repr(C)]
8768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8769pub struct ImageViewCaptureDescriptorDataInfoEXT {
8770    pub s_type: StructureType,
8771    pub next: *const c_void,
8772    pub image_view: ImageView,
8773}
8774
8775impl Default for ImageViewCaptureDescriptorDataInfoEXT {
8776    #[inline]
8777    fn default() -> Self {
8778        Self {
8779            s_type: StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
8780            next: ptr::null(),
8781            image_view: ImageView::default(),
8782        }
8783    }
8784}
8785
8786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html>
8787#[repr(C)]
8788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8789pub struct ImageViewCreateInfo {
8790    pub s_type: StructureType,
8791    pub next: *const c_void,
8792    pub flags: ImageViewCreateFlags,
8793    pub image: Image,
8794    pub view_type: ImageViewType,
8795    pub format: Format,
8796    pub components: ComponentMapping,
8797    pub subresource_range: ImageSubresourceRange,
8798}
8799
8800impl Default for ImageViewCreateInfo {
8801    #[inline]
8802    fn default() -> Self {
8803        Self {
8804            s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
8805            next: ptr::null(),
8806            flags: ImageViewCreateFlags::default(),
8807            image: Image::default(),
8808            view_type: ImageViewType::default(),
8809            format: Format::default(),
8810            components: ComponentMapping::default(),
8811            subresource_range: ImageSubresourceRange::default(),
8812        }
8813    }
8814}
8815
8816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html>
8817#[repr(C)]
8818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8819pub struct ImageViewHandleInfoNVX {
8820    pub s_type: StructureType,
8821    pub next: *const c_void,
8822    pub image_view: ImageView,
8823    pub descriptor_type: DescriptorType,
8824    pub sampler: Sampler,
8825}
8826
8827impl Default for ImageViewHandleInfoNVX {
8828    #[inline]
8829    fn default() -> Self {
8830        Self {
8831            s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
8832            next: ptr::null(),
8833            image_view: ImageView::default(),
8834            descriptor_type: DescriptorType::default(),
8835            sampler: Sampler::default(),
8836        }
8837    }
8838}
8839
8840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html>
8841#[repr(C)]
8842#[derive(Copy, Clone, Debug, PartialEq)]
8843pub struct ImageViewMinLodCreateInfoEXT {
8844    pub s_type: StructureType,
8845    pub next: *const c_void,
8846    pub min_lod: f32,
8847}
8848
8849impl Default for ImageViewMinLodCreateInfoEXT {
8850    #[inline]
8851    fn default() -> Self {
8852        Self {
8853            s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
8854            next: ptr::null(),
8855            min_lod: f32::default(),
8856        }
8857    }
8858}
8859
8860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html>
8861#[repr(C)]
8862#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8863pub struct ImageViewSampleWeightCreateInfoQCOM {
8864    pub s_type: StructureType,
8865    pub next: *const c_void,
8866    pub filter_center: Offset2D,
8867    pub filter_size: Extent2D,
8868    pub num_phases: u32,
8869}
8870
8871impl Default for ImageViewSampleWeightCreateInfoQCOM {
8872    #[inline]
8873    fn default() -> Self {
8874        Self {
8875            s_type: StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM,
8876            next: ptr::null(),
8877            filter_center: Offset2D::default(),
8878            filter_size: Extent2D::default(),
8879            num_phases: u32::default(),
8880        }
8881    }
8882}
8883
8884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html>
8885#[repr(C)]
8886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8887pub struct ImageViewSlicedCreateInfoEXT {
8888    pub s_type: StructureType,
8889    pub next: *const c_void,
8890    pub slice_offset: u32,
8891    pub slice_count: u32,
8892}
8893
8894impl Default for ImageViewSlicedCreateInfoEXT {
8895    #[inline]
8896    fn default() -> Self {
8897        Self {
8898            s_type: StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT,
8899            next: ptr::null(),
8900            slice_offset: u32::default(),
8901            slice_count: u32::default(),
8902        }
8903    }
8904}
8905
8906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html>
8907#[repr(C)]
8908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8909pub struct ImageViewUsageCreateInfo {
8910    pub s_type: StructureType,
8911    pub next: *const c_void,
8912    pub usage: ImageUsageFlags,
8913}
8914
8915impl Default for ImageViewUsageCreateInfo {
8916    #[inline]
8917    fn default() -> Self {
8918        Self {
8919            s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
8920            next: ptr::null(),
8921            usage: ImageUsageFlags::default(),
8922        }
8923    }
8924}
8925
8926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>
8927#[repr(C)]
8928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8929pub struct ImportAndroidHardwareBufferInfoANDROID {
8930    pub s_type: StructureType,
8931    pub next: *const c_void,
8932    pub buffer: *mut AHardwareBuffer,
8933}
8934
8935impl Default for ImportAndroidHardwareBufferInfoANDROID {
8936    #[inline]
8937    fn default() -> Self {
8938        Self {
8939            s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
8940            next: ptr::null(),
8941            buffer: ptr::null_mut(),
8942        }
8943    }
8944}
8945
8946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html>
8947#[repr(C)]
8948#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8949pub struct ImportFenceFdInfoKHR {
8950    pub s_type: StructureType,
8951    pub next: *const c_void,
8952    pub fence: Fence,
8953    pub flags: FenceImportFlags,
8954    pub handle_type: ExternalFenceHandleTypeFlags,
8955    pub fd: c_int,
8956}
8957
8958impl Default for ImportFenceFdInfoKHR {
8959    #[inline]
8960    fn default() -> Self {
8961        Self {
8962            s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
8963            next: ptr::null(),
8964            fence: Fence::default(),
8965            flags: FenceImportFlags::default(),
8966            handle_type: ExternalFenceHandleTypeFlags::default(),
8967            fd: c_int::default(),
8968        }
8969    }
8970}
8971
8972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceSciSyncInfoNV.html>
8973#[repr(C)]
8974#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8975pub struct ImportFenceSciSyncInfoNV {
8976    pub s_type: StructureType,
8977    pub next: *const c_void,
8978    pub fence: Fence,
8979    pub handle_type: ExternalFenceHandleTypeFlags,
8980    pub handle: *mut c_void,
8981}
8982
8983impl Default for ImportFenceSciSyncInfoNV {
8984    #[inline]
8985    fn default() -> Self {
8986        Self {
8987            s_type: StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV,
8988            next: ptr::null(),
8989            fence: Fence::default(),
8990            handle_type: ExternalFenceHandleTypeFlags::default(),
8991            handle: ptr::null_mut(),
8992        }
8993    }
8994}
8995
8996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html>
8997#[repr(C)]
8998#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8999pub struct ImportFenceWin32HandleInfoKHR {
9000    pub s_type: StructureType,
9001    pub next: *const c_void,
9002    pub fence: Fence,
9003    pub flags: FenceImportFlags,
9004    pub handle_type: ExternalFenceHandleTypeFlags,
9005    pub handle: HANDLE,
9006    pub name: LPCWSTR,
9007}
9008
9009impl Default for ImportFenceWin32HandleInfoKHR {
9010    #[inline]
9011    fn default() -> Self {
9012        Self {
9013            s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
9014            next: ptr::null(),
9015            fence: Fence::default(),
9016            flags: FenceImportFlags::default(),
9017            handle_type: ExternalFenceHandleTypeFlags::default(),
9018            handle: ptr::null_mut(),
9019            name: ptr::null_mut(),
9020        }
9021    }
9022}
9023
9024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>
9025#[repr(C)]
9026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9027pub struct ImportMemoryBufferCollectionFUCHSIA {
9028    pub s_type: StructureType,
9029    pub next: *const c_void,
9030    pub collection: BufferCollectionFUCHSIA,
9031    pub index: u32,
9032}
9033
9034impl Default for ImportMemoryBufferCollectionFUCHSIA {
9035    #[inline]
9036    fn default() -> Self {
9037        Self {
9038            s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
9039            next: ptr::null(),
9040            collection: BufferCollectionFUCHSIA::default(),
9041            index: u32::default(),
9042        }
9043    }
9044}
9045
9046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html>
9047#[repr(C)]
9048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9049pub struct ImportMemoryFdInfoKHR {
9050    pub s_type: StructureType,
9051    pub next: *const c_void,
9052    pub handle_type: ExternalMemoryHandleTypeFlags,
9053    pub fd: c_int,
9054}
9055
9056impl Default for ImportMemoryFdInfoKHR {
9057    #[inline]
9058    fn default() -> Self {
9059        Self {
9060            s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
9061            next: ptr::null(),
9062            handle_type: ExternalMemoryHandleTypeFlags::default(),
9063            fd: c_int::default(),
9064        }
9065    }
9066}
9067
9068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html>
9069#[repr(C)]
9070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9071pub struct ImportMemoryHostPointerInfoEXT {
9072    pub s_type: StructureType,
9073    pub next: *const c_void,
9074    pub handle_type: ExternalMemoryHandleTypeFlags,
9075    pub host_pointer: *mut c_void,
9076}
9077
9078impl Default for ImportMemoryHostPointerInfoEXT {
9079    #[inline]
9080    fn default() -> Self {
9081        Self {
9082            s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
9083            next: ptr::null(),
9084            handle_type: ExternalMemoryHandleTypeFlags::default(),
9085            host_pointer: ptr::null_mut(),
9086        }
9087    }
9088}
9089
9090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html>
9091#[repr(C)]
9092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9093pub struct ImportMemoryMetalHandleInfoEXT {
9094    pub s_type: StructureType,
9095    pub next: *const c_void,
9096    pub handle_type: ExternalMemoryHandleTypeFlags,
9097    pub handle: *mut c_void,
9098}
9099
9100impl Default for ImportMemoryMetalHandleInfoEXT {
9101    #[inline]
9102    fn default() -> Self {
9103        Self {
9104            s_type: StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT,
9105            next: ptr::null(),
9106            handle_type: ExternalMemoryHandleTypeFlags::default(),
9107            handle: ptr::null_mut(),
9108        }
9109    }
9110}
9111
9112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemorySciBufInfoNV.html>
9113#[repr(C)]
9114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9115pub struct ImportMemorySciBufInfoNV {
9116    pub s_type: StructureType,
9117    pub next: *const c_void,
9118    pub handle_type: ExternalMemoryHandleTypeFlags,
9119    pub handle: NvSciBufObj,
9120}
9121
9122impl Default for ImportMemorySciBufInfoNV {
9123    #[inline]
9124    fn default() -> Self {
9125        Self {
9126            s_type: StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV,
9127            next: ptr::null(),
9128            handle_type: ExternalMemoryHandleTypeFlags::default(),
9129            handle: ptr::null_mut(),
9130        }
9131    }
9132}
9133
9134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html>
9135#[repr(C)]
9136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9137pub struct ImportMemoryWin32HandleInfoKHR {
9138    pub s_type: StructureType,
9139    pub next: *const c_void,
9140    pub handle_type: ExternalMemoryHandleTypeFlags,
9141    pub handle: HANDLE,
9142    pub name: LPCWSTR,
9143}
9144
9145impl Default for ImportMemoryWin32HandleInfoKHR {
9146    #[inline]
9147    fn default() -> Self {
9148        Self {
9149            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
9150            next: ptr::null(),
9151            handle_type: ExternalMemoryHandleTypeFlags::default(),
9152            handle: ptr::null_mut(),
9153            name: ptr::null_mut(),
9154        }
9155    }
9156}
9157
9158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html>
9159#[repr(C)]
9160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9161pub struct ImportMemoryWin32HandleInfoNV {
9162    pub s_type: StructureType,
9163    pub next: *const c_void,
9164    pub handle_type: ExternalMemoryHandleTypeFlagsNV,
9165    pub handle: HANDLE,
9166}
9167
9168impl Default for ImportMemoryWin32HandleInfoNV {
9169    #[inline]
9170    fn default() -> Self {
9171        Self {
9172            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
9173            next: ptr::null(),
9174            handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
9175            handle: ptr::null_mut(),
9176        }
9177    }
9178}
9179
9180/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>
9181#[repr(C)]
9182#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9183pub struct ImportMemoryZirconHandleInfoFUCHSIA {
9184    pub s_type: StructureType,
9185    pub next: *const c_void,
9186    pub handle_type: ExternalMemoryHandleTypeFlags,
9187    pub handle: zx_handle_t,
9188}
9189
9190impl Default for ImportMemoryZirconHandleInfoFUCHSIA {
9191    #[inline]
9192    fn default() -> Self {
9193        Self {
9194            s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
9195            next: ptr::null(),
9196            handle_type: ExternalMemoryHandleTypeFlags::default(),
9197            handle: zx_handle_t::default(),
9198        }
9199    }
9200}
9201
9202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html>
9203#[repr(C)]
9204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9205pub struct ImportMetalBufferInfoEXT {
9206    pub s_type: StructureType,
9207    pub next: *const c_void,
9208    pub mtl_buffer: MTLBuffer_id,
9209}
9210
9211impl Default for ImportMetalBufferInfoEXT {
9212    #[inline]
9213    fn default() -> Self {
9214        Self {
9215            s_type: StructureType::IMPORT_METAL_BUFFER_INFO_EXT,
9216            next: ptr::null(),
9217            mtl_buffer: ptr::null_mut(),
9218        }
9219    }
9220}
9221
9222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html>
9223#[repr(C)]
9224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9225pub struct ImportMetalIOSurfaceInfoEXT {
9226    pub s_type: StructureType,
9227    pub next: *const c_void,
9228    pub io_surface: IOSurfaceRef,
9229}
9230
9231impl Default for ImportMetalIOSurfaceInfoEXT {
9232    #[inline]
9233    fn default() -> Self {
9234        Self {
9235            s_type: StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT,
9236            next: ptr::null(),
9237            io_surface: ptr::null_mut(),
9238        }
9239    }
9240}
9241
9242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html>
9243#[repr(C)]
9244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9245pub struct ImportMetalSharedEventInfoEXT {
9246    pub s_type: StructureType,
9247    pub next: *const c_void,
9248    pub mtl_shared_event: MTLSharedEvent_id,
9249}
9250
9251impl Default for ImportMetalSharedEventInfoEXT {
9252    #[inline]
9253    fn default() -> Self {
9254        Self {
9255            s_type: StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT,
9256            next: ptr::null(),
9257            mtl_shared_event: ptr::null_mut(),
9258        }
9259    }
9260}
9261
9262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html>
9263#[repr(C)]
9264#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9265pub struct ImportMetalTextureInfoEXT {
9266    pub s_type: StructureType,
9267    pub next: *const c_void,
9268    pub plane: ImageAspectFlags,
9269    pub mtl_texture: MTLTexture_id,
9270}
9271
9272impl Default for ImportMetalTextureInfoEXT {
9273    #[inline]
9274    fn default() -> Self {
9275        Self {
9276            s_type: StructureType::IMPORT_METAL_TEXTURE_INFO_EXT,
9277            next: ptr::null(),
9278            plane: ImageAspectFlags::default(),
9279            mtl_texture: ptr::null_mut(),
9280        }
9281    }
9282}
9283
9284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html>
9285#[repr(C)]
9286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9287pub struct ImportScreenBufferInfoQNX {
9288    pub s_type: StructureType,
9289    pub next: *const c_void,
9290    pub buffer: *mut _screen_buffer,
9291}
9292
9293impl Default for ImportScreenBufferInfoQNX {
9294    #[inline]
9295    fn default() -> Self {
9296        Self {
9297            s_type: StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX,
9298            next: ptr::null(),
9299            buffer: ptr::null_mut(),
9300        }
9301    }
9302}
9303
9304/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html>
9305#[repr(C)]
9306#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9307pub struct ImportSemaphoreFdInfoKHR {
9308    pub s_type: StructureType,
9309    pub next: *const c_void,
9310    pub semaphore: Semaphore,
9311    pub flags: SemaphoreImportFlags,
9312    pub handle_type: ExternalSemaphoreHandleTypeFlags,
9313    pub fd: c_int,
9314}
9315
9316impl Default for ImportSemaphoreFdInfoKHR {
9317    #[inline]
9318    fn default() -> Self {
9319        Self {
9320            s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
9321            next: ptr::null(),
9322            semaphore: Semaphore::default(),
9323            flags: SemaphoreImportFlags::default(),
9324            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
9325            fd: c_int::default(),
9326        }
9327    }
9328}
9329
9330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreSciSyncInfoNV.html>
9331#[repr(C)]
9332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9333pub struct ImportSemaphoreSciSyncInfoNV {
9334    pub s_type: StructureType,
9335    pub next: *const c_void,
9336    pub semaphore: Semaphore,
9337    pub handle_type: ExternalSemaphoreHandleTypeFlags,
9338    pub handle: *mut c_void,
9339}
9340
9341impl Default for ImportSemaphoreSciSyncInfoNV {
9342    #[inline]
9343    fn default() -> Self {
9344        Self {
9345            s_type: StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
9346            next: ptr::null(),
9347            semaphore: Semaphore::default(),
9348            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
9349            handle: ptr::null_mut(),
9350        }
9351    }
9352}
9353
9354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>
9355#[repr(C)]
9356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9357pub struct ImportSemaphoreWin32HandleInfoKHR {
9358    pub s_type: StructureType,
9359    pub next: *const c_void,
9360    pub semaphore: Semaphore,
9361    pub flags: SemaphoreImportFlags,
9362    pub handle_type: ExternalSemaphoreHandleTypeFlags,
9363    pub handle: HANDLE,
9364    pub name: LPCWSTR,
9365}
9366
9367impl Default for ImportSemaphoreWin32HandleInfoKHR {
9368    #[inline]
9369    fn default() -> Self {
9370        Self {
9371            s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
9372            next: ptr::null(),
9373            semaphore: Semaphore::default(),
9374            flags: SemaphoreImportFlags::default(),
9375            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
9376            handle: ptr::null_mut(),
9377            name: ptr::null_mut(),
9378        }
9379    }
9380}
9381
9382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>
9383#[repr(C)]
9384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9385pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
9386    pub s_type: StructureType,
9387    pub next: *const c_void,
9388    pub semaphore: Semaphore,
9389    pub flags: SemaphoreImportFlags,
9390    pub handle_type: ExternalSemaphoreHandleTypeFlags,
9391    pub zircon_handle: zx_handle_t,
9392}
9393
9394impl Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
9395    #[inline]
9396    fn default() -> Self {
9397        Self {
9398            s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
9399            next: ptr::null(),
9400            semaphore: Semaphore::default(),
9401            flags: SemaphoreImportFlags::default(),
9402            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
9403            zircon_handle: zx_handle_t::default(),
9404        }
9405    }
9406}
9407
9408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html>
9409#[repr(C)]
9410#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9411pub struct IndirectCommandsExecutionSetTokenEXT {
9412    pub type_: IndirectExecutionSetInfoTypeEXT,
9413    pub shader_stages: ShaderStageFlags,
9414}
9415
9416/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html>
9417#[repr(C)]
9418#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9419pub struct IndirectCommandsIndexBufferTokenEXT {
9420    pub mode: IndirectCommandsInputModeFlagsEXT,
9421}
9422
9423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html>
9424#[repr(C)]
9425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9426pub struct IndirectCommandsLayoutCreateInfoEXT {
9427    pub s_type: StructureType,
9428    pub next: *const c_void,
9429    pub flags: IndirectCommandsLayoutUsageFlagsEXT,
9430    pub shader_stages: ShaderStageFlags,
9431    pub indirect_stride: u32,
9432    pub pipeline_layout: PipelineLayout,
9433    pub token_count: u32,
9434    pub tokens: *const IndirectCommandsLayoutTokenEXT,
9435}
9436
9437impl Default for IndirectCommandsLayoutCreateInfoEXT {
9438    #[inline]
9439    fn default() -> Self {
9440        Self {
9441            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT,
9442            next: ptr::null(),
9443            flags: IndirectCommandsLayoutUsageFlagsEXT::default(),
9444            shader_stages: ShaderStageFlags::default(),
9445            indirect_stride: u32::default(),
9446            pipeline_layout: PipelineLayout::default(),
9447            token_count: u32::default(),
9448            tokens: ptr::null(),
9449        }
9450    }
9451}
9452
9453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>
9454#[repr(C)]
9455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9456pub struct IndirectCommandsLayoutCreateInfoNV {
9457    pub s_type: StructureType,
9458    pub next: *const c_void,
9459    pub flags: IndirectCommandsLayoutUsageFlagsNV,
9460    pub pipeline_bind_point: PipelineBindPoint,
9461    pub token_count: u32,
9462    pub tokens: *const IndirectCommandsLayoutTokenNV,
9463    pub stream_count: u32,
9464    pub stream_strides: *const u32,
9465}
9466
9467impl Default for IndirectCommandsLayoutCreateInfoNV {
9468    #[inline]
9469    fn default() -> Self {
9470        Self {
9471            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
9472            next: ptr::null(),
9473            flags: IndirectCommandsLayoutUsageFlagsNV::default(),
9474            pipeline_bind_point: PipelineBindPoint::default(),
9475            token_count: u32::default(),
9476            tokens: ptr::null(),
9477            stream_count: u32::default(),
9478            stream_strides: ptr::null(),
9479        }
9480    }
9481}
9482
9483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html>
9484#[repr(C)]
9485#[derive(Copy, Clone, Debug)]
9486pub struct IndirectCommandsLayoutTokenEXT {
9487    pub s_type: StructureType,
9488    pub next: *const c_void,
9489    pub type_: IndirectCommandsTokenTypeEXT,
9490    pub data: IndirectCommandsTokenDataEXT,
9491    pub offset: u32,
9492}
9493
9494impl Default for IndirectCommandsLayoutTokenEXT {
9495    #[inline]
9496    fn default() -> Self {
9497        Self {
9498            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT,
9499            next: ptr::null(),
9500            type_: IndirectCommandsTokenTypeEXT::default(),
9501            data: IndirectCommandsTokenDataEXT::default(),
9502            offset: u32::default(),
9503        }
9504    }
9505}
9506
9507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html>
9508#[repr(C)]
9509#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9510pub struct IndirectCommandsLayoutTokenNV {
9511    pub s_type: StructureType,
9512    pub next: *const c_void,
9513    pub token_type: IndirectCommandsTokenTypeNV,
9514    pub stream: u32,
9515    pub offset: u32,
9516    pub vertex_binding_unit: u32,
9517    pub vertex_dynamic_stride: Bool32,
9518    pub pushconstant_pipeline_layout: PipelineLayout,
9519    pub pushconstant_shader_stage_flags: ShaderStageFlags,
9520    pub pushconstant_offset: u32,
9521    pub pushconstant_size: u32,
9522    pub indirect_state_flags: IndirectStateFlagsNV,
9523    pub index_type_count: u32,
9524    pub index_types: *const IndexType,
9525    pub index_type_values: *const u32,
9526}
9527
9528impl Default for IndirectCommandsLayoutTokenNV {
9529    #[inline]
9530    fn default() -> Self {
9531        Self {
9532            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
9533            next: ptr::null(),
9534            token_type: IndirectCommandsTokenTypeNV::default(),
9535            stream: u32::default(),
9536            offset: u32::default(),
9537            vertex_binding_unit: u32::default(),
9538            vertex_dynamic_stride: Bool32::default(),
9539            pushconstant_pipeline_layout: PipelineLayout::default(),
9540            pushconstant_shader_stage_flags: ShaderStageFlags::default(),
9541            pushconstant_offset: u32::default(),
9542            pushconstant_size: u32::default(),
9543            indirect_state_flags: IndirectStateFlagsNV::default(),
9544            index_type_count: u32::default(),
9545            index_types: ptr::null(),
9546            index_type_values: ptr::null(),
9547        }
9548    }
9549}
9550
9551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html>
9552#[repr(C)]
9553#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9554pub struct IndirectCommandsPushConstantTokenEXT {
9555    pub update_range: PushConstantRange,
9556}
9557
9558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html>
9559#[repr(C)]
9560#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9561pub struct IndirectCommandsStreamNV {
9562    pub buffer: Buffer,
9563    pub offset: DeviceSize,
9564}
9565
9566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html>
9567#[repr(C)]
9568#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9569pub struct IndirectCommandsVertexBufferTokenEXT {
9570    pub vertex_binding_unit: u32,
9571}
9572
9573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html>
9574#[repr(C)]
9575#[derive(Copy, Clone, Debug)]
9576pub struct IndirectExecutionSetCreateInfoEXT {
9577    pub s_type: StructureType,
9578    pub next: *const c_void,
9579    pub type_: IndirectExecutionSetInfoTypeEXT,
9580    pub info: IndirectExecutionSetInfoEXT,
9581}
9582
9583impl Default for IndirectExecutionSetCreateInfoEXT {
9584    #[inline]
9585    fn default() -> Self {
9586        Self {
9587            s_type: StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT,
9588            next: ptr::null(),
9589            type_: IndirectExecutionSetInfoTypeEXT::default(),
9590            info: IndirectExecutionSetInfoEXT::default(),
9591        }
9592    }
9593}
9594
9595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html>
9596#[repr(C)]
9597#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9598pub struct IndirectExecutionSetPipelineInfoEXT {
9599    pub s_type: StructureType,
9600    pub next: *const c_void,
9601    pub initial_pipeline: Pipeline,
9602    pub max_pipeline_count: u32,
9603}
9604
9605impl Default for IndirectExecutionSetPipelineInfoEXT {
9606    #[inline]
9607    fn default() -> Self {
9608        Self {
9609            s_type: StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT,
9610            next: ptr::null(),
9611            initial_pipeline: Pipeline::default(),
9612            max_pipeline_count: u32::default(),
9613        }
9614    }
9615}
9616
9617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html>
9618#[repr(C)]
9619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9620pub struct IndirectExecutionSetShaderInfoEXT {
9621    pub s_type: StructureType,
9622    pub next: *const c_void,
9623    pub shader_count: u32,
9624    pub initial_shaders: *const ShaderEXT,
9625    pub set_layout_infos: *const IndirectExecutionSetShaderLayoutInfoEXT,
9626    pub max_shader_count: u32,
9627    pub push_constant_range_count: u32,
9628    pub push_constant_ranges: *const PushConstantRange,
9629}
9630
9631impl Default for IndirectExecutionSetShaderInfoEXT {
9632    #[inline]
9633    fn default() -> Self {
9634        Self {
9635            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT,
9636            next: ptr::null(),
9637            shader_count: u32::default(),
9638            initial_shaders: ptr::null(),
9639            set_layout_infos: ptr::null(),
9640            max_shader_count: u32::default(),
9641            push_constant_range_count: u32::default(),
9642            push_constant_ranges: ptr::null(),
9643        }
9644    }
9645}
9646
9647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html>
9648#[repr(C)]
9649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9650pub struct IndirectExecutionSetShaderLayoutInfoEXT {
9651    pub s_type: StructureType,
9652    pub next: *const c_void,
9653    pub set_layout_count: u32,
9654    pub set_layouts: *const DescriptorSetLayout,
9655}
9656
9657impl Default for IndirectExecutionSetShaderLayoutInfoEXT {
9658    #[inline]
9659    fn default() -> Self {
9660        Self {
9661            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT,
9662            next: ptr::null(),
9663            set_layout_count: u32::default(),
9664            set_layouts: ptr::null(),
9665        }
9666    }
9667}
9668
9669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html>
9670#[repr(C)]
9671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9672pub struct InitializePerformanceApiInfoINTEL {
9673    pub s_type: StructureType,
9674    pub next: *const c_void,
9675    pub user_data: *mut c_void,
9676}
9677
9678impl Default for InitializePerformanceApiInfoINTEL {
9679    #[inline]
9680    fn default() -> Self {
9681        Self {
9682            s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
9683            next: ptr::null(),
9684            user_data: ptr::null_mut(),
9685        }
9686    }
9687}
9688
9689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html>
9690#[repr(C)]
9691#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9692pub struct InputAttachmentAspectReference {
9693    pub subpass: u32,
9694    pub input_attachment_index: u32,
9695    pub aspect_mask: ImageAspectFlags,
9696}
9697
9698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html>
9699#[repr(C)]
9700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9701pub struct InstanceCreateInfo {
9702    pub s_type: StructureType,
9703    pub next: *const c_void,
9704    pub flags: InstanceCreateFlags,
9705    pub application_info: *const ApplicationInfo,
9706    pub enabled_layer_count: u32,
9707    pub enabled_layer_names: *const *const c_char,
9708    pub enabled_extension_count: u32,
9709    pub enabled_extension_names: *const *const c_char,
9710}
9711
9712impl Default for InstanceCreateInfo {
9713    #[inline]
9714    fn default() -> Self {
9715        Self {
9716            s_type: StructureType::INSTANCE_CREATE_INFO,
9717            next: ptr::null(),
9718            flags: InstanceCreateFlags::default(),
9719            application_info: ptr::null(),
9720            enabled_layer_count: u32::default(),
9721            enabled_layer_names: ptr::null(),
9722            enabled_extension_count: u32::default(),
9723            enabled_extension_names: ptr::null(),
9724        }
9725    }
9726}
9727
9728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html>
9729#[repr(C)]
9730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9731pub struct LatencySleepInfoNV {
9732    pub s_type: StructureType,
9733    pub next: *const c_void,
9734    pub signal_semaphore: Semaphore,
9735    pub value: u64,
9736}
9737
9738impl Default for LatencySleepInfoNV {
9739    #[inline]
9740    fn default() -> Self {
9741        Self {
9742            s_type: StructureType::LATENCY_SLEEP_INFO_NV,
9743            next: ptr::null(),
9744            signal_semaphore: Semaphore::default(),
9745            value: u64::default(),
9746        }
9747    }
9748}
9749
9750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html>
9751#[repr(C)]
9752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9753pub struct LatencySleepModeInfoNV {
9754    pub s_type: StructureType,
9755    pub next: *const c_void,
9756    pub low_latency_mode: Bool32,
9757    pub low_latency_boost: Bool32,
9758    pub minimum_interval_us: u32,
9759}
9760
9761impl Default for LatencySleepModeInfoNV {
9762    #[inline]
9763    fn default() -> Self {
9764        Self {
9765            s_type: StructureType::LATENCY_SLEEP_MODE_INFO_NV,
9766            next: ptr::null(),
9767            low_latency_mode: Bool32::default(),
9768            low_latency_boost: Bool32::default(),
9769            minimum_interval_us: u32::default(),
9770        }
9771    }
9772}
9773
9774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html>
9775#[repr(C)]
9776#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9777pub struct LatencySubmissionPresentIdNV {
9778    pub s_type: StructureType,
9779    pub next: *const c_void,
9780    pub present_id: u64,
9781}
9782
9783impl Default for LatencySubmissionPresentIdNV {
9784    #[inline]
9785    fn default() -> Self {
9786        Self {
9787            s_type: StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV,
9788            next: ptr::null(),
9789            present_id: u64::default(),
9790        }
9791    }
9792}
9793
9794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html>
9795#[repr(C)]
9796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9797pub struct LatencySurfaceCapabilitiesNV {
9798    pub s_type: StructureType,
9799    pub next: *const c_void,
9800    pub present_mode_count: u32,
9801    pub present_modes: *mut PresentModeKHR,
9802}
9803
9804impl Default for LatencySurfaceCapabilitiesNV {
9805    #[inline]
9806    fn default() -> Self {
9807        Self {
9808            s_type: StructureType::LATENCY_SURFACE_CAPABILITIES_NV,
9809            next: ptr::null(),
9810            present_mode_count: u32::default(),
9811            present_modes: ptr::null_mut(),
9812        }
9813    }
9814}
9815
9816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html>
9817#[repr(C)]
9818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9819pub struct LatencyTimingsFrameReportNV {
9820    pub s_type: StructureType,
9821    pub next: *const c_void,
9822    pub present_id: u64,
9823    pub input_sample_time_us: u64,
9824    pub sim_start_time_us: u64,
9825    pub sim_end_time_us: u64,
9826    pub render_submit_start_time_us: u64,
9827    pub render_submit_end_time_us: u64,
9828    pub present_start_time_us: u64,
9829    pub present_end_time_us: u64,
9830    pub driver_start_time_us: u64,
9831    pub driver_end_time_us: u64,
9832    pub os_render_queue_start_time_us: u64,
9833    pub os_render_queue_end_time_us: u64,
9834    pub gpu_render_start_time_us: u64,
9835    pub gpu_render_end_time_us: u64,
9836}
9837
9838impl Default for LatencyTimingsFrameReportNV {
9839    #[inline]
9840    fn default() -> Self {
9841        Self {
9842            s_type: StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV,
9843            next: ptr::null(),
9844            present_id: u64::default(),
9845            input_sample_time_us: u64::default(),
9846            sim_start_time_us: u64::default(),
9847            sim_end_time_us: u64::default(),
9848            render_submit_start_time_us: u64::default(),
9849            render_submit_end_time_us: u64::default(),
9850            present_start_time_us: u64::default(),
9851            present_end_time_us: u64::default(),
9852            driver_start_time_us: u64::default(),
9853            driver_end_time_us: u64::default(),
9854            os_render_queue_start_time_us: u64::default(),
9855            os_render_queue_end_time_us: u64::default(),
9856            gpu_render_start_time_us: u64::default(),
9857            gpu_render_end_time_us: u64::default(),
9858        }
9859    }
9860}
9861
9862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerProperties.html>
9863#[repr(C)]
9864#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9865pub struct LayerProperties {
9866    pub layer_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
9867    pub spec_version: u32,
9868    pub implementation_version: u32,
9869    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
9870}
9871
9872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingEXT.html>
9873#[repr(C)]
9874#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9875pub struct LayerSettingEXT {
9876    pub layer_name: *const c_char,
9877    pub setting_name: *const c_char,
9878    pub type_: LayerSettingTypeEXT,
9879    pub value_count: u32,
9880    pub values: *const c_void,
9881}
9882
9883impl Default for LayerSettingEXT {
9884    #[inline]
9885    fn default() -> Self {
9886        Self {
9887            layer_name: ptr::null(),
9888            setting_name: ptr::null(),
9889            type_: LayerSettingTypeEXT::default(),
9890            value_count: u32::default(),
9891            values: ptr::null(),
9892        }
9893    }
9894}
9895
9896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html>
9897#[repr(C)]
9898#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9899pub struct LayerSettingsCreateInfoEXT {
9900    pub s_type: StructureType,
9901    pub next: *const c_void,
9902    pub setting_count: u32,
9903    pub settings: *const LayerSettingEXT,
9904}
9905
9906impl Default for LayerSettingsCreateInfoEXT {
9907    #[inline]
9908    fn default() -> Self {
9909        Self {
9910            s_type: StructureType::LAYER_SETTINGS_CREATE_INFO_EXT,
9911            next: ptr::null(),
9912            setting_count: u32::default(),
9913            settings: ptr::null(),
9914        }
9915    }
9916}
9917
9918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html>
9919#[repr(C)]
9920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9921pub struct MacOSSurfaceCreateInfoMVK {
9922    pub s_type: StructureType,
9923    pub next: *const c_void,
9924    pub flags: MacOSSurfaceCreateFlagsMVK,
9925    pub view: *const c_void,
9926}
9927
9928impl Default for MacOSSurfaceCreateInfoMVK {
9929    #[inline]
9930    fn default() -> Self {
9931        Self {
9932            s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
9933            next: ptr::null(),
9934            flags: MacOSSurfaceCreateFlagsMVK::default(),
9935            view: ptr::null(),
9936        }
9937    }
9938}
9939
9940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMappedMemoryRange.html>
9941#[repr(C)]
9942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9943pub struct MappedMemoryRange {
9944    pub s_type: StructureType,
9945    pub next: *const c_void,
9946    pub memory: DeviceMemory,
9947    pub offset: DeviceSize,
9948    pub size: DeviceSize,
9949}
9950
9951impl Default for MappedMemoryRange {
9952    #[inline]
9953    fn default() -> Self {
9954        Self {
9955            s_type: StructureType::MAPPED_MEMORY_RANGE,
9956            next: ptr::null(),
9957            memory: DeviceMemory::default(),
9958            offset: DeviceSize::default(),
9959            size: DeviceSize::default(),
9960        }
9961    }
9962}
9963
9964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html>
9965#[repr(C)]
9966#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9967pub struct MemoryAllocateFlagsInfo {
9968    pub s_type: StructureType,
9969    pub next: *const c_void,
9970    pub flags: MemoryAllocateFlags,
9971    pub device_mask: u32,
9972}
9973
9974impl Default for MemoryAllocateFlagsInfo {
9975    #[inline]
9976    fn default() -> Self {
9977        Self {
9978            s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
9979            next: ptr::null(),
9980            flags: MemoryAllocateFlags::default(),
9981            device_mask: u32::default(),
9982        }
9983    }
9984}
9985
9986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html>
9987#[repr(C)]
9988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9989pub struct MemoryAllocateInfo {
9990    pub s_type: StructureType,
9991    pub next: *const c_void,
9992    pub allocation_size: DeviceSize,
9993    pub memory_type_index: u32,
9994}
9995
9996impl Default for MemoryAllocateInfo {
9997    #[inline]
9998    fn default() -> Self {
9999        Self {
10000            s_type: StructureType::MEMORY_ALLOCATE_INFO,
10001            next: ptr::null(),
10002            allocation_size: DeviceSize::default(),
10003            memory_type_index: u32::default(),
10004        }
10005    }
10006}
10007
10008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier.html>
10009#[repr(C)]
10010#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10011pub struct MemoryBarrier {
10012    pub s_type: StructureType,
10013    pub next: *const c_void,
10014    pub src_access_mask: AccessFlags,
10015    pub dst_access_mask: AccessFlags,
10016}
10017
10018impl Default for MemoryBarrier {
10019    #[inline]
10020    fn default() -> Self {
10021        Self {
10022            s_type: StructureType::MEMORY_BARRIER,
10023            next: ptr::null(),
10024            src_access_mask: AccessFlags::default(),
10025            dst_access_mask: AccessFlags::default(),
10026        }
10027    }
10028}
10029
10030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2.html>
10031#[repr(C)]
10032#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10033pub struct MemoryBarrier2 {
10034    pub s_type: StructureType,
10035    pub next: *const c_void,
10036    pub src_stage_mask: PipelineStageFlags2,
10037    pub src_access_mask: AccessFlags2,
10038    pub dst_stage_mask: PipelineStageFlags2,
10039    pub dst_access_mask: AccessFlags2,
10040}
10041
10042impl Default for MemoryBarrier2 {
10043    #[inline]
10044    fn default() -> Self {
10045        Self {
10046            s_type: StructureType::MEMORY_BARRIER_2,
10047            next: ptr::null(),
10048            src_stage_mask: PipelineStageFlags2::default(),
10049            src_access_mask: AccessFlags2::default(),
10050            dst_stage_mask: PipelineStageFlags2::default(),
10051            dst_access_mask: AccessFlags2::default(),
10052        }
10053    }
10054}
10055
10056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html>
10057#[repr(C)]
10058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10059pub struct MemoryBarrierAccessFlags3KHR {
10060    pub s_type: StructureType,
10061    pub next: *const c_void,
10062    pub src_access_mask3: AccessFlags3KHR,
10063    pub dst_access_mask3: AccessFlags3KHR,
10064}
10065
10066impl Default for MemoryBarrierAccessFlags3KHR {
10067    #[inline]
10068    fn default() -> Self {
10069        Self {
10070            s_type: StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR,
10071            next: ptr::null(),
10072            src_access_mask3: AccessFlags3KHR::default(),
10073            dst_access_mask3: AccessFlags3KHR::default(),
10074        }
10075    }
10076}
10077
10078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html>
10079#[repr(C)]
10080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10081pub struct MemoryDedicatedAllocateInfo {
10082    pub s_type: StructureType,
10083    pub next: *const c_void,
10084    pub image: Image,
10085    pub buffer: Buffer,
10086}
10087
10088impl Default for MemoryDedicatedAllocateInfo {
10089    #[inline]
10090    fn default() -> Self {
10091        Self {
10092            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
10093            next: ptr::null(),
10094            image: Image::default(),
10095            buffer: Buffer::default(),
10096        }
10097    }
10098}
10099
10100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoTensorARM.html>
10101#[repr(C)]
10102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10103pub struct MemoryDedicatedAllocateInfoTensorARM {
10104    pub s_type: StructureType,
10105    pub next: *const c_void,
10106    pub tensor: TensorARM,
10107}
10108
10109impl Default for MemoryDedicatedAllocateInfoTensorARM {
10110    #[inline]
10111    fn default() -> Self {
10112        Self {
10113            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM,
10114            next: ptr::null(),
10115            tensor: TensorARM::default(),
10116        }
10117    }
10118}
10119
10120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html>
10121#[repr(C)]
10122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10123pub struct MemoryDedicatedRequirements {
10124    pub s_type: StructureType,
10125    pub next: *mut c_void,
10126    pub prefers_dedicated_allocation: Bool32,
10127    pub requires_dedicated_allocation: Bool32,
10128}
10129
10130impl Default for MemoryDedicatedRequirements {
10131    #[inline]
10132    fn default() -> Self {
10133        Self {
10134            s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
10135            next: ptr::null_mut(),
10136            prefers_dedicated_allocation: Bool32::default(),
10137            requires_dedicated_allocation: Bool32::default(),
10138        }
10139    }
10140}
10141
10142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html>
10143#[repr(C)]
10144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10145pub struct MemoryFdPropertiesKHR {
10146    pub s_type: StructureType,
10147    pub next: *mut c_void,
10148    pub memory_type_bits: u32,
10149}
10150
10151impl Default for MemoryFdPropertiesKHR {
10152    #[inline]
10153    fn default() -> Self {
10154        Self {
10155            s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
10156            next: ptr::null_mut(),
10157            memory_type_bits: u32::default(),
10158        }
10159    }
10160}
10161
10162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>
10163#[repr(C)]
10164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10165pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
10166    pub s_type: StructureType,
10167    pub next: *const c_void,
10168    pub memory: DeviceMemory,
10169}
10170
10171impl Default for MemoryGetAndroidHardwareBufferInfoANDROID {
10172    #[inline]
10173    fn default() -> Self {
10174        Self {
10175            s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
10176            next: ptr::null(),
10177            memory: DeviceMemory::default(),
10178        }
10179    }
10180}
10181
10182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html>
10183#[repr(C)]
10184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10185pub struct MemoryGetFdInfoKHR {
10186    pub s_type: StructureType,
10187    pub next: *const c_void,
10188    pub memory: DeviceMemory,
10189    pub handle_type: ExternalMemoryHandleTypeFlags,
10190}
10191
10192impl Default for MemoryGetFdInfoKHR {
10193    #[inline]
10194    fn default() -> Self {
10195        Self {
10196            s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
10197            next: ptr::null(),
10198            memory: DeviceMemory::default(),
10199            handle_type: ExternalMemoryHandleTypeFlags::default(),
10200        }
10201    }
10202}
10203
10204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html>
10205#[repr(C)]
10206#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10207pub struct MemoryGetMetalHandleInfoEXT {
10208    pub s_type: StructureType,
10209    pub next: *const c_void,
10210    pub memory: DeviceMemory,
10211    pub handle_type: ExternalMemoryHandleTypeFlags,
10212}
10213
10214impl Default for MemoryGetMetalHandleInfoEXT {
10215    #[inline]
10216    fn default() -> Self {
10217        Self {
10218            s_type: StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT,
10219            next: ptr::null(),
10220            memory: DeviceMemory::default(),
10221            handle_type: ExternalMemoryHandleTypeFlags::default(),
10222        }
10223    }
10224}
10225
10226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html>
10227#[repr(C)]
10228#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10229pub struct MemoryGetRemoteAddressInfoNV {
10230    pub s_type: StructureType,
10231    pub next: *const c_void,
10232    pub memory: DeviceMemory,
10233    pub handle_type: ExternalMemoryHandleTypeFlags,
10234}
10235
10236impl Default for MemoryGetRemoteAddressInfoNV {
10237    #[inline]
10238    fn default() -> Self {
10239        Self {
10240            s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
10241            next: ptr::null(),
10242            memory: DeviceMemory::default(),
10243            handle_type: ExternalMemoryHandleTypeFlags::default(),
10244        }
10245    }
10246}
10247
10248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetSciBufInfoNV.html>
10249#[repr(C)]
10250#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10251pub struct MemoryGetSciBufInfoNV {
10252    pub s_type: StructureType,
10253    pub next: *const c_void,
10254    pub memory: DeviceMemory,
10255    pub handle_type: ExternalMemoryHandleTypeFlags,
10256}
10257
10258impl Default for MemoryGetSciBufInfoNV {
10259    #[inline]
10260    fn default() -> Self {
10261        Self {
10262            s_type: StructureType::MEMORY_GET_SCI_BUF_INFO_NV,
10263            next: ptr::null(),
10264            memory: DeviceMemory::default(),
10265            handle_type: ExternalMemoryHandleTypeFlags::default(),
10266        }
10267    }
10268}
10269
10270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html>
10271#[repr(C)]
10272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10273pub struct MemoryGetWin32HandleInfoKHR {
10274    pub s_type: StructureType,
10275    pub next: *const c_void,
10276    pub memory: DeviceMemory,
10277    pub handle_type: ExternalMemoryHandleTypeFlags,
10278}
10279
10280impl Default for MemoryGetWin32HandleInfoKHR {
10281    #[inline]
10282    fn default() -> Self {
10283        Self {
10284            s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
10285            next: ptr::null(),
10286            memory: DeviceMemory::default(),
10287            handle_type: ExternalMemoryHandleTypeFlags::default(),
10288        }
10289    }
10290}
10291
10292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>
10293#[repr(C)]
10294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10295pub struct MemoryGetZirconHandleInfoFUCHSIA {
10296    pub s_type: StructureType,
10297    pub next: *const c_void,
10298    pub memory: DeviceMemory,
10299    pub handle_type: ExternalMemoryHandleTypeFlags,
10300}
10301
10302impl Default for MemoryGetZirconHandleInfoFUCHSIA {
10303    #[inline]
10304    fn default() -> Self {
10305        Self {
10306            s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
10307            next: ptr::null(),
10308            memory: DeviceMemory::default(),
10309            handle_type: ExternalMemoryHandleTypeFlags::default(),
10310        }
10311    }
10312}
10313
10314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeap.html>
10315#[repr(C)]
10316#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10317pub struct MemoryHeap {
10318    pub size: DeviceSize,
10319    pub flags: MemoryHeapFlags,
10320}
10321
10322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html>
10323#[repr(C)]
10324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10325pub struct MemoryHostPointerPropertiesEXT {
10326    pub s_type: StructureType,
10327    pub next: *mut c_void,
10328    pub memory_type_bits: u32,
10329}
10330
10331impl Default for MemoryHostPointerPropertiesEXT {
10332    #[inline]
10333    fn default() -> Self {
10334        Self {
10335            s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
10336            next: ptr::null_mut(),
10337            memory_type_bits: u32::default(),
10338        }
10339    }
10340}
10341
10342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfo.html>
10343#[repr(C)]
10344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10345pub struct MemoryMapInfo {
10346    pub s_type: StructureType,
10347    pub next: *const c_void,
10348    pub flags: MemoryMapFlags,
10349    pub memory: DeviceMemory,
10350    pub offset: DeviceSize,
10351    pub size: DeviceSize,
10352}
10353
10354impl Default for MemoryMapInfo {
10355    #[inline]
10356    fn default() -> Self {
10357        Self {
10358            s_type: StructureType::MEMORY_MAP_INFO,
10359            next: ptr::null(),
10360            flags: MemoryMapFlags::default(),
10361            memory: DeviceMemory::default(),
10362            offset: DeviceSize::default(),
10363            size: DeviceSize::default(),
10364        }
10365    }
10366}
10367
10368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html>
10369#[repr(C)]
10370#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10371pub struct MemoryMapPlacedInfoEXT {
10372    pub s_type: StructureType,
10373    pub next: *const c_void,
10374    pub placed_address: *mut c_void,
10375}
10376
10377impl Default for MemoryMapPlacedInfoEXT {
10378    #[inline]
10379    fn default() -> Self {
10380        Self {
10381            s_type: StructureType::MEMORY_MAP_PLACED_INFO_EXT,
10382            next: ptr::null(),
10383            placed_address: ptr::null_mut(),
10384        }
10385    }
10386}
10387
10388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html>
10389#[repr(C)]
10390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10391pub struct MemoryMetalHandlePropertiesEXT {
10392    pub s_type: StructureType,
10393    pub next: *mut c_void,
10394    pub memory_type_bits: u32,
10395}
10396
10397impl Default for MemoryMetalHandlePropertiesEXT {
10398    #[inline]
10399    fn default() -> Self {
10400        Self {
10401            s_type: StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT,
10402            next: ptr::null_mut(),
10403            memory_type_bits: u32::default(),
10404        }
10405    }
10406}
10407
10408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>
10409#[repr(C)]
10410#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10411pub struct MemoryOpaqueCaptureAddressAllocateInfo {
10412    pub s_type: StructureType,
10413    pub next: *const c_void,
10414    pub opaque_capture_address: u64,
10415}
10416
10417impl Default for MemoryOpaqueCaptureAddressAllocateInfo {
10418    #[inline]
10419    fn default() -> Self {
10420        Self {
10421            s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
10422            next: ptr::null(),
10423            opaque_capture_address: u64::default(),
10424        }
10425    }
10426}
10427
10428/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html>
10429#[repr(C)]
10430#[derive(Copy, Clone, Debug, PartialEq)]
10431pub struct MemoryPriorityAllocateInfoEXT {
10432    pub s_type: StructureType,
10433    pub next: *const c_void,
10434    pub priority: f32,
10435}
10436
10437impl Default for MemoryPriorityAllocateInfoEXT {
10438    #[inline]
10439    fn default() -> Self {
10440        Self {
10441            s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
10442            next: ptr::null(),
10443            priority: f32::default(),
10444        }
10445    }
10446}
10447
10448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements.html>
10449#[repr(C)]
10450#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10451pub struct MemoryRequirements {
10452    pub size: DeviceSize,
10453    pub alignment: DeviceSize,
10454    pub memory_type_bits: u32,
10455}
10456
10457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2.html>
10458#[repr(C)]
10459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10460pub struct MemoryRequirements2 {
10461    pub s_type: StructureType,
10462    pub next: *mut c_void,
10463    pub memory_requirements: MemoryRequirements,
10464}
10465
10466impl Default for MemoryRequirements2 {
10467    #[inline]
10468    fn default() -> Self {
10469        Self {
10470            s_type: StructureType::MEMORY_REQUIREMENTS_2,
10471            next: ptr::null_mut(),
10472            memory_requirements: MemoryRequirements::default(),
10473        }
10474    }
10475}
10476
10477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemorySciBufPropertiesNV.html>
10478#[repr(C)]
10479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10480pub struct MemorySciBufPropertiesNV {
10481    pub s_type: StructureType,
10482    pub next: *const c_void,
10483    pub memory_type_bits: u32,
10484}
10485
10486impl Default for MemorySciBufPropertiesNV {
10487    #[inline]
10488    fn default() -> Self {
10489        Self {
10490            s_type: StructureType::MEMORY_SCI_BUF_PROPERTIES_NV,
10491            next: ptr::null(),
10492            memory_type_bits: u32::default(),
10493        }
10494    }
10495}
10496
10497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html>
10498#[repr(C)]
10499#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10500pub struct MemoryToImageCopy {
10501    pub s_type: StructureType,
10502    pub next: *const c_void,
10503    pub host_pointer: *const c_void,
10504    pub memory_row_length: u32,
10505    pub memory_image_height: u32,
10506    pub image_subresource: ImageSubresourceLayers,
10507    pub image_offset: Offset3D,
10508    pub image_extent: Extent3D,
10509}
10510
10511impl Default for MemoryToImageCopy {
10512    #[inline]
10513    fn default() -> Self {
10514        Self {
10515            s_type: StructureType::MEMORY_TO_IMAGE_COPY,
10516            next: ptr::null(),
10517            host_pointer: ptr::null(),
10518            memory_row_length: u32::default(),
10519            memory_image_height: u32::default(),
10520            image_subresource: ImageSubresourceLayers::default(),
10521            image_offset: Offset3D::default(),
10522            image_extent: Extent3D::default(),
10523        }
10524    }
10525}
10526
10527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryType.html>
10528#[repr(C)]
10529#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10530pub struct MemoryType {
10531    pub property_flags: MemoryPropertyFlags,
10532    pub heap_index: u32,
10533}
10534
10535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html>
10536#[repr(C)]
10537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10538pub struct MemoryUnmapInfo {
10539    pub s_type: StructureType,
10540    pub next: *const c_void,
10541    pub flags: MemoryUnmapFlags,
10542    pub memory: DeviceMemory,
10543}
10544
10545impl Default for MemoryUnmapInfo {
10546    #[inline]
10547    fn default() -> Self {
10548        Self {
10549            s_type: StructureType::MEMORY_UNMAP_INFO,
10550            next: ptr::null(),
10551            flags: MemoryUnmapFlags::default(),
10552            memory: DeviceMemory::default(),
10553        }
10554    }
10555}
10556
10557/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html>
10558#[repr(C)]
10559#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10560pub struct MemoryWin32HandlePropertiesKHR {
10561    pub s_type: StructureType,
10562    pub next: *mut c_void,
10563    pub memory_type_bits: u32,
10564}
10565
10566impl Default for MemoryWin32HandlePropertiesKHR {
10567    #[inline]
10568    fn default() -> Self {
10569        Self {
10570            s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
10571            next: ptr::null_mut(),
10572            memory_type_bits: u32::default(),
10573        }
10574    }
10575}
10576
10577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>
10578#[repr(C)]
10579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10580pub struct MemoryZirconHandlePropertiesFUCHSIA {
10581    pub s_type: StructureType,
10582    pub next: *mut c_void,
10583    pub memory_type_bits: u32,
10584}
10585
10586impl Default for MemoryZirconHandlePropertiesFUCHSIA {
10587    #[inline]
10588    fn default() -> Self {
10589        Self {
10590            s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
10591            next: ptr::null_mut(),
10592            memory_type_bits: u32::default(),
10593        }
10594    }
10595}
10596
10597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html>
10598#[repr(C)]
10599#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10600pub struct MetalSurfaceCreateInfoEXT {
10601    pub s_type: StructureType,
10602    pub next: *const c_void,
10603    pub flags: MetalSurfaceCreateFlagsEXT,
10604    pub layer: *const CAMetalLayer,
10605}
10606
10607impl Default for MetalSurfaceCreateInfoEXT {
10608    #[inline]
10609    fn default() -> Self {
10610        Self {
10611            s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
10612            next: ptr::null(),
10613            flags: MetalSurfaceCreateFlagsEXT::default(),
10614            layer: ptr::null(),
10615        }
10616    }
10617}
10618
10619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html>
10620#[repr(C)]
10621#[derive(Copy, Clone, Debug)]
10622pub struct MicromapBuildInfoEXT {
10623    pub s_type: StructureType,
10624    pub next: *const c_void,
10625    pub type_: MicromapTypeEXT,
10626    pub flags: BuildMicromapFlagsEXT,
10627    pub mode: BuildMicromapModeEXT,
10628    pub dst_micromap: MicromapEXT,
10629    pub usage_counts_count: u32,
10630    pub usage_counts: *const MicromapUsageEXT,
10631    pub pointer_usage_counts: *const *const MicromapUsageEXT,
10632    pub data: DeviceOrHostAddressConstKHR,
10633    pub scratch_data: DeviceOrHostAddressKHR,
10634    pub triangle_array: DeviceOrHostAddressConstKHR,
10635    pub triangle_array_stride: DeviceSize,
10636}
10637
10638impl Default for MicromapBuildInfoEXT {
10639    #[inline]
10640    fn default() -> Self {
10641        Self {
10642            s_type: StructureType::MICROMAP_BUILD_INFO_EXT,
10643            next: ptr::null(),
10644            type_: MicromapTypeEXT::default(),
10645            flags: BuildMicromapFlagsEXT::default(),
10646            mode: BuildMicromapModeEXT::default(),
10647            dst_micromap: MicromapEXT::default(),
10648            usage_counts_count: u32::default(),
10649            usage_counts: ptr::null(),
10650            pointer_usage_counts: ptr::null(),
10651            data: DeviceOrHostAddressConstKHR::default(),
10652            scratch_data: DeviceOrHostAddressKHR::default(),
10653            triangle_array: DeviceOrHostAddressConstKHR::default(),
10654            triangle_array_stride: DeviceSize::default(),
10655        }
10656    }
10657}
10658
10659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html>
10660#[repr(C)]
10661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10662pub struct MicromapBuildSizesInfoEXT {
10663    pub s_type: StructureType,
10664    pub next: *const c_void,
10665    pub micromap_size: DeviceSize,
10666    pub build_scratch_size: DeviceSize,
10667    pub discardable: Bool32,
10668}
10669
10670impl Default for MicromapBuildSizesInfoEXT {
10671    #[inline]
10672    fn default() -> Self {
10673        Self {
10674            s_type: StructureType::MICROMAP_BUILD_SIZES_INFO_EXT,
10675            next: ptr::null(),
10676            micromap_size: DeviceSize::default(),
10677            build_scratch_size: DeviceSize::default(),
10678            discardable: Bool32::default(),
10679        }
10680    }
10681}
10682
10683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html>
10684#[repr(C)]
10685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10686pub struct MicromapCreateInfoEXT {
10687    pub s_type: StructureType,
10688    pub next: *const c_void,
10689    pub create_flags: MicromapCreateFlagsEXT,
10690    pub buffer: Buffer,
10691    pub offset: DeviceSize,
10692    pub size: DeviceSize,
10693    pub type_: MicromapTypeEXT,
10694    pub device_address: DeviceAddress,
10695}
10696
10697impl Default for MicromapCreateInfoEXT {
10698    #[inline]
10699    fn default() -> Self {
10700        Self {
10701            s_type: StructureType::MICROMAP_CREATE_INFO_EXT,
10702            next: ptr::null(),
10703            create_flags: MicromapCreateFlagsEXT::default(),
10704            buffer: Buffer::default(),
10705            offset: DeviceSize::default(),
10706            size: DeviceSize::default(),
10707            type_: MicromapTypeEXT::default(),
10708            device_address: DeviceAddress::default(),
10709        }
10710    }
10711}
10712
10713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html>
10714#[repr(C)]
10715#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10716pub struct MicromapTriangleEXT {
10717    pub data_offset: u32,
10718    pub subdivision_level: u16,
10719    pub format: u16,
10720}
10721
10722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html>
10723#[repr(C)]
10724#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10725pub struct MicromapUsageEXT {
10726    pub count: u32,
10727    pub subdivision_level: u32,
10728    pub format: u32,
10729}
10730
10731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html>
10732#[repr(C)]
10733#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10734pub struct MicromapVersionInfoEXT {
10735    pub s_type: StructureType,
10736    pub next: *const c_void,
10737    pub version_data: *const u8,
10738}
10739
10740impl Default for MicromapVersionInfoEXT {
10741    #[inline]
10742    fn default() -> Self {
10743        Self {
10744            s_type: StructureType::MICROMAP_VERSION_INFO_EXT,
10745            next: ptr::null(),
10746            version_data: ptr::null(),
10747        }
10748    }
10749}
10750
10751/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html>
10752#[repr(C)]
10753#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10754pub struct MultiDrawIndexedInfoEXT {
10755    pub first_index: u32,
10756    pub index_count: u32,
10757    pub vertex_offset: i32,
10758}
10759
10760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html>
10761#[repr(C)]
10762#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10763pub struct MultiDrawInfoEXT {
10764    pub first_vertex: u32,
10765    pub vertex_count: u32,
10766}
10767
10768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html>
10769#[repr(C)]
10770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10771pub struct MultisamplePropertiesEXT {
10772    pub s_type: StructureType,
10773    pub next: *mut c_void,
10774    pub max_sample_location_grid_size: Extent2D,
10775}
10776
10777impl Default for MultisamplePropertiesEXT {
10778    #[inline]
10779    fn default() -> Self {
10780        Self {
10781            s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
10782            next: ptr::null_mut(),
10783            max_sample_location_grid_size: Extent2D::default(),
10784        }
10785    }
10786}
10787
10788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html>
10789#[repr(C)]
10790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10791pub struct MultisampledRenderToSingleSampledInfoEXT {
10792    pub s_type: StructureType,
10793    pub next: *const c_void,
10794    pub multisampled_render_to_single_sampled_enable: Bool32,
10795    pub rasterization_samples: SampleCountFlags,
10796}
10797
10798impl Default for MultisampledRenderToSingleSampledInfoEXT {
10799    #[inline]
10800    fn default() -> Self {
10801        Self {
10802            s_type: StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT,
10803            next: ptr::null(),
10804            multisampled_render_to_single_sampled_enable: Bool32::default(),
10805            rasterization_samples: SampleCountFlags::default(),
10806        }
10807    }
10808}
10809
10810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html>
10811#[repr(C)]
10812#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10813pub struct MultiviewPerViewAttributesInfoNVX {
10814    pub s_type: StructureType,
10815    pub next: *const c_void,
10816    pub per_view_attributes: Bool32,
10817    pub per_view_attributes_position_x_only: Bool32,
10818}
10819
10820impl Default for MultiviewPerViewAttributesInfoNVX {
10821    #[inline]
10822    fn default() -> Self {
10823        Self {
10824            s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
10825            next: ptr::null(),
10826            per_view_attributes: Bool32::default(),
10827            per_view_attributes_position_x_only: Bool32::default(),
10828        }
10829    }
10830}
10831
10832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html>
10833#[repr(C)]
10834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10835pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
10836    pub s_type: StructureType,
10837    pub next: *const c_void,
10838    pub per_view_render_area_count: u32,
10839    pub per_view_render_areas: *const Rect2D,
10840}
10841
10842impl Default for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
10843    #[inline]
10844    fn default() -> Self {
10845        Self {
10846            s_type: StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM,
10847            next: ptr::null(),
10848            per_view_render_area_count: u32::default(),
10849            per_view_render_areas: ptr::null(),
10850        }
10851    }
10852}
10853
10854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html>
10855#[repr(C)]
10856#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10857pub struct MutableDescriptorTypeCreateInfoEXT {
10858    pub s_type: StructureType,
10859    pub next: *const c_void,
10860    pub mutable_descriptor_type_list_count: u32,
10861    pub mutable_descriptor_type_lists: *const MutableDescriptorTypeListEXT,
10862}
10863
10864impl Default for MutableDescriptorTypeCreateInfoEXT {
10865    #[inline]
10866    fn default() -> Self {
10867        Self {
10868            s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
10869            next: ptr::null(),
10870            mutable_descriptor_type_list_count: u32::default(),
10871            mutable_descriptor_type_lists: ptr::null(),
10872        }
10873    }
10874}
10875
10876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html>
10877#[repr(C)]
10878#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10879pub struct MutableDescriptorTypeListEXT {
10880    pub descriptor_type_count: u32,
10881    pub descriptor_types: *const DescriptorType,
10882}
10883
10884impl Default for MutableDescriptorTypeListEXT {
10885    #[inline]
10886    fn default() -> Self {
10887        Self {
10888            descriptor_type_count: u32::default(),
10889            descriptor_types: ptr::null(),
10890        }
10891    }
10892}
10893
10894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOHSurfaceCreateInfoOHOS.html>
10895#[repr(C)]
10896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10897pub struct OHSurfaceCreateInfoOHOS {
10898    pub s_type: StructureType,
10899    pub next: *const c_void,
10900    pub flags: SurfaceCreateFlagsOHOS,
10901    pub window: *mut OHNativeWindow,
10902}
10903
10904impl Default for OHSurfaceCreateInfoOHOS {
10905    #[inline]
10906    fn default() -> Self {
10907        Self {
10908            s_type: StructureType::OH_SURFACE_CREATE_INFO_OHOS,
10909            next: ptr::null(),
10910            flags: SurfaceCreateFlagsOHOS::default(),
10911            window: ptr::null_mut(),
10912        }
10913    }
10914}
10915
10916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset2D.html>
10917#[repr(C)]
10918#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10919pub struct Offset2D {
10920    pub x: i32,
10921    pub y: i32,
10922}
10923
10924/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset3D.html>
10925#[repr(C)]
10926#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10927pub struct Offset3D {
10928    pub x: i32,
10929    pub y: i32,
10930    pub z: i32,
10931}
10932
10933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html>
10934#[repr(C)]
10935#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10936pub struct OpaqueCaptureDescriptorDataCreateInfoEXT {
10937    pub s_type: StructureType,
10938    pub next: *const c_void,
10939    pub opaque_capture_descriptor_data: *const c_void,
10940}
10941
10942impl Default for OpaqueCaptureDescriptorDataCreateInfoEXT {
10943    #[inline]
10944    fn default() -> Self {
10945        Self {
10946            s_type: StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT,
10947            next: ptr::null(),
10948            opaque_capture_descriptor_data: ptr::null(),
10949        }
10950    }
10951}
10952
10953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html>
10954#[repr(C)]
10955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10956pub struct OpticalFlowExecuteInfoNV {
10957    pub s_type: StructureType,
10958    pub next: *mut c_void,
10959    pub flags: OpticalFlowExecuteFlagsNV,
10960    pub region_count: u32,
10961    pub regions: *const Rect2D,
10962}
10963
10964impl Default for OpticalFlowExecuteInfoNV {
10965    #[inline]
10966    fn default() -> Self {
10967        Self {
10968            s_type: StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV,
10969            next: ptr::null_mut(),
10970            flags: OpticalFlowExecuteFlagsNV::default(),
10971            region_count: u32::default(),
10972            regions: ptr::null(),
10973        }
10974    }
10975}
10976
10977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html>
10978#[repr(C)]
10979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10980pub struct OpticalFlowImageFormatInfoNV {
10981    pub s_type: StructureType,
10982    pub next: *const c_void,
10983    pub usage: OpticalFlowUsageFlagsNV,
10984}
10985
10986impl Default for OpticalFlowImageFormatInfoNV {
10987    #[inline]
10988    fn default() -> Self {
10989        Self {
10990            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV,
10991            next: ptr::null(),
10992            usage: OpticalFlowUsageFlagsNV::default(),
10993        }
10994    }
10995}
10996
10997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html>
10998#[repr(C)]
10999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11000pub struct OpticalFlowImageFormatPropertiesNV {
11001    pub s_type: StructureType,
11002    pub next: *const c_void,
11003    pub format: Format,
11004}
11005
11006impl Default for OpticalFlowImageFormatPropertiesNV {
11007    #[inline]
11008    fn default() -> Self {
11009        Self {
11010            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV,
11011            next: ptr::null(),
11012            format: Format::default(),
11013        }
11014    }
11015}
11016
11017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html>
11018#[repr(C)]
11019#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11020pub struct OpticalFlowSessionCreateInfoNV {
11021    pub s_type: StructureType,
11022    pub next: *mut c_void,
11023    pub width: u32,
11024    pub height: u32,
11025    pub image_format: Format,
11026    pub flow_vector_format: Format,
11027    pub cost_format: Format,
11028    pub output_grid_size: OpticalFlowGridSizeFlagsNV,
11029    pub hint_grid_size: OpticalFlowGridSizeFlagsNV,
11030    pub performance_level: OpticalFlowPerformanceLevelNV,
11031    pub flags: OpticalFlowSessionCreateFlagsNV,
11032}
11033
11034impl Default for OpticalFlowSessionCreateInfoNV {
11035    #[inline]
11036    fn default() -> Self {
11037        Self {
11038            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV,
11039            next: ptr::null_mut(),
11040            width: u32::default(),
11041            height: u32::default(),
11042            image_format: Format::default(),
11043            flow_vector_format: Format::default(),
11044            cost_format: Format::default(),
11045            output_grid_size: OpticalFlowGridSizeFlagsNV::default(),
11046            hint_grid_size: OpticalFlowGridSizeFlagsNV::default(),
11047            performance_level: OpticalFlowPerformanceLevelNV::default(),
11048            flags: OpticalFlowSessionCreateFlagsNV::default(),
11049        }
11050    }
11051}
11052
11053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html>
11054#[repr(C)]
11055#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11056pub struct OpticalFlowSessionCreatePrivateDataInfoNV {
11057    pub s_type: StructureType,
11058    pub next: *mut c_void,
11059    pub id: u32,
11060    pub size: u32,
11061    pub private_data: *const c_void,
11062}
11063
11064impl Default for OpticalFlowSessionCreatePrivateDataInfoNV {
11065    #[inline]
11066    fn default() -> Self {
11067        Self {
11068            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV,
11069            next: ptr::null_mut(),
11070            id: u32::default(),
11071            size: u32::default(),
11072            private_data: ptr::null(),
11073        }
11074    }
11075}
11076
11077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html>
11078#[repr(C)]
11079#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11080pub struct OutOfBandQueueTypeInfoNV {
11081    pub s_type: StructureType,
11082    pub next: *const c_void,
11083    pub queue_type: OutOfBandQueueTypeNV,
11084}
11085
11086impl Default for OutOfBandQueueTypeInfoNV {
11087    #[inline]
11088    fn default() -> Self {
11089        Self {
11090            s_type: StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV,
11091            next: ptr::null(),
11092            queue_type: OutOfBandQueueTypeNV::default(),
11093        }
11094    }
11095}
11096
11097/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html>
11098#[repr(C)]
11099#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11100pub struct PartitionedAccelerationStructureFlagsNV {
11101    pub s_type: StructureType,
11102    pub next: *mut c_void,
11103    pub enable_partition_translation: Bool32,
11104}
11105
11106impl Default for PartitionedAccelerationStructureFlagsNV {
11107    #[inline]
11108    fn default() -> Self {
11109        Self {
11110            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV,
11111            next: ptr::null_mut(),
11112            enable_partition_translation: Bool32::default(),
11113        }
11114    }
11115}
11116
11117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html>
11118#[repr(C)]
11119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11120pub struct PartitionedAccelerationStructureInstancesInputNV {
11121    pub s_type: StructureType,
11122    pub next: *mut c_void,
11123    pub flags: BuildAccelerationStructureFlagsKHR,
11124    pub instance_count: u32,
11125    pub max_instance_per_partition_count: u32,
11126    pub partition_count: u32,
11127    pub max_instance_in_global_partition_count: u32,
11128}
11129
11130impl Default for PartitionedAccelerationStructureInstancesInputNV {
11131    #[inline]
11132    fn default() -> Self {
11133        Self {
11134            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV,
11135            next: ptr::null_mut(),
11136            flags: BuildAccelerationStructureFlagsKHR::default(),
11137            instance_count: u32::default(),
11138            max_instance_per_partition_count: u32::default(),
11139            partition_count: u32::default(),
11140            max_instance_in_global_partition_count: u32::default(),
11141        }
11142    }
11143}
11144
11145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html>
11146#[repr(C)]
11147#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11148pub struct PartitionedAccelerationStructureUpdateInstanceDataNV {
11149    pub instance_index: u32,
11150    pub instance_contribution_to_hit_group_index: u32,
11151    pub acceleration_structure: DeviceAddress,
11152}
11153
11154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html>
11155#[repr(C)]
11156#[derive(Copy, Clone, Default, Debug, PartialEq)]
11157pub struct PartitionedAccelerationStructureWriteInstanceDataNV {
11158    pub transform: TransformMatrixKHR,
11159    pub explicit_aabb: [f32; 6],
11160    pub instance_id: u32,
11161    pub instance_mask: u32,
11162    pub instance_contribution_to_hit_group_index: u32,
11163    pub instance_flags: PartitionedAccelerationStructureInstanceFlagsNV,
11164    pub instance_index: u32,
11165    pub partition_index: u32,
11166    pub acceleration_structure: DeviceAddress,
11167}
11168
11169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html>
11170#[repr(C)]
11171#[derive(Copy, Clone, Default, Debug, PartialEq)]
11172pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNV {
11173    pub partition_index: u32,
11174    pub partition_translation: [f32; 3],
11175}
11176
11177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html>
11178#[repr(C)]
11179#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11180pub struct PastPresentationTimingGOOGLE {
11181    pub present_id: u32,
11182    pub desired_present_time: u64,
11183    pub actual_present_time: u64,
11184    pub earliest_present_time: u64,
11185    pub present_margin: u64,
11186}
11187
11188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileBeginInfoQCOM.html>
11189#[repr(C)]
11190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11191pub struct PerTileBeginInfoQCOM {
11192    pub s_type: StructureType,
11193    pub next: *const c_void,
11194}
11195
11196impl Default for PerTileBeginInfoQCOM {
11197    #[inline]
11198    fn default() -> Self {
11199        Self {
11200            s_type: StructureType::PER_TILE_BEGIN_INFO_QCOM,
11201            next: ptr::null(),
11202        }
11203    }
11204}
11205
11206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileEndInfoQCOM.html>
11207#[repr(C)]
11208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11209pub struct PerTileEndInfoQCOM {
11210    pub s_type: StructureType,
11211    pub next: *const c_void,
11212}
11213
11214impl Default for PerTileEndInfoQCOM {
11215    #[inline]
11216    fn default() -> Self {
11217        Self {
11218            s_type: StructureType::PER_TILE_END_INFO_QCOM,
11219            next: ptr::null(),
11220        }
11221    }
11222}
11223
11224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>
11225#[repr(C)]
11226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11227pub struct PerformanceConfigurationAcquireInfoINTEL {
11228    pub s_type: StructureType,
11229    pub next: *const c_void,
11230    pub type_: PerformanceConfigurationTypeINTEL,
11231}
11232
11233impl Default for PerformanceConfigurationAcquireInfoINTEL {
11234    #[inline]
11235    fn default() -> Self {
11236        Self {
11237            s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
11238            next: ptr::null(),
11239            type_: PerformanceConfigurationTypeINTEL::default(),
11240        }
11241    }
11242}
11243
11244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html>
11245#[repr(C)]
11246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11247pub struct PerformanceCounterDescriptionKHR {
11248    pub s_type: StructureType,
11249    pub next: *mut c_void,
11250    pub flags: PerformanceCounterDescriptionFlagsKHR,
11251    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
11252    pub category: StringArray<MAX_DESCRIPTION_SIZE>,
11253    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
11254}
11255
11256impl Default for PerformanceCounterDescriptionKHR {
11257    #[inline]
11258    fn default() -> Self {
11259        Self {
11260            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
11261            next: ptr::null_mut(),
11262            flags: PerformanceCounterDescriptionFlagsKHR::default(),
11263            name: StringArray::default(),
11264            category: StringArray::default(),
11265            description: StringArray::default(),
11266        }
11267    }
11268}
11269
11270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html>
11271#[repr(C)]
11272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11273pub struct PerformanceCounterKHR {
11274    pub s_type: StructureType,
11275    pub next: *mut c_void,
11276    pub unit: PerformanceCounterUnitKHR,
11277    pub scope: PerformanceCounterScopeKHR,
11278    pub storage: PerformanceCounterStorageKHR,
11279    pub uuid: ByteArray<UUID_SIZE>,
11280}
11281
11282impl Default for PerformanceCounterKHR {
11283    #[inline]
11284    fn default() -> Self {
11285        Self {
11286            s_type: StructureType::PERFORMANCE_COUNTER_KHR,
11287            next: ptr::null_mut(),
11288            unit: PerformanceCounterUnitKHR::default(),
11289            scope: PerformanceCounterScopeKHR::default(),
11290            storage: PerformanceCounterStorageKHR::default(),
11291            uuid: ByteArray::default(),
11292        }
11293    }
11294}
11295
11296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html>
11297#[repr(C)]
11298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11299pub struct PerformanceMarkerInfoINTEL {
11300    pub s_type: StructureType,
11301    pub next: *const c_void,
11302    pub marker: u64,
11303}
11304
11305impl Default for PerformanceMarkerInfoINTEL {
11306    #[inline]
11307    fn default() -> Self {
11308        Self {
11309            s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
11310            next: ptr::null(),
11311            marker: u64::default(),
11312        }
11313    }
11314}
11315
11316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html>
11317#[repr(C)]
11318#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11319pub struct PerformanceOverrideInfoINTEL {
11320    pub s_type: StructureType,
11321    pub next: *const c_void,
11322    pub type_: PerformanceOverrideTypeINTEL,
11323    pub enable: Bool32,
11324    pub parameter: u64,
11325}
11326
11327impl Default for PerformanceOverrideInfoINTEL {
11328    #[inline]
11329    fn default() -> Self {
11330        Self {
11331            s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
11332            next: ptr::null(),
11333            type_: PerformanceOverrideTypeINTEL::default(),
11334            enable: Bool32::default(),
11335            parameter: u64::default(),
11336        }
11337    }
11338}
11339
11340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQueryReservationInfoKHR.html>
11341#[repr(C)]
11342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11343pub struct PerformanceQueryReservationInfoKHR {
11344    pub s_type: StructureType,
11345    pub next: *const c_void,
11346    pub max_performance_queries_per_pool: u32,
11347}
11348
11349impl Default for PerformanceQueryReservationInfoKHR {
11350    #[inline]
11351    fn default() -> Self {
11352        Self {
11353            s_type: StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR,
11354            next: ptr::null(),
11355            max_performance_queries_per_pool: u32::default(),
11356        }
11357    }
11358}
11359
11360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html>
11361#[repr(C)]
11362#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11363pub struct PerformanceQuerySubmitInfoKHR {
11364    pub s_type: StructureType,
11365    pub next: *const c_void,
11366    pub counter_pass_index: u32,
11367}
11368
11369impl Default for PerformanceQuerySubmitInfoKHR {
11370    #[inline]
11371    fn default() -> Self {
11372        Self {
11373            s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
11374            next: ptr::null(),
11375            counter_pass_index: u32::default(),
11376        }
11377    }
11378}
11379
11380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html>
11381#[repr(C)]
11382#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11383pub struct PerformanceStreamMarkerInfoINTEL {
11384    pub s_type: StructureType,
11385    pub next: *const c_void,
11386    pub marker: u32,
11387}
11388
11389impl Default for PerformanceStreamMarkerInfoINTEL {
11390    #[inline]
11391    fn default() -> Self {
11392        Self {
11393            s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
11394            next: ptr::null(),
11395            marker: u32::default(),
11396        }
11397    }
11398}
11399
11400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html>
11401#[repr(C)]
11402#[derive(Copy, Clone, Default, Debug)]
11403pub struct PerformanceValueINTEL {
11404    pub type_: PerformanceValueTypeINTEL,
11405    pub data: PerformanceValueDataINTEL,
11406}
11407
11408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html>
11409#[repr(C)]
11410#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11411pub struct PhysicalDevice16BitStorageFeatures {
11412    pub s_type: StructureType,
11413    pub next: *mut c_void,
11414    pub storage_buffer_16bit_access: Bool32,
11415    pub uniform_and_storage_buffer_16bit_access: Bool32,
11416    pub storage_push_constant16: Bool32,
11417    pub storage_input_output16: Bool32,
11418}
11419
11420impl Default for PhysicalDevice16BitStorageFeatures {
11421    #[inline]
11422    fn default() -> Self {
11423        Self {
11424            s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
11425            next: ptr::null_mut(),
11426            storage_buffer_16bit_access: Bool32::default(),
11427            uniform_and_storage_buffer_16bit_access: Bool32::default(),
11428            storage_push_constant16: Bool32::default(),
11429            storage_input_output16: Bool32::default(),
11430        }
11431    }
11432}
11433
11434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>
11435#[repr(C)]
11436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11437pub struct PhysicalDevice4444FormatsFeaturesEXT {
11438    pub s_type: StructureType,
11439    pub next: *mut c_void,
11440    pub format_a4_r4_g4_b4: Bool32,
11441    pub format_a4_b4_g4_r4: Bool32,
11442}
11443
11444impl Default for PhysicalDevice4444FormatsFeaturesEXT {
11445    #[inline]
11446    fn default() -> Self {
11447        Self {
11448            s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
11449            next: ptr::null_mut(),
11450            format_a4_r4_g4_b4: Bool32::default(),
11451            format_a4_b4_g4_r4: Bool32::default(),
11452        }
11453    }
11454}
11455
11456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html>
11457#[repr(C)]
11458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11459pub struct PhysicalDevice8BitStorageFeatures {
11460    pub s_type: StructureType,
11461    pub next: *mut c_void,
11462    pub storage_buffer_8bit_access: Bool32,
11463    pub uniform_and_storage_buffer_8bit_access: Bool32,
11464    pub storage_push_constant8: Bool32,
11465}
11466
11467impl Default for PhysicalDevice8BitStorageFeatures {
11468    #[inline]
11469    fn default() -> Self {
11470        Self {
11471            s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
11472            next: ptr::null_mut(),
11473            storage_buffer_8bit_access: Bool32::default(),
11474            uniform_and_storage_buffer_8bit_access: Bool32::default(),
11475            storage_push_constant8: Bool32::default(),
11476        }
11477    }
11478}
11479
11480/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>
11481#[repr(C)]
11482#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11483pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
11484    pub s_type: StructureType,
11485    pub next: *mut c_void,
11486    pub decode_mode_shared_exponent: Bool32,
11487}
11488
11489impl Default for PhysicalDeviceASTCDecodeFeaturesEXT {
11490    #[inline]
11491    fn default() -> Self {
11492        Self {
11493            s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
11494            next: ptr::null_mut(),
11495            decode_mode_shared_exponent: Bool32::default(),
11496        }
11497    }
11498}
11499
11500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>
11501#[repr(C)]
11502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11503pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
11504    pub s_type: StructureType,
11505    pub next: *mut c_void,
11506    pub acceleration_structure: Bool32,
11507    pub acceleration_structure_capture_replay: Bool32,
11508    pub acceleration_structure_indirect_build: Bool32,
11509    pub acceleration_structure_host_commands: Bool32,
11510    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
11511}
11512
11513impl Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
11514    #[inline]
11515    fn default() -> Self {
11516        Self {
11517            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
11518            next: ptr::null_mut(),
11519            acceleration_structure: Bool32::default(),
11520            acceleration_structure_capture_replay: Bool32::default(),
11521            acceleration_structure_indirect_build: Bool32::default(),
11522            acceleration_structure_host_commands: Bool32::default(),
11523            descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
11524        }
11525    }
11526}
11527
11528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>
11529#[repr(C)]
11530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11531pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
11532    pub s_type: StructureType,
11533    pub next: *mut c_void,
11534    pub max_geometry_count: u64,
11535    pub max_instance_count: u64,
11536    pub max_primitive_count: u64,
11537    pub max_per_stage_descriptor_acceleration_structures: u32,
11538    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
11539    pub max_descriptor_set_acceleration_structures: u32,
11540    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
11541    pub min_acceleration_structure_scratch_offset_alignment: u32,
11542}
11543
11544impl Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
11545    #[inline]
11546    fn default() -> Self {
11547        Self {
11548            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
11549            next: ptr::null_mut(),
11550            max_geometry_count: u64::default(),
11551            max_instance_count: u64::default(),
11552            max_primitive_count: u64::default(),
11553            max_per_stage_descriptor_acceleration_structures: u32::default(),
11554            max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
11555            max_descriptor_set_acceleration_structures: u32::default(),
11556            max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
11557            min_acceleration_structure_scratch_offset_alignment: u32::default(),
11558        }
11559    }
11560}
11561
11562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html>
11563#[repr(C)]
11564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11565pub struct PhysicalDeviceAddressBindingReportFeaturesEXT {
11566    pub s_type: StructureType,
11567    pub next: *mut c_void,
11568    pub report_address_binding: Bool32,
11569}
11570
11571impl Default for PhysicalDeviceAddressBindingReportFeaturesEXT {
11572    #[inline]
11573    fn default() -> Self {
11574        Self {
11575            s_type: StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT,
11576            next: ptr::null_mut(),
11577            report_address_binding: Bool32::default(),
11578        }
11579    }
11580}
11581
11582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html>
11583#[repr(C)]
11584#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11585pub struct PhysicalDeviceAmigoProfilingFeaturesSEC {
11586    pub s_type: StructureType,
11587    pub next: *mut c_void,
11588    pub amigo_profiling: Bool32,
11589}
11590
11591impl Default for PhysicalDeviceAmigoProfilingFeaturesSEC {
11592    #[inline]
11593    fn default() -> Self {
11594        Self {
11595            s_type: StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC,
11596            next: ptr::null_mut(),
11597            amigo_profiling: Bool32::default(),
11598        }
11599    }
11600}
11601
11602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html>
11603#[repr(C)]
11604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11605pub struct PhysicalDeviceAntiLagFeaturesAMD {
11606    pub s_type: StructureType,
11607    pub next: *mut c_void,
11608    pub anti_lag: Bool32,
11609}
11610
11611impl Default for PhysicalDeviceAntiLagFeaturesAMD {
11612    #[inline]
11613    fn default() -> Self {
11614        Self {
11615            s_type: StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD,
11616            next: ptr::null_mut(),
11617            anti_lag: Bool32::default(),
11618        }
11619    }
11620}
11621
11622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html>
11623#[repr(C)]
11624#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11625pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
11626    pub s_type: StructureType,
11627    pub next: *mut c_void,
11628    pub attachment_feedback_loop_dynamic_state: Bool32,
11629}
11630
11631impl Default for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
11632    #[inline]
11633    fn default() -> Self {
11634        Self {
11635            s_type:
11636                StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT,
11637            next: ptr::null_mut(),
11638            attachment_feedback_loop_dynamic_state: Bool32::default(),
11639        }
11640    }
11641}
11642
11643/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html>
11644#[repr(C)]
11645#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11646pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
11647    pub s_type: StructureType,
11648    pub next: *mut c_void,
11649    pub attachment_feedback_loop_layout: Bool32,
11650}
11651
11652impl Default for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
11653    #[inline]
11654    fn default() -> Self {
11655        Self {
11656            s_type: StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT,
11657            next: ptr::null_mut(),
11658            attachment_feedback_loop_layout: Bool32::default(),
11659        }
11660    }
11661}
11662
11663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>
11664#[repr(C)]
11665#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11666pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
11667    pub s_type: StructureType,
11668    pub next: *mut c_void,
11669    pub advanced_blend_coherent_operations: Bool32,
11670}
11671
11672impl Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
11673    #[inline]
11674    fn default() -> Self {
11675        Self {
11676            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
11677            next: ptr::null_mut(),
11678            advanced_blend_coherent_operations: Bool32::default(),
11679        }
11680    }
11681}
11682
11683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>
11684#[repr(C)]
11685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11686pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
11687    pub s_type: StructureType,
11688    pub next: *mut c_void,
11689    pub advanced_blend_max_color_attachments: u32,
11690    pub advanced_blend_independent_blend: Bool32,
11691    pub advanced_blend_non_premultiplied_src_color: Bool32,
11692    pub advanced_blend_non_premultiplied_dst_color: Bool32,
11693    pub advanced_blend_correlated_overlap: Bool32,
11694    pub advanced_blend_all_operations: Bool32,
11695}
11696
11697impl Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
11698    #[inline]
11699    fn default() -> Self {
11700        Self {
11701            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
11702            next: ptr::null_mut(),
11703            advanced_blend_max_color_attachments: u32::default(),
11704            advanced_blend_independent_blend: Bool32::default(),
11705            advanced_blend_non_premultiplied_src_color: Bool32::default(),
11706            advanced_blend_non_premultiplied_dst_color: Bool32::default(),
11707            advanced_blend_correlated_overlap: Bool32::default(),
11708            advanced_blend_all_operations: Bool32::default(),
11709        }
11710    }
11711}
11712
11713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>
11714#[repr(C)]
11715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11716pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
11717    pub s_type: StructureType,
11718    pub next: *mut c_void,
11719    pub border_color_swizzle: Bool32,
11720    pub border_color_swizzle_from_image: Bool32,
11721}
11722
11723impl Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
11724    #[inline]
11725    fn default() -> Self {
11726        Self {
11727            s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
11728            next: ptr::null_mut(),
11729            border_color_swizzle: Bool32::default(),
11730            border_color_swizzle_from_image: Bool32::default(),
11731        }
11732    }
11733}
11734
11735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>
11736#[repr(C)]
11737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11738pub struct PhysicalDeviceBufferDeviceAddressFeatures {
11739    pub s_type: StructureType,
11740    pub next: *mut c_void,
11741    pub buffer_device_address: Bool32,
11742    pub buffer_device_address_capture_replay: Bool32,
11743    pub buffer_device_address_multi_device: Bool32,
11744}
11745
11746impl Default for PhysicalDeviceBufferDeviceAddressFeatures {
11747    #[inline]
11748    fn default() -> Self {
11749        Self {
11750            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
11751            next: ptr::null_mut(),
11752            buffer_device_address: Bool32::default(),
11753            buffer_device_address_capture_replay: Bool32::default(),
11754            buffer_device_address_multi_device: Bool32::default(),
11755        }
11756    }
11757}
11758
11759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>
11760#[repr(C)]
11761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11762pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
11763    pub s_type: StructureType,
11764    pub next: *mut c_void,
11765    pub buffer_device_address: Bool32,
11766    pub buffer_device_address_capture_replay: Bool32,
11767    pub buffer_device_address_multi_device: Bool32,
11768}
11769
11770impl Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
11771    #[inline]
11772    fn default() -> Self {
11773        Self {
11774            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
11775            next: ptr::null_mut(),
11776            buffer_device_address: Bool32::default(),
11777            buffer_device_address_capture_replay: Bool32::default(),
11778            buffer_device_address_multi_device: Bool32::default(),
11779        }
11780    }
11781}
11782
11783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html>
11784#[repr(C)]
11785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11786pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNV {
11787    pub s_type: StructureType,
11788    pub next: *mut c_void,
11789    pub cluster_acceleration_structure: Bool32,
11790}
11791
11792impl Default for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
11793    #[inline]
11794    fn default() -> Self {
11795        Self {
11796            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV,
11797            next: ptr::null_mut(),
11798            cluster_acceleration_structure: Bool32::default(),
11799        }
11800    }
11801}
11802
11803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html>
11804#[repr(C)]
11805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11806pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNV {
11807    pub s_type: StructureType,
11808    pub next: *mut c_void,
11809    pub max_vertices_per_cluster: u32,
11810    pub max_triangles_per_cluster: u32,
11811    pub cluster_scratch_byte_alignment: u32,
11812    pub cluster_byte_alignment: u32,
11813    pub cluster_template_byte_alignment: u32,
11814    pub cluster_bottom_level_byte_alignment: u32,
11815    pub cluster_template_bounds_byte_alignment: u32,
11816    pub max_cluster_geometry_index: u32,
11817}
11818
11819impl Default for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
11820    #[inline]
11821    fn default() -> Self {
11822        Self {
11823            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV,
11824            next: ptr::null_mut(),
11825            max_vertices_per_cluster: u32::default(),
11826            max_triangles_per_cluster: u32::default(),
11827            cluster_scratch_byte_alignment: u32::default(),
11828            cluster_byte_alignment: u32::default(),
11829            cluster_template_byte_alignment: u32::default(),
11830            cluster_bottom_level_byte_alignment: u32::default(),
11831            cluster_template_bounds_byte_alignment: u32::default(),
11832            max_cluster_geometry_index: u32::default(),
11833        }
11834    }
11835}
11836
11837/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html>
11838#[repr(C)]
11839#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11840pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
11841    pub s_type: StructureType,
11842    pub next: *mut c_void,
11843    pub clusterculling_shader: Bool32,
11844    pub multiview_cluster_culling_shader: Bool32,
11845}
11846
11847impl Default for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
11848    #[inline]
11849    fn default() -> Self {
11850        Self {
11851            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
11852            next: ptr::null_mut(),
11853            clusterculling_shader: Bool32::default(),
11854            multiview_cluster_culling_shader: Bool32::default(),
11855        }
11856    }
11857}
11858
11859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html>
11860#[repr(C)]
11861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11862pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
11863    pub s_type: StructureType,
11864    pub next: *mut c_void,
11865    pub max_work_group_count: [u32; 3],
11866    pub max_work_group_size: [u32; 3],
11867    pub max_output_cluster_count: u32,
11868    pub indirect_buffer_offset_alignment: DeviceSize,
11869}
11870
11871impl Default for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
11872    #[inline]
11873    fn default() -> Self {
11874        Self {
11875            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
11876            next: ptr::null_mut(),
11877            max_work_group_count: [u32::default(); 3],
11878            max_work_group_size: [u32::default(); 3],
11879            max_output_cluster_count: u32::default(),
11880            indirect_buffer_offset_alignment: DeviceSize::default(),
11881        }
11882    }
11883}
11884
11885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html>
11886#[repr(C)]
11887#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11888pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
11889    pub s_type: StructureType,
11890    pub next: *mut c_void,
11891    pub cluster_shading_rate: Bool32,
11892}
11893
11894impl Default for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
11895    #[inline]
11896    fn default() -> Self {
11897        Self {
11898            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
11899            next: ptr::null_mut(),
11900            cluster_shading_rate: Bool32::default(),
11901        }
11902    }
11903}
11904
11905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>
11906#[repr(C)]
11907#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11908pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
11909    pub s_type: StructureType,
11910    pub next: *mut c_void,
11911    pub device_coherent_memory: Bool32,
11912}
11913
11914impl Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
11915    #[inline]
11916    fn default() -> Self {
11917        Self {
11918            s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
11919            next: ptr::null_mut(),
11920            device_coherent_memory: Bool32::default(),
11921        }
11922    }
11923}
11924
11925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>
11926#[repr(C)]
11927#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11928pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
11929    pub s_type: StructureType,
11930    pub next: *mut c_void,
11931    pub color_write_enable: Bool32,
11932}
11933
11934impl Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
11935    #[inline]
11936    fn default() -> Self {
11937        Self {
11938            s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
11939            next: ptr::null_mut(),
11940            color_write_enable: Bool32::default(),
11941        }
11942    }
11943}
11944
11945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html>
11946#[repr(C)]
11947#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11948pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNV {
11949    pub s_type: StructureType,
11950    pub next: *mut c_void,
11951    pub command_buffer_inheritance: Bool32,
11952}
11953
11954impl Default for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
11955    #[inline]
11956    fn default() -> Self {
11957        Self {
11958            s_type: StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV,
11959            next: ptr::null_mut(),
11960            command_buffer_inheritance: Bool32::default(),
11961        }
11962    }
11963}
11964
11965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html>
11966#[repr(C)]
11967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11968pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
11969    pub s_type: StructureType,
11970    pub next: *mut c_void,
11971    pub compute_derivative_group_quads: Bool32,
11972    pub compute_derivative_group_linear: Bool32,
11973}
11974
11975impl Default for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
11976    #[inline]
11977    fn default() -> Self {
11978        Self {
11979            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,
11980            next: ptr::null_mut(),
11981            compute_derivative_group_quads: Bool32::default(),
11982            compute_derivative_group_linear: Bool32::default(),
11983        }
11984    }
11985}
11986
11987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html>
11988#[repr(C)]
11989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11990pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
11991    pub s_type: StructureType,
11992    pub next: *mut c_void,
11993    pub mesh_and_task_shader_derivatives: Bool32,
11994}
11995
11996impl Default for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
11997    #[inline]
11998    fn default() -> Self {
11999        Self {
12000            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR,
12001            next: ptr::null_mut(),
12002            mesh_and_task_shader_derivatives: Bool32::default(),
12003        }
12004    }
12005}
12006
12007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>
12008#[repr(C)]
12009#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12010pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
12011    pub s_type: StructureType,
12012    pub next: *mut c_void,
12013    pub conditional_rendering: Bool32,
12014    pub inherited_conditional_rendering: Bool32,
12015}
12016
12017impl Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
12018    #[inline]
12019    fn default() -> Self {
12020        Self {
12021            s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
12022            next: ptr::null_mut(),
12023            conditional_rendering: Bool32::default(),
12024            inherited_conditional_rendering: Bool32::default(),
12025        }
12026    }
12027}
12028
12029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>
12030#[repr(C)]
12031#[derive(Copy, Clone, Debug, PartialEq)]
12032pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
12033    pub s_type: StructureType,
12034    pub next: *mut c_void,
12035    pub primitive_overestimation_size: f32,
12036    pub max_extra_primitive_overestimation_size: f32,
12037    pub extra_primitive_overestimation_size_granularity: f32,
12038    pub primitive_underestimation: Bool32,
12039    pub conservative_point_and_line_rasterization: Bool32,
12040    pub degenerate_triangles_rasterized: Bool32,
12041    pub degenerate_lines_rasterized: Bool32,
12042    pub fully_covered_fragment_shader_input_variable: Bool32,
12043    pub conservative_rasterization_post_depth_coverage: Bool32,
12044}
12045
12046impl Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
12047    #[inline]
12048    fn default() -> Self {
12049        Self {
12050            s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
12051            next: ptr::null_mut(),
12052            primitive_overestimation_size: f32::default(),
12053            max_extra_primitive_overestimation_size: f32::default(),
12054            extra_primitive_overestimation_size_granularity: f32::default(),
12055            primitive_underestimation: Bool32::default(),
12056            conservative_point_and_line_rasterization: Bool32::default(),
12057            degenerate_triangles_rasterized: Bool32::default(),
12058            degenerate_lines_rasterized: Bool32::default(),
12059            fully_covered_fragment_shader_input_variable: Bool32::default(),
12060            conservative_rasterization_post_depth_coverage: Bool32::default(),
12061        }
12062    }
12063}
12064
12065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html>
12066#[repr(C)]
12067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12068pub struct PhysicalDeviceCooperativeMatrix2FeaturesNV {
12069    pub s_type: StructureType,
12070    pub next: *mut c_void,
12071    pub cooperative_matrix_workgroup_scope: Bool32,
12072    pub cooperative_matrix_flexible_dimensions: Bool32,
12073    pub cooperative_matrix_reductions: Bool32,
12074    pub cooperative_matrix_conversions: Bool32,
12075    pub cooperative_matrix_per_element_operations: Bool32,
12076    pub cooperative_matrix_tensor_addressing: Bool32,
12077    pub cooperative_matrix_block_loads: Bool32,
12078}
12079
12080impl Default for PhysicalDeviceCooperativeMatrix2FeaturesNV {
12081    #[inline]
12082    fn default() -> Self {
12083        Self {
12084            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV,
12085            next: ptr::null_mut(),
12086            cooperative_matrix_workgroup_scope: Bool32::default(),
12087            cooperative_matrix_flexible_dimensions: Bool32::default(),
12088            cooperative_matrix_reductions: Bool32::default(),
12089            cooperative_matrix_conversions: Bool32::default(),
12090            cooperative_matrix_per_element_operations: Bool32::default(),
12091            cooperative_matrix_tensor_addressing: Bool32::default(),
12092            cooperative_matrix_block_loads: Bool32::default(),
12093        }
12094    }
12095}
12096
12097/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html>
12098#[repr(C)]
12099#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12100pub struct PhysicalDeviceCooperativeMatrix2PropertiesNV {
12101    pub s_type: StructureType,
12102    pub next: *mut c_void,
12103    pub cooperative_matrix_workgroup_scope_max_workgroup_size: u32,
12104    pub cooperative_matrix_flexible_dimensions_max_dimension: u32,
12105    pub cooperative_matrix_workgroup_scope_reserved_shared_memory: u32,
12106}
12107
12108impl Default for PhysicalDeviceCooperativeMatrix2PropertiesNV {
12109    #[inline]
12110    fn default() -> Self {
12111        Self {
12112            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV,
12113            next: ptr::null_mut(),
12114            cooperative_matrix_workgroup_scope_max_workgroup_size: u32::default(),
12115            cooperative_matrix_flexible_dimensions_max_dimension: u32::default(),
12116            cooperative_matrix_workgroup_scope_reserved_shared_memory: u32::default(),
12117        }
12118    }
12119}
12120
12121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html>
12122#[repr(C)]
12123#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12124pub struct PhysicalDeviceCooperativeMatrixFeaturesKHR {
12125    pub s_type: StructureType,
12126    pub next: *mut c_void,
12127    pub cooperative_matrix: Bool32,
12128    pub cooperative_matrix_robust_buffer_access: Bool32,
12129}
12130
12131impl Default for PhysicalDeviceCooperativeMatrixFeaturesKHR {
12132    #[inline]
12133    fn default() -> Self {
12134        Self {
12135            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR,
12136            next: ptr::null_mut(),
12137            cooperative_matrix: Bool32::default(),
12138            cooperative_matrix_robust_buffer_access: Bool32::default(),
12139        }
12140    }
12141}
12142
12143/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>
12144#[repr(C)]
12145#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12146pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
12147    pub s_type: StructureType,
12148    pub next: *mut c_void,
12149    pub cooperative_matrix: Bool32,
12150    pub cooperative_matrix_robust_buffer_access: Bool32,
12151}
12152
12153impl Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
12154    #[inline]
12155    fn default() -> Self {
12156        Self {
12157            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
12158            next: ptr::null_mut(),
12159            cooperative_matrix: Bool32::default(),
12160            cooperative_matrix_robust_buffer_access: Bool32::default(),
12161        }
12162    }
12163}
12164
12165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html>
12166#[repr(C)]
12167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12168pub struct PhysicalDeviceCooperativeMatrixPropertiesKHR {
12169    pub s_type: StructureType,
12170    pub next: *mut c_void,
12171    pub cooperative_matrix_supported_stages: ShaderStageFlags,
12172}
12173
12174impl Default for PhysicalDeviceCooperativeMatrixPropertiesKHR {
12175    #[inline]
12176    fn default() -> Self {
12177        Self {
12178            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR,
12179            next: ptr::null_mut(),
12180            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
12181        }
12182    }
12183}
12184
12185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>
12186#[repr(C)]
12187#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12188pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
12189    pub s_type: StructureType,
12190    pub next: *mut c_void,
12191    pub cooperative_matrix_supported_stages: ShaderStageFlags,
12192}
12193
12194impl Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
12195    #[inline]
12196    fn default() -> Self {
12197        Self {
12198            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
12199            next: ptr::null_mut(),
12200            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
12201        }
12202    }
12203}
12204
12205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html>
12206#[repr(C)]
12207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12208pub struct PhysicalDeviceCooperativeVectorFeaturesNV {
12209    pub s_type: StructureType,
12210    pub next: *mut c_void,
12211    pub cooperative_vector: Bool32,
12212    pub cooperative_vector_training: Bool32,
12213}
12214
12215impl Default for PhysicalDeviceCooperativeVectorFeaturesNV {
12216    #[inline]
12217    fn default() -> Self {
12218        Self {
12219            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV,
12220            next: ptr::null_mut(),
12221            cooperative_vector: Bool32::default(),
12222            cooperative_vector_training: Bool32::default(),
12223        }
12224    }
12225}
12226
12227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html>
12228#[repr(C)]
12229#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12230pub struct PhysicalDeviceCooperativeVectorPropertiesNV {
12231    pub s_type: StructureType,
12232    pub next: *mut c_void,
12233    pub cooperative_vector_supported_stages: ShaderStageFlags,
12234    pub cooperative_vector_training_float16_accumulation: Bool32,
12235    pub cooperative_vector_training_float32_accumulation: Bool32,
12236    pub max_cooperative_vector_components: u32,
12237}
12238
12239impl Default for PhysicalDeviceCooperativeVectorPropertiesNV {
12240    #[inline]
12241    fn default() -> Self {
12242        Self {
12243            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV,
12244            next: ptr::null_mut(),
12245            cooperative_vector_supported_stages: ShaderStageFlags::default(),
12246            cooperative_vector_training_float16_accumulation: Bool32::default(),
12247            cooperative_vector_training_float32_accumulation: Bool32::default(),
12248            max_cooperative_vector_components: u32::default(),
12249        }
12250    }
12251}
12252
12253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html>
12254#[repr(C)]
12255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12256pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNV {
12257    pub s_type: StructureType,
12258    pub next: *mut c_void,
12259    pub indirect_copy: Bool32,
12260}
12261
12262impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
12263    #[inline]
12264    fn default() -> Self {
12265        Self {
12266            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV,
12267            next: ptr::null_mut(),
12268            indirect_copy: Bool32::default(),
12269        }
12270    }
12271}
12272
12273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html>
12274#[repr(C)]
12275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12276pub struct PhysicalDeviceCopyMemoryIndirectPropertiesNV {
12277    pub s_type: StructureType,
12278    pub next: *mut c_void,
12279    pub supported_queues: QueueFlags,
12280}
12281
12282impl Default for PhysicalDeviceCopyMemoryIndirectPropertiesNV {
12283    #[inline]
12284    fn default() -> Self {
12285        Self {
12286            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV,
12287            next: ptr::null_mut(),
12288            supported_queues: QueueFlags::default(),
12289        }
12290    }
12291}
12292
12293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>
12294#[repr(C)]
12295#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12296pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
12297    pub s_type: StructureType,
12298    pub next: *mut c_void,
12299    pub corner_sampled_image: Bool32,
12300}
12301
12302impl Default for PhysicalDeviceCornerSampledImageFeaturesNV {
12303    #[inline]
12304    fn default() -> Self {
12305        Self {
12306            s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
12307            next: ptr::null_mut(),
12308            corner_sampled_image: Bool32::default(),
12309        }
12310    }
12311}
12312
12313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>
12314#[repr(C)]
12315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12316pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
12317    pub s_type: StructureType,
12318    pub next: *mut c_void,
12319    pub coverage_reduction_mode: Bool32,
12320}
12321
12322impl Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
12323    #[inline]
12324    fn default() -> Self {
12325        Self {
12326            s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
12327            next: ptr::null_mut(),
12328            coverage_reduction_mode: Bool32::default(),
12329        }
12330    }
12331}
12332
12333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html>
12334#[repr(C)]
12335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12336pub struct PhysicalDeviceCubicClampFeaturesQCOM {
12337    pub s_type: StructureType,
12338    pub next: *mut c_void,
12339    pub cubic_range_clamp: Bool32,
12340}
12341
12342impl Default for PhysicalDeviceCubicClampFeaturesQCOM {
12343    #[inline]
12344    fn default() -> Self {
12345        Self {
12346            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM,
12347            next: ptr::null_mut(),
12348            cubic_range_clamp: Bool32::default(),
12349        }
12350    }
12351}
12352
12353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html>
12354#[repr(C)]
12355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12356pub struct PhysicalDeviceCubicWeightsFeaturesQCOM {
12357    pub s_type: StructureType,
12358    pub next: *mut c_void,
12359    pub selectable_cubic_weights: Bool32,
12360}
12361
12362impl Default for PhysicalDeviceCubicWeightsFeaturesQCOM {
12363    #[inline]
12364    fn default() -> Self {
12365        Self {
12366            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM,
12367            next: ptr::null_mut(),
12368            selectable_cubic_weights: Bool32::default(),
12369        }
12370    }
12371}
12372
12373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html>
12374#[repr(C)]
12375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12376pub struct PhysicalDeviceCudaKernelLaunchFeaturesNV {
12377    pub s_type: StructureType,
12378    pub next: *mut c_void,
12379    pub cuda_kernel_launch_features: Bool32,
12380}
12381
12382impl Default for PhysicalDeviceCudaKernelLaunchFeaturesNV {
12383    #[inline]
12384    fn default() -> Self {
12385        Self {
12386            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV,
12387            next: ptr::null_mut(),
12388            cuda_kernel_launch_features: Bool32::default(),
12389        }
12390    }
12391}
12392
12393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html>
12394#[repr(C)]
12395#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12396pub struct PhysicalDeviceCudaKernelLaunchPropertiesNV {
12397    pub s_type: StructureType,
12398    pub next: *mut c_void,
12399    pub compute_capability_minor: u32,
12400    pub compute_capability_major: u32,
12401}
12402
12403impl Default for PhysicalDeviceCudaKernelLaunchPropertiesNV {
12404    #[inline]
12405    fn default() -> Self {
12406        Self {
12407            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV,
12408            next: ptr::null_mut(),
12409            compute_capability_minor: u32::default(),
12410            compute_capability_major: u32::default(),
12411        }
12412    }
12413}
12414
12415/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>
12416#[repr(C)]
12417#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12418pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
12419    pub s_type: StructureType,
12420    pub next: *mut c_void,
12421    pub custom_border_colors: Bool32,
12422    pub custom_border_color_without_format: Bool32,
12423}
12424
12425impl Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
12426    #[inline]
12427    fn default() -> Self {
12428        Self {
12429            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
12430            next: ptr::null_mut(),
12431            custom_border_colors: Bool32::default(),
12432            custom_border_color_without_format: Bool32::default(),
12433        }
12434    }
12435}
12436
12437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>
12438#[repr(C)]
12439#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12440pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
12441    pub s_type: StructureType,
12442    pub next: *mut c_void,
12443    pub max_custom_border_color_samplers: u32,
12444}
12445
12446impl Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
12447    #[inline]
12448    fn default() -> Self {
12449        Self {
12450            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
12451            next: ptr::null_mut(),
12452            max_custom_border_color_samplers: u32::default(),
12453        }
12454    }
12455}
12456
12457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphFeaturesARM.html>
12458#[repr(C)]
12459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12460pub struct PhysicalDeviceDataGraphFeaturesARM {
12461    pub s_type: StructureType,
12462    pub next: *mut c_void,
12463    pub data_graph: Bool32,
12464    pub data_graph_update_after_bind: Bool32,
12465    pub data_graph_specialization_constants: Bool32,
12466    pub data_graph_descriptor_buffer: Bool32,
12467    pub data_graph_shader_module: Bool32,
12468}
12469
12470impl Default for PhysicalDeviceDataGraphFeaturesARM {
12471    #[inline]
12472    fn default() -> Self {
12473        Self {
12474            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM,
12475            next: ptr::null_mut(),
12476            data_graph: Bool32::default(),
12477            data_graph_update_after_bind: Bool32::default(),
12478            data_graph_specialization_constants: Bool32::default(),
12479            data_graph_descriptor_buffer: Bool32::default(),
12480            data_graph_shader_module: Bool32::default(),
12481        }
12482    }
12483}
12484
12485/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationSupportARM.html>
12486#[repr(C)]
12487#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12488pub struct PhysicalDeviceDataGraphOperationSupportARM {
12489    pub operation_type: PhysicalDeviceDataGraphOperationTypeARM,
12490    pub name: StringArray<MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM>,
12491    pub version: u32,
12492}
12493
12494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineARM.html>
12495#[repr(C)]
12496#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12497pub struct PhysicalDeviceDataGraphProcessingEngineARM {
12498    pub type_: PhysicalDeviceDataGraphProcessingEngineTypeARM,
12499    pub is_foreign: Bool32,
12500}
12501
12502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>
12503#[repr(C)]
12504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12505pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
12506    pub s_type: StructureType,
12507    pub next: *mut c_void,
12508    pub dedicated_allocation_image_aliasing: Bool32,
12509}
12510
12511impl Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
12512    #[inline]
12513    fn default() -> Self {
12514        Self {
12515            s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
12516            next: ptr::null_mut(),
12517            dedicated_allocation_image_aliasing: Bool32::default(),
12518        }
12519    }
12520}
12521
12522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html>
12523#[repr(C)]
12524#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12525pub struct PhysicalDeviceDepthBiasControlFeaturesEXT {
12526    pub s_type: StructureType,
12527    pub next: *mut c_void,
12528    pub depth_bias_control: Bool32,
12529    pub least_representable_value_force_unorm_representation: Bool32,
12530    pub float_representation: Bool32,
12531    pub depth_bias_exact: Bool32,
12532}
12533
12534impl Default for PhysicalDeviceDepthBiasControlFeaturesEXT {
12535    #[inline]
12536    fn default() -> Self {
12537        Self {
12538            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT,
12539            next: ptr::null_mut(),
12540            depth_bias_control: Bool32::default(),
12541            least_representable_value_force_unorm_representation: Bool32::default(),
12542            float_representation: Bool32::default(),
12543            depth_bias_exact: Bool32::default(),
12544        }
12545    }
12546}
12547
12548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html>
12549#[repr(C)]
12550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12551pub struct PhysicalDeviceDepthClampControlFeaturesEXT {
12552    pub s_type: StructureType,
12553    pub next: *mut c_void,
12554    pub depth_clamp_control: Bool32,
12555}
12556
12557impl Default for PhysicalDeviceDepthClampControlFeaturesEXT {
12558    #[inline]
12559    fn default() -> Self {
12560        Self {
12561            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT,
12562            next: ptr::null_mut(),
12563            depth_clamp_control: Bool32::default(),
12564        }
12565    }
12566}
12567
12568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html>
12569#[repr(C)]
12570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12571pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHR {
12572    pub s_type: StructureType,
12573    pub next: *mut c_void,
12574    pub depth_clamp_zero_one: Bool32,
12575}
12576
12577impl Default for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
12578    #[inline]
12579    fn default() -> Self {
12580        Self {
12581            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
12582            next: ptr::null_mut(),
12583            depth_clamp_zero_one: Bool32::default(),
12584        }
12585    }
12586}
12587
12588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>
12589#[repr(C)]
12590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12591pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
12592    pub s_type: StructureType,
12593    pub next: *mut c_void,
12594    pub depth_clip_control: Bool32,
12595}
12596
12597impl Default for PhysicalDeviceDepthClipControlFeaturesEXT {
12598    #[inline]
12599    fn default() -> Self {
12600        Self {
12601            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
12602            next: ptr::null_mut(),
12603            depth_clip_control: Bool32::default(),
12604        }
12605    }
12606}
12607
12608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>
12609#[repr(C)]
12610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12611pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
12612    pub s_type: StructureType,
12613    pub next: *mut c_void,
12614    pub depth_clip_enable: Bool32,
12615}
12616
12617impl Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
12618    #[inline]
12619    fn default() -> Self {
12620        Self {
12621            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
12622            next: ptr::null_mut(),
12623            depth_clip_enable: Bool32::default(),
12624        }
12625    }
12626}
12627
12628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>
12629#[repr(C)]
12630#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12631pub struct PhysicalDeviceDepthStencilResolveProperties {
12632    pub s_type: StructureType,
12633    pub next: *mut c_void,
12634    pub supported_depth_resolve_modes: ResolveModeFlags,
12635    pub supported_stencil_resolve_modes: ResolveModeFlags,
12636    pub independent_resolve_none: Bool32,
12637    pub independent_resolve: Bool32,
12638}
12639
12640impl Default for PhysicalDeviceDepthStencilResolveProperties {
12641    #[inline]
12642    fn default() -> Self {
12643        Self {
12644            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
12645            next: ptr::null_mut(),
12646            supported_depth_resolve_modes: ResolveModeFlags::default(),
12647            supported_stencil_resolve_modes: ResolveModeFlags::default(),
12648            independent_resolve_none: Bool32::default(),
12649            independent_resolve: Bool32::default(),
12650        }
12651    }
12652}
12653
12654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html>
12655#[repr(C)]
12656#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12657pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
12658    pub s_type: StructureType,
12659    pub next: *mut c_void,
12660    pub combined_image_sampler_density_map_descriptor_size: usize,
12661}
12662
12663impl Default for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
12664    #[inline]
12665    fn default() -> Self {
12666        Self {
12667            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT,
12668            next: ptr::null_mut(),
12669            combined_image_sampler_density_map_descriptor_size: usize::default(),
12670        }
12671    }
12672}
12673
12674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html>
12675#[repr(C)]
12676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12677pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
12678    pub s_type: StructureType,
12679    pub next: *mut c_void,
12680    pub descriptor_buffer: Bool32,
12681    pub descriptor_buffer_capture_replay: Bool32,
12682    pub descriptor_buffer_image_layout_ignored: Bool32,
12683    pub descriptor_buffer_push_descriptors: Bool32,
12684}
12685
12686impl Default for PhysicalDeviceDescriptorBufferFeaturesEXT {
12687    #[inline]
12688    fn default() -> Self {
12689        Self {
12690            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
12691            next: ptr::null_mut(),
12692            descriptor_buffer: Bool32::default(),
12693            descriptor_buffer_capture_replay: Bool32::default(),
12694            descriptor_buffer_image_layout_ignored: Bool32::default(),
12695            descriptor_buffer_push_descriptors: Bool32::default(),
12696        }
12697    }
12698}
12699
12700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html>
12701#[repr(C)]
12702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12703pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
12704    pub s_type: StructureType,
12705    pub next: *mut c_void,
12706    pub combined_image_sampler_descriptor_single_array: Bool32,
12707    pub bufferless_push_descriptors: Bool32,
12708    pub allow_sampler_image_view_post_submit_creation: Bool32,
12709    pub descriptor_buffer_offset_alignment: DeviceSize,
12710    pub max_descriptor_buffer_bindings: u32,
12711    pub max_resource_descriptor_buffer_bindings: u32,
12712    pub max_sampler_descriptor_buffer_bindings: u32,
12713    pub max_embedded_immutable_sampler_bindings: u32,
12714    pub max_embedded_immutable_samplers: u32,
12715    pub buffer_capture_replay_descriptor_data_size: usize,
12716    pub image_capture_replay_descriptor_data_size: usize,
12717    pub image_view_capture_replay_descriptor_data_size: usize,
12718    pub sampler_capture_replay_descriptor_data_size: usize,
12719    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
12720    pub sampler_descriptor_size: usize,
12721    pub combined_image_sampler_descriptor_size: usize,
12722    pub sampled_image_descriptor_size: usize,
12723    pub storage_image_descriptor_size: usize,
12724    pub uniform_texel_buffer_descriptor_size: usize,
12725    pub robust_uniform_texel_buffer_descriptor_size: usize,
12726    pub storage_texel_buffer_descriptor_size: usize,
12727    pub robust_storage_texel_buffer_descriptor_size: usize,
12728    pub uniform_buffer_descriptor_size: usize,
12729    pub robust_uniform_buffer_descriptor_size: usize,
12730    pub storage_buffer_descriptor_size: usize,
12731    pub robust_storage_buffer_descriptor_size: usize,
12732    pub input_attachment_descriptor_size: usize,
12733    pub acceleration_structure_descriptor_size: usize,
12734    pub max_sampler_descriptor_buffer_range: DeviceSize,
12735    pub max_resource_descriptor_buffer_range: DeviceSize,
12736    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
12737    pub resource_descriptor_buffer_address_space_size: DeviceSize,
12738    pub descriptor_buffer_address_space_size: DeviceSize,
12739}
12740
12741impl Default for PhysicalDeviceDescriptorBufferPropertiesEXT {
12742    #[inline]
12743    fn default() -> Self {
12744        Self {
12745            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT,
12746            next: ptr::null_mut(),
12747            combined_image_sampler_descriptor_single_array: Bool32::default(),
12748            bufferless_push_descriptors: Bool32::default(),
12749            allow_sampler_image_view_post_submit_creation: Bool32::default(),
12750            descriptor_buffer_offset_alignment: DeviceSize::default(),
12751            max_descriptor_buffer_bindings: u32::default(),
12752            max_resource_descriptor_buffer_bindings: u32::default(),
12753            max_sampler_descriptor_buffer_bindings: u32::default(),
12754            max_embedded_immutable_sampler_bindings: u32::default(),
12755            max_embedded_immutable_samplers: u32::default(),
12756            buffer_capture_replay_descriptor_data_size: usize::default(),
12757            image_capture_replay_descriptor_data_size: usize::default(),
12758            image_view_capture_replay_descriptor_data_size: usize::default(),
12759            sampler_capture_replay_descriptor_data_size: usize::default(),
12760            acceleration_structure_capture_replay_descriptor_data_size: usize::default(),
12761            sampler_descriptor_size: usize::default(),
12762            combined_image_sampler_descriptor_size: usize::default(),
12763            sampled_image_descriptor_size: usize::default(),
12764            storage_image_descriptor_size: usize::default(),
12765            uniform_texel_buffer_descriptor_size: usize::default(),
12766            robust_uniform_texel_buffer_descriptor_size: usize::default(),
12767            storage_texel_buffer_descriptor_size: usize::default(),
12768            robust_storage_texel_buffer_descriptor_size: usize::default(),
12769            uniform_buffer_descriptor_size: usize::default(),
12770            robust_uniform_buffer_descriptor_size: usize::default(),
12771            storage_buffer_descriptor_size: usize::default(),
12772            robust_storage_buffer_descriptor_size: usize::default(),
12773            input_attachment_descriptor_size: usize::default(),
12774            acceleration_structure_descriptor_size: usize::default(),
12775            max_sampler_descriptor_buffer_range: DeviceSize::default(),
12776            max_resource_descriptor_buffer_range: DeviceSize::default(),
12777            sampler_descriptor_buffer_address_space_size: DeviceSize::default(),
12778            resource_descriptor_buffer_address_space_size: DeviceSize::default(),
12779            descriptor_buffer_address_space_size: DeviceSize::default(),
12780        }
12781    }
12782}
12783
12784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorFeaturesARM.html>
12785#[repr(C)]
12786#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12787pub struct PhysicalDeviceDescriptorBufferTensorFeaturesARM {
12788    pub s_type: StructureType,
12789    pub next: *mut c_void,
12790    pub descriptor_buffer_tensor_descriptors: Bool32,
12791}
12792
12793impl Default for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
12794    #[inline]
12795    fn default() -> Self {
12796        Self {
12797            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM,
12798            next: ptr::null_mut(),
12799            descriptor_buffer_tensor_descriptors: Bool32::default(),
12800        }
12801    }
12802}
12803
12804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorPropertiesARM.html>
12805#[repr(C)]
12806#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12807pub struct PhysicalDeviceDescriptorBufferTensorPropertiesARM {
12808    pub s_type: StructureType,
12809    pub next: *mut c_void,
12810    pub tensor_capture_replay_descriptor_data_size: usize,
12811    pub tensor_view_capture_replay_descriptor_data_size: usize,
12812    pub tensor_descriptor_size: usize,
12813}
12814
12815impl Default for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
12816    #[inline]
12817    fn default() -> Self {
12818        Self {
12819            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM,
12820            next: ptr::null_mut(),
12821            tensor_capture_replay_descriptor_data_size: usize::default(),
12822            tensor_view_capture_replay_descriptor_data_size: usize::default(),
12823            tensor_descriptor_size: usize::default(),
12824        }
12825    }
12826}
12827
12828/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>
12829#[repr(C)]
12830#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12831pub struct PhysicalDeviceDescriptorIndexingFeatures {
12832    pub s_type: StructureType,
12833    pub next: *mut c_void,
12834    pub shader_input_attachment_array_dynamic_indexing: Bool32,
12835    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
12836    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
12837    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
12838    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
12839    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
12840    pub shader_storage_image_array_non_uniform_indexing: Bool32,
12841    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
12842    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
12843    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
12844    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
12845    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
12846    pub descriptor_binding_storage_image_update_after_bind: Bool32,
12847    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
12848    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
12849    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
12850    pub descriptor_binding_update_unused_while_pending: Bool32,
12851    pub descriptor_binding_partially_bound: Bool32,
12852    pub descriptor_binding_variable_descriptor_count: Bool32,
12853    pub runtime_descriptor_array: Bool32,
12854}
12855
12856impl Default for PhysicalDeviceDescriptorIndexingFeatures {
12857    #[inline]
12858    fn default() -> Self {
12859        Self {
12860            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
12861            next: ptr::null_mut(),
12862            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
12863            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
12864            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
12865            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
12866            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
12867            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
12868            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
12869            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
12870            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
12871            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
12872            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
12873            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
12874            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
12875            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
12876            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
12877            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
12878            descriptor_binding_update_unused_while_pending: Bool32::default(),
12879            descriptor_binding_partially_bound: Bool32::default(),
12880            descriptor_binding_variable_descriptor_count: Bool32::default(),
12881            runtime_descriptor_array: Bool32::default(),
12882        }
12883    }
12884}
12885
12886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>
12887#[repr(C)]
12888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12889pub struct PhysicalDeviceDescriptorIndexingProperties {
12890    pub s_type: StructureType,
12891    pub next: *mut c_void,
12892    pub max_update_after_bind_descriptors_in_all_pools: u32,
12893    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
12894    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
12895    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
12896    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
12897    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
12898    pub robust_buffer_access_update_after_bind: Bool32,
12899    pub quad_divergent_implicit_lod: Bool32,
12900    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
12901    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
12902    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
12903    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
12904    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
12905    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
12906    pub max_per_stage_update_after_bind_resources: u32,
12907    pub max_descriptor_set_update_after_bind_samplers: u32,
12908    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
12909    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
12910    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
12911    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
12912    pub max_descriptor_set_update_after_bind_sampled_images: u32,
12913    pub max_descriptor_set_update_after_bind_storage_images: u32,
12914    pub max_descriptor_set_update_after_bind_input_attachments: u32,
12915}
12916
12917impl Default for PhysicalDeviceDescriptorIndexingProperties {
12918    #[inline]
12919    fn default() -> Self {
12920        Self {
12921            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
12922            next: ptr::null_mut(),
12923            max_update_after_bind_descriptors_in_all_pools: u32::default(),
12924            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
12925            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
12926            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
12927            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
12928            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
12929            robust_buffer_access_update_after_bind: Bool32::default(),
12930            quad_divergent_implicit_lod: Bool32::default(),
12931            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
12932            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
12933            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
12934            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
12935            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
12936            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
12937            max_per_stage_update_after_bind_resources: u32::default(),
12938            max_descriptor_set_update_after_bind_samplers: u32::default(),
12939            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
12940            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
12941            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
12942            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
12943            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
12944            max_descriptor_set_update_after_bind_storage_images: u32::default(),
12945            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
12946        }
12947    }
12948}
12949
12950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html>
12951#[repr(C)]
12952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12953pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
12954    pub s_type: StructureType,
12955    pub next: *mut c_void,
12956    pub descriptor_pool_overallocation: Bool32,
12957}
12958
12959impl Default for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
12960    #[inline]
12961    fn default() -> Self {
12962        Self {
12963            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV,
12964            next: ptr::null_mut(),
12965            descriptor_pool_overallocation: Bool32::default(),
12966        }
12967    }
12968}
12969
12970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html>
12971#[repr(C)]
12972#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12973pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
12974    pub s_type: StructureType,
12975    pub next: *mut c_void,
12976    pub descriptor_set_host_mapping: Bool32,
12977}
12978
12979impl Default for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
12980    #[inline]
12981    fn default() -> Self {
12982        Self {
12983            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,
12984            next: ptr::null_mut(),
12985            descriptor_set_host_mapping: Bool32::default(),
12986        }
12987    }
12988}
12989
12990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html>
12991#[repr(C)]
12992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12993pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
12994    pub s_type: StructureType,
12995    pub next: *mut c_void,
12996    pub device_generated_compute: Bool32,
12997    pub device_generated_compute_pipelines: Bool32,
12998    pub device_generated_compute_capture_replay: Bool32,
12999}
13000
13001impl Default for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
13002    #[inline]
13003    fn default() -> Self {
13004        Self {
13005            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV,
13006            next: ptr::null_mut(),
13007            device_generated_compute: Bool32::default(),
13008            device_generated_compute_pipelines: Bool32::default(),
13009            device_generated_compute_capture_replay: Bool32::default(),
13010        }
13011    }
13012}
13013
13014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html>
13015#[repr(C)]
13016#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13017pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
13018    pub s_type: StructureType,
13019    pub next: *mut c_void,
13020    pub device_generated_commands: Bool32,
13021    pub dynamic_generated_pipeline_layout: Bool32,
13022}
13023
13024impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
13025    #[inline]
13026    fn default() -> Self {
13027        Self {
13028            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT,
13029            next: ptr::null_mut(),
13030            device_generated_commands: Bool32::default(),
13031            dynamic_generated_pipeline_layout: Bool32::default(),
13032        }
13033    }
13034}
13035
13036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>
13037#[repr(C)]
13038#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13039pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
13040    pub s_type: StructureType,
13041    pub next: *mut c_void,
13042    pub device_generated_commands: Bool32,
13043}
13044
13045impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
13046    #[inline]
13047    fn default() -> Self {
13048        Self {
13049            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
13050            next: ptr::null_mut(),
13051            device_generated_commands: Bool32::default(),
13052        }
13053    }
13054}
13055
13056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html>
13057#[repr(C)]
13058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13059pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
13060    pub s_type: StructureType,
13061    pub next: *mut c_void,
13062    pub max_indirect_pipeline_count: u32,
13063    pub max_indirect_shader_object_count: u32,
13064    pub max_indirect_sequence_count: u32,
13065    pub max_indirect_commands_token_count: u32,
13066    pub max_indirect_commands_token_offset: u32,
13067    pub max_indirect_commands_indirect_stride: u32,
13068    pub supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT,
13069    pub supported_indirect_commands_shader_stages: ShaderStageFlags,
13070    pub supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags,
13071    pub supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags,
13072    pub device_generated_commands_transform_feedback: Bool32,
13073    pub device_generated_commands_multi_draw_indirect_count: Bool32,
13074}
13075
13076impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
13077    #[inline]
13078    fn default() -> Self {
13079        Self {
13080            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT,
13081            next: ptr::null_mut(),
13082            max_indirect_pipeline_count: u32::default(),
13083            max_indirect_shader_object_count: u32::default(),
13084            max_indirect_sequence_count: u32::default(),
13085            max_indirect_commands_token_count: u32::default(),
13086            max_indirect_commands_token_offset: u32::default(),
13087            max_indirect_commands_indirect_stride: u32::default(),
13088            supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT::default(),
13089            supported_indirect_commands_shader_stages: ShaderStageFlags::default(),
13090            supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags::default(),
13091            supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags::default(),
13092            device_generated_commands_transform_feedback: Bool32::default(),
13093            device_generated_commands_multi_draw_indirect_count: Bool32::default(),
13094        }
13095    }
13096}
13097
13098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>
13099#[repr(C)]
13100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13101pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
13102    pub s_type: StructureType,
13103    pub next: *mut c_void,
13104    pub max_graphics_shader_group_count: u32,
13105    pub max_indirect_sequence_count: u32,
13106    pub max_indirect_commands_token_count: u32,
13107    pub max_indirect_commands_stream_count: u32,
13108    pub max_indirect_commands_token_offset: u32,
13109    pub max_indirect_commands_stream_stride: u32,
13110    pub min_sequences_count_buffer_offset_alignment: u32,
13111    pub min_sequences_index_buffer_offset_alignment: u32,
13112    pub min_indirect_commands_buffer_offset_alignment: u32,
13113}
13114
13115impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
13116    #[inline]
13117    fn default() -> Self {
13118        Self {
13119            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
13120            next: ptr::null_mut(),
13121            max_graphics_shader_group_count: u32::default(),
13122            max_indirect_sequence_count: u32::default(),
13123            max_indirect_commands_token_count: u32::default(),
13124            max_indirect_commands_stream_count: u32::default(),
13125            max_indirect_commands_token_offset: u32::default(),
13126            max_indirect_commands_stream_stride: u32::default(),
13127            min_sequences_count_buffer_offset_alignment: u32::default(),
13128            min_sequences_index_buffer_offset_alignment: u32::default(),
13129            min_indirect_commands_buffer_offset_alignment: u32::default(),
13130        }
13131    }
13132}
13133
13134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>
13135#[repr(C)]
13136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13137pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
13138    pub s_type: StructureType,
13139    pub next: *mut c_void,
13140    pub device_memory_report: Bool32,
13141}
13142
13143impl Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
13144    #[inline]
13145    fn default() -> Self {
13146        Self {
13147            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
13148            next: ptr::null_mut(),
13149            device_memory_report: Bool32::default(),
13150        }
13151    }
13152}
13153
13154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>
13155#[repr(C)]
13156#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13157pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
13158    pub s_type: StructureType,
13159    pub next: *mut c_void,
13160    pub diagnostics_config: Bool32,
13161}
13162
13163impl Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
13164    #[inline]
13165    fn default() -> Self {
13166        Self {
13167            s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
13168            next: ptr::null_mut(),
13169            diagnostics_config: Bool32::default(),
13170        }
13171    }
13172}
13173
13174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>
13175#[repr(C)]
13176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13177pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
13178    pub s_type: StructureType,
13179    pub next: *mut c_void,
13180    pub max_discard_rectangles: u32,
13181}
13182
13183impl Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
13184    #[inline]
13185    fn default() -> Self {
13186        Self {
13187            s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
13188            next: ptr::null_mut(),
13189            max_discard_rectangles: u32::default(),
13190        }
13191    }
13192}
13193
13194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html>
13195#[repr(C)]
13196#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13197pub struct PhysicalDeviceDisplacementMicromapFeaturesNV {
13198    pub s_type: StructureType,
13199    pub next: *mut c_void,
13200    pub displacement_micromap: Bool32,
13201}
13202
13203impl Default for PhysicalDeviceDisplacementMicromapFeaturesNV {
13204    #[inline]
13205    fn default() -> Self {
13206        Self {
13207            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV,
13208            next: ptr::null_mut(),
13209            displacement_micromap: Bool32::default(),
13210        }
13211    }
13212}
13213
13214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html>
13215#[repr(C)]
13216#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13217pub struct PhysicalDeviceDisplacementMicromapPropertiesNV {
13218    pub s_type: StructureType,
13219    pub next: *mut c_void,
13220    pub max_displacement_micromap_subdivision_level: u32,
13221}
13222
13223impl Default for PhysicalDeviceDisplacementMicromapPropertiesNV {
13224    #[inline]
13225    fn default() -> Self {
13226        Self {
13227            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV,
13228            next: ptr::null_mut(),
13229            max_displacement_micromap_subdivision_level: u32::default(),
13230        }
13231    }
13232}
13233
13234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html>
13235#[repr(C)]
13236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13237pub struct PhysicalDeviceDriverProperties {
13238    pub s_type: StructureType,
13239    pub next: *mut c_void,
13240    pub driver_id: DriverId,
13241    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
13242    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
13243    pub conformance_version: ConformanceVersion,
13244}
13245
13246impl Default for PhysicalDeviceDriverProperties {
13247    #[inline]
13248    fn default() -> Self {
13249        Self {
13250            s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
13251            next: ptr::null_mut(),
13252            driver_id: DriverId::default(),
13253            driver_name: StringArray::default(),
13254            driver_info: StringArray::default(),
13255            conformance_version: ConformanceVersion::default(),
13256        }
13257    }
13258}
13259
13260/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>
13261#[repr(C)]
13262#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13263pub struct PhysicalDeviceDrmPropertiesEXT {
13264    pub s_type: StructureType,
13265    pub next: *mut c_void,
13266    pub has_primary: Bool32,
13267    pub has_render: Bool32,
13268    pub primary_major: i64,
13269    pub primary_minor: i64,
13270    pub render_major: i64,
13271    pub render_minor: i64,
13272}
13273
13274impl Default for PhysicalDeviceDrmPropertiesEXT {
13275    #[inline]
13276    fn default() -> Self {
13277        Self {
13278            s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
13279            next: ptr::null_mut(),
13280            has_primary: Bool32::default(),
13281            has_render: Bool32::default(),
13282            primary_major: i64::default(),
13283            primary_minor: i64::default(),
13284            render_major: i64::default(),
13285            render_minor: i64::default(),
13286        }
13287    }
13288}
13289
13290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html>
13291#[repr(C)]
13292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13293pub struct PhysicalDeviceDynamicRenderingFeatures {
13294    pub s_type: StructureType,
13295    pub next: *mut c_void,
13296    pub dynamic_rendering: Bool32,
13297}
13298
13299impl Default for PhysicalDeviceDynamicRenderingFeatures {
13300    #[inline]
13301    fn default() -> Self {
13302        Self {
13303            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
13304            next: ptr::null_mut(),
13305            dynamic_rendering: Bool32::default(),
13306        }
13307    }
13308}
13309
13310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html>
13311#[repr(C)]
13312#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13313pub struct PhysicalDeviceDynamicRenderingLocalReadFeatures {
13314    pub s_type: StructureType,
13315    pub next: *mut c_void,
13316    pub dynamic_rendering_local_read: Bool32,
13317}
13318
13319impl Default for PhysicalDeviceDynamicRenderingLocalReadFeatures {
13320    #[inline]
13321    fn default() -> Self {
13322        Self {
13323            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,
13324            next: ptr::null_mut(),
13325            dynamic_rendering_local_read: Bool32::default(),
13326        }
13327    }
13328}
13329
13330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html>
13331#[repr(C)]
13332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13333pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
13334    pub s_type: StructureType,
13335    pub next: *mut c_void,
13336    pub dynamic_rendering_unused_attachments: Bool32,
13337}
13338
13339impl Default for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
13340    #[inline]
13341    fn default() -> Self {
13342        Self {
13343            s_type:
13344                StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT,
13345            next: ptr::null_mut(),
13346            dynamic_rendering_unused_attachments: Bool32::default(),
13347        }
13348    }
13349}
13350
13351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>
13352#[repr(C)]
13353#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13354pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
13355    pub s_type: StructureType,
13356    pub next: *mut c_void,
13357    pub exclusive_scissor: Bool32,
13358}
13359
13360impl Default for PhysicalDeviceExclusiveScissorFeaturesNV {
13361    #[inline]
13362    fn default() -> Self {
13363        Self {
13364            s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
13365            next: ptr::null_mut(),
13366            exclusive_scissor: Bool32::default(),
13367        }
13368    }
13369}
13370
13371/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>
13372#[repr(C)]
13373#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13374pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
13375    pub s_type: StructureType,
13376    pub next: *mut c_void,
13377    pub extended_dynamic_state2: Bool32,
13378    pub extended_dynamic_state2_logic_op: Bool32,
13379    pub extended_dynamic_state2_patch_control_points: Bool32,
13380}
13381
13382impl Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
13383    #[inline]
13384    fn default() -> Self {
13385        Self {
13386            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
13387            next: ptr::null_mut(),
13388            extended_dynamic_state2: Bool32::default(),
13389            extended_dynamic_state2_logic_op: Bool32::default(),
13390            extended_dynamic_state2_patch_control_points: Bool32::default(),
13391        }
13392    }
13393}
13394
13395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html>
13396#[repr(C)]
13397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13398pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXT {
13399    pub s_type: StructureType,
13400    pub next: *mut c_void,
13401    pub extended_dynamic_state3_tessellation_domain_origin: Bool32,
13402    pub extended_dynamic_state_3depth_clamp_enable: Bool32,
13403    pub extended_dynamic_state3_polygon_mode: Bool32,
13404    pub extended_dynamic_state3_rasterization_samples: Bool32,
13405    pub extended_dynamic_state3_sample_mask: Bool32,
13406    pub extended_dynamic_state3_alpha_to_coverage_enable: Bool32,
13407    pub extended_dynamic_state3_alpha_to_one_enable: Bool32,
13408    pub extended_dynamic_state3_logic_op_enable: Bool32,
13409    pub extended_dynamic_state3_color_blend_enable: Bool32,
13410    pub extended_dynamic_state3_color_blend_equation: Bool32,
13411    pub extended_dynamic_state3_color_write_mask: Bool32,
13412    pub extended_dynamic_state3_rasterization_stream: Bool32,
13413    pub extended_dynamic_state3_conservative_rasterization_mode: Bool32,
13414    pub extended_dynamic_state3_extra_primitive_overestimation_size: Bool32,
13415    pub extended_dynamic_state_3depth_clip_enable: Bool32,
13416    pub extended_dynamic_state3_sample_locations_enable: Bool32,
13417    pub extended_dynamic_state3_color_blend_advanced: Bool32,
13418    pub extended_dynamic_state3_provoking_vertex_mode: Bool32,
13419    pub extended_dynamic_state3_line_rasterization_mode: Bool32,
13420    pub extended_dynamic_state3_line_stipple_enable: Bool32,
13421    pub extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32,
13422    pub extended_dynamic_state3_viewport_w_scaling_enable: Bool32,
13423    pub extended_dynamic_state3_viewport_swizzle: Bool32,
13424    pub extended_dynamic_state3_coverage_to_color_enable: Bool32,
13425    pub extended_dynamic_state3_coverage_to_color_location: Bool32,
13426    pub extended_dynamic_state3_coverage_modulation_mode: Bool32,
13427    pub extended_dynamic_state3_coverage_modulation_table_enable: Bool32,
13428    pub extended_dynamic_state3_coverage_modulation_table: Bool32,
13429    pub extended_dynamic_state3_coverage_reduction_mode: Bool32,
13430    pub extended_dynamic_state3_representative_fragment_test_enable: Bool32,
13431    pub extended_dynamic_state3_shading_rate_image_enable: Bool32,
13432}
13433
13434impl Default for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
13435    #[inline]
13436    fn default() -> Self {
13437        Self {
13438            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
13439            next: ptr::null_mut(),
13440            extended_dynamic_state3_tessellation_domain_origin: Bool32::default(),
13441            extended_dynamic_state_3depth_clamp_enable: Bool32::default(),
13442            extended_dynamic_state3_polygon_mode: Bool32::default(),
13443            extended_dynamic_state3_rasterization_samples: Bool32::default(),
13444            extended_dynamic_state3_sample_mask: Bool32::default(),
13445            extended_dynamic_state3_alpha_to_coverage_enable: Bool32::default(),
13446            extended_dynamic_state3_alpha_to_one_enable: Bool32::default(),
13447            extended_dynamic_state3_logic_op_enable: Bool32::default(),
13448            extended_dynamic_state3_color_blend_enable: Bool32::default(),
13449            extended_dynamic_state3_color_blend_equation: Bool32::default(),
13450            extended_dynamic_state3_color_write_mask: Bool32::default(),
13451            extended_dynamic_state3_rasterization_stream: Bool32::default(),
13452            extended_dynamic_state3_conservative_rasterization_mode: Bool32::default(),
13453            extended_dynamic_state3_extra_primitive_overestimation_size: Bool32::default(),
13454            extended_dynamic_state_3depth_clip_enable: Bool32::default(),
13455            extended_dynamic_state3_sample_locations_enable: Bool32::default(),
13456            extended_dynamic_state3_color_blend_advanced: Bool32::default(),
13457            extended_dynamic_state3_provoking_vertex_mode: Bool32::default(),
13458            extended_dynamic_state3_line_rasterization_mode: Bool32::default(),
13459            extended_dynamic_state3_line_stipple_enable: Bool32::default(),
13460            extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32::default(),
13461            extended_dynamic_state3_viewport_w_scaling_enable: Bool32::default(),
13462            extended_dynamic_state3_viewport_swizzle: Bool32::default(),
13463            extended_dynamic_state3_coverage_to_color_enable: Bool32::default(),
13464            extended_dynamic_state3_coverage_to_color_location: Bool32::default(),
13465            extended_dynamic_state3_coverage_modulation_mode: Bool32::default(),
13466            extended_dynamic_state3_coverage_modulation_table_enable: Bool32::default(),
13467            extended_dynamic_state3_coverage_modulation_table: Bool32::default(),
13468            extended_dynamic_state3_coverage_reduction_mode: Bool32::default(),
13469            extended_dynamic_state3_representative_fragment_test_enable: Bool32::default(),
13470            extended_dynamic_state3_shading_rate_image_enable: Bool32::default(),
13471        }
13472    }
13473}
13474
13475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html>
13476#[repr(C)]
13477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13478pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXT {
13479    pub s_type: StructureType,
13480    pub next: *mut c_void,
13481    pub dynamic_primitive_topology_unrestricted: Bool32,
13482}
13483
13484impl Default for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
13485    #[inline]
13486    fn default() -> Self {
13487        Self {
13488            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT,
13489            next: ptr::null_mut(),
13490            dynamic_primitive_topology_unrestricted: Bool32::default(),
13491        }
13492    }
13493}
13494
13495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>
13496#[repr(C)]
13497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13498pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
13499    pub s_type: StructureType,
13500    pub next: *mut c_void,
13501    pub extended_dynamic_state: Bool32,
13502}
13503
13504impl Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
13505    #[inline]
13506    fn default() -> Self {
13507        Self {
13508            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
13509            next: ptr::null_mut(),
13510            extended_dynamic_state: Bool32::default(),
13511        }
13512    }
13513}
13514
13515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html>
13516#[repr(C)]
13517#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13518pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
13519    pub s_type: StructureType,
13520    pub next: *mut c_void,
13521    pub extended_sparse_address_space: Bool32,
13522}
13523
13524impl Default for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
13525    #[inline]
13526    fn default() -> Self {
13527        Self {
13528            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV,
13529            next: ptr::null_mut(),
13530            extended_sparse_address_space: Bool32::default(),
13531        }
13532    }
13533}
13534
13535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html>
13536#[repr(C)]
13537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13538pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
13539    pub s_type: StructureType,
13540    pub next: *mut c_void,
13541    pub extended_sparse_address_space_size: DeviceSize,
13542    pub extended_sparse_image_usage_flags: ImageUsageFlags,
13543    pub extended_sparse_buffer_usage_flags: BufferUsageFlags,
13544}
13545
13546impl Default for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
13547    #[inline]
13548    fn default() -> Self {
13549        Self {
13550            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
13551            next: ptr::null_mut(),
13552            extended_sparse_address_space_size: DeviceSize::default(),
13553            extended_sparse_image_usage_flags: ImageUsageFlags::default(),
13554            extended_sparse_buffer_usage_flags: BufferUsageFlags::default(),
13555        }
13556    }
13557}
13558
13559/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html>
13560#[repr(C)]
13561#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13562pub struct PhysicalDeviceExternalBufferInfo {
13563    pub s_type: StructureType,
13564    pub next: *const c_void,
13565    pub flags: BufferCreateFlags,
13566    pub usage: BufferUsageFlags,
13567    pub handle_type: ExternalMemoryHandleTypeFlags,
13568}
13569
13570impl Default for PhysicalDeviceExternalBufferInfo {
13571    #[inline]
13572    fn default() -> Self {
13573        Self {
13574            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
13575            next: ptr::null(),
13576            flags: BufferCreateFlags::default(),
13577            usage: BufferUsageFlags::default(),
13578            handle_type: ExternalMemoryHandleTypeFlags::default(),
13579        }
13580    }
13581}
13582
13583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalComputeQueuePropertiesNV.html>
13584#[repr(C)]
13585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13586pub struct PhysicalDeviceExternalComputeQueuePropertiesNV {
13587    pub s_type: StructureType,
13588    pub next: *mut c_void,
13589    pub external_data_size: u32,
13590    pub max_external_queues: u32,
13591}
13592
13593impl Default for PhysicalDeviceExternalComputeQueuePropertiesNV {
13594    #[inline]
13595    fn default() -> Self {
13596        Self {
13597            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV,
13598            next: ptr::null_mut(),
13599            external_data_size: u32::default(),
13600            max_external_queues: u32::default(),
13601        }
13602    }
13603}
13604
13605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html>
13606#[repr(C)]
13607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13608pub struct PhysicalDeviceExternalFenceInfo {
13609    pub s_type: StructureType,
13610    pub next: *const c_void,
13611    pub handle_type: ExternalFenceHandleTypeFlags,
13612}
13613
13614impl Default for PhysicalDeviceExternalFenceInfo {
13615    #[inline]
13616    fn default() -> Self {
13617        Self {
13618            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
13619            next: ptr::null(),
13620            handle_type: ExternalFenceHandleTypeFlags::default(),
13621        }
13622    }
13623}
13624
13625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html>
13626#[repr(C)]
13627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13628pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROID {
13629    pub s_type: StructureType,
13630    pub next: *mut c_void,
13631    pub external_format_resolve: Bool32,
13632}
13633
13634impl Default for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
13635    #[inline]
13636    fn default() -> Self {
13637        Self {
13638            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID,
13639            next: ptr::null_mut(),
13640            external_format_resolve: Bool32::default(),
13641        }
13642    }
13643}
13644
13645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html>
13646#[repr(C)]
13647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13648pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROID {
13649    pub s_type: StructureType,
13650    pub next: *mut c_void,
13651    pub null_color_attachment_with_external_format_resolve: Bool32,
13652    pub external_format_resolve_chroma_offset_x: ChromaLocation,
13653    pub external_format_resolve_chroma_offset_y: ChromaLocation,
13654}
13655
13656impl Default for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
13657    #[inline]
13658    fn default() -> Self {
13659        Self {
13660            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID,
13661            next: ptr::null_mut(),
13662            null_color_attachment_with_external_format_resolve: Bool32::default(),
13663            external_format_resolve_chroma_offset_x: ChromaLocation::default(),
13664            external_format_resolve_chroma_offset_y: ChromaLocation::default(),
13665        }
13666    }
13667}
13668
13669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>
13670#[repr(C)]
13671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13672pub struct PhysicalDeviceExternalImageFormatInfo {
13673    pub s_type: StructureType,
13674    pub next: *const c_void,
13675    pub handle_type: ExternalMemoryHandleTypeFlags,
13676}
13677
13678impl Default for PhysicalDeviceExternalImageFormatInfo {
13679    #[inline]
13680    fn default() -> Self {
13681        Self {
13682            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
13683            next: ptr::null(),
13684            handle_type: ExternalMemoryHandleTypeFlags::default(),
13685        }
13686    }
13687}
13688
13689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>
13690#[repr(C)]
13691#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13692pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
13693    pub s_type: StructureType,
13694    pub next: *mut c_void,
13695    pub min_imported_host_pointer_alignment: DeviceSize,
13696}
13697
13698impl Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
13699    #[inline]
13700    fn default() -> Self {
13701        Self {
13702            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
13703            next: ptr::null_mut(),
13704            min_imported_host_pointer_alignment: DeviceSize::default(),
13705        }
13706    }
13707}
13708
13709/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>
13710#[repr(C)]
13711#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13712pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
13713    pub s_type: StructureType,
13714    pub next: *mut c_void,
13715    pub external_memory_rdma: Bool32,
13716}
13717
13718impl Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
13719    #[inline]
13720    fn default() -> Self {
13721        Self {
13722            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
13723            next: ptr::null_mut(),
13724            external_memory_rdma: Bool32::default(),
13725        }
13726    }
13727}
13728
13729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.html>
13730#[repr(C)]
13731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13732pub struct PhysicalDeviceExternalMemorySciBufFeaturesNV {
13733    pub s_type: StructureType,
13734    pub next: *mut c_void,
13735    pub sci_buf_import: Bool32,
13736    pub sci_buf_export: Bool32,
13737}
13738
13739impl Default for PhysicalDeviceExternalMemorySciBufFeaturesNV {
13740    #[inline]
13741    fn default() -> Self {
13742        Self {
13743            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
13744            next: ptr::null_mut(),
13745            sci_buf_import: Bool32::default(),
13746            sci_buf_export: Bool32::default(),
13747        }
13748    }
13749}
13750
13751/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html>
13752#[repr(C)]
13753#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13754pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
13755    pub s_type: StructureType,
13756    pub next: *mut c_void,
13757    pub screen_buffer_import: Bool32,
13758}
13759
13760impl Default for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
13761    #[inline]
13762    fn default() -> Self {
13763        Self {
13764            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX,
13765            next: ptr::null_mut(),
13766            screen_buffer_import: Bool32::default(),
13767        }
13768    }
13769}
13770
13771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSync2FeaturesNV.html>
13772#[repr(C)]
13773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13774pub struct PhysicalDeviceExternalSciSync2FeaturesNV {
13775    pub s_type: StructureType,
13776    pub next: *mut c_void,
13777    pub sci_sync_fence: Bool32,
13778    pub sci_sync_semaphore2: Bool32,
13779    pub sci_sync_import: Bool32,
13780    pub sci_sync_export: Bool32,
13781}
13782
13783impl Default for PhysicalDeviceExternalSciSync2FeaturesNV {
13784    #[inline]
13785    fn default() -> Self {
13786        Self {
13787            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV,
13788            next: ptr::null_mut(),
13789            sci_sync_fence: Bool32::default(),
13790            sci_sync_semaphore2: Bool32::default(),
13791            sci_sync_import: Bool32::default(),
13792            sci_sync_export: Bool32::default(),
13793        }
13794    }
13795}
13796
13797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSyncFeaturesNV.html>
13798#[repr(C)]
13799#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13800pub struct PhysicalDeviceExternalSciSyncFeaturesNV {
13801    pub s_type: StructureType,
13802    pub next: *mut c_void,
13803    pub sci_sync_fence: Bool32,
13804    pub sci_sync_semaphore: Bool32,
13805    pub sci_sync_import: Bool32,
13806    pub sci_sync_export: Bool32,
13807}
13808
13809impl Default for PhysicalDeviceExternalSciSyncFeaturesNV {
13810    #[inline]
13811    fn default() -> Self {
13812        Self {
13813            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV,
13814            next: ptr::null_mut(),
13815            sci_sync_fence: Bool32::default(),
13816            sci_sync_semaphore: Bool32::default(),
13817            sci_sync_import: Bool32::default(),
13818            sci_sync_export: Bool32::default(),
13819        }
13820    }
13821}
13822
13823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>
13824#[repr(C)]
13825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13826pub struct PhysicalDeviceExternalSemaphoreInfo {
13827    pub s_type: StructureType,
13828    pub next: *const c_void,
13829    pub handle_type: ExternalSemaphoreHandleTypeFlags,
13830}
13831
13832impl Default for PhysicalDeviceExternalSemaphoreInfo {
13833    #[inline]
13834    fn default() -> Self {
13835        Self {
13836            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
13837            next: ptr::null(),
13838            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
13839        }
13840    }
13841}
13842
13843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalTensorInfoARM.html>
13844#[repr(C)]
13845#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13846pub struct PhysicalDeviceExternalTensorInfoARM {
13847    pub s_type: StructureType,
13848    pub next: *const c_void,
13849    pub flags: TensorCreateFlagsARM,
13850    pub description: *const TensorDescriptionARM,
13851    pub handle_type: ExternalMemoryHandleTypeFlags,
13852}
13853
13854impl Default for PhysicalDeviceExternalTensorInfoARM {
13855    #[inline]
13856    fn default() -> Self {
13857        Self {
13858            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM,
13859            next: ptr::null(),
13860            flags: TensorCreateFlagsARM::default(),
13861            description: ptr::null(),
13862            handle_type: ExternalMemoryHandleTypeFlags::default(),
13863        }
13864    }
13865}
13866
13867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html>
13868#[repr(C)]
13869#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13870pub struct PhysicalDeviceFaultFeaturesEXT {
13871    pub s_type: StructureType,
13872    pub next: *mut c_void,
13873    pub device_fault: Bool32,
13874    pub device_fault_vendor_binary: Bool32,
13875}
13876
13877impl Default for PhysicalDeviceFaultFeaturesEXT {
13878    #[inline]
13879    fn default() -> Self {
13880        Self {
13881            s_type: StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT,
13882            next: ptr::null_mut(),
13883            device_fault: Bool32::default(),
13884            device_fault_vendor_binary: Bool32::default(),
13885        }
13886    }
13887}
13888
13889/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html>
13890#[repr(C)]
13891#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
13892pub struct PhysicalDeviceFeatures {
13893    pub robust_buffer_access: Bool32,
13894    pub full_draw_index_uint32: Bool32,
13895    pub image_cube_array: Bool32,
13896    pub independent_blend: Bool32,
13897    pub geometry_shader: Bool32,
13898    pub tessellation_shader: Bool32,
13899    pub sample_rate_shading: Bool32,
13900    pub dual_src_blend: Bool32,
13901    pub logic_op: Bool32,
13902    pub multi_draw_indirect: Bool32,
13903    pub draw_indirect_first_instance: Bool32,
13904    pub depth_clamp: Bool32,
13905    pub depth_bias_clamp: Bool32,
13906    pub fill_mode_non_solid: Bool32,
13907    pub depth_bounds: Bool32,
13908    pub wide_lines: Bool32,
13909    pub large_points: Bool32,
13910    pub alpha_to_one: Bool32,
13911    pub multi_viewport: Bool32,
13912    pub sampler_anisotropy: Bool32,
13913    pub texture_compression_etc2: Bool32,
13914    pub texture_compression_astc_ldr: Bool32,
13915    pub texture_compression_bc: Bool32,
13916    pub occlusion_query_precise: Bool32,
13917    pub pipeline_statistics_query: Bool32,
13918    pub vertex_pipeline_stores_and_atomics: Bool32,
13919    pub fragment_stores_and_atomics: Bool32,
13920    pub shader_tessellation_and_geometry_point_size: Bool32,
13921    pub shader_image_gather_extended: Bool32,
13922    pub shader_storage_image_extended_formats: Bool32,
13923    pub shader_storage_image_multisample: Bool32,
13924    pub shader_storage_image_read_without_format: Bool32,
13925    pub shader_storage_image_write_without_format: Bool32,
13926    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
13927    pub shader_sampled_image_array_dynamic_indexing: Bool32,
13928    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
13929    pub shader_storage_image_array_dynamic_indexing: Bool32,
13930    pub shader_clip_distance: Bool32,
13931    pub shader_cull_distance: Bool32,
13932    pub shader_float64: Bool32,
13933    pub shader_int64: Bool32,
13934    pub shader_int16: Bool32,
13935    pub shader_resource_residency: Bool32,
13936    pub shader_resource_min_lod: Bool32,
13937    pub sparse_binding: Bool32,
13938    pub sparse_residency_buffer: Bool32,
13939    pub sparse_residency_image_2d: Bool32,
13940    pub sparse_residency_image_3d: Bool32,
13941    pub sparse_residency2_samples: Bool32,
13942    pub sparse_residency4_samples: Bool32,
13943    pub sparse_residency8_samples: Bool32,
13944    pub sparse_residency16_samples: Bool32,
13945    pub sparse_residency_aliased: Bool32,
13946    pub variable_multisample_rate: Bool32,
13947    pub inherited_queries: Bool32,
13948}
13949
13950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html>
13951#[repr(C)]
13952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13953pub struct PhysicalDeviceFeatures2 {
13954    pub s_type: StructureType,
13955    pub next: *mut c_void,
13956    pub features: PhysicalDeviceFeatures,
13957}
13958
13959impl Default for PhysicalDeviceFeatures2 {
13960    #[inline]
13961    fn default() -> Self {
13962        Self {
13963            s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
13964            next: ptr::null_mut(),
13965            features: PhysicalDeviceFeatures::default(),
13966        }
13967    }
13968}
13969
13970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html>
13971#[repr(C)]
13972#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13973pub struct PhysicalDeviceFloatControlsProperties {
13974    pub s_type: StructureType,
13975    pub next: *mut c_void,
13976    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
13977    pub rounding_mode_independence: ShaderFloatControlsIndependence,
13978    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
13979    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
13980    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
13981    pub shader_denorm_preserve_float16: Bool32,
13982    pub shader_denorm_preserve_float32: Bool32,
13983    pub shader_denorm_preserve_float64: Bool32,
13984    pub shader_denorm_flush_to_zero_float16: Bool32,
13985    pub shader_denorm_flush_to_zero_float32: Bool32,
13986    pub shader_denorm_flush_to_zero_float64: Bool32,
13987    pub shader_rounding_mode_rte_float16: Bool32,
13988    pub shader_rounding_mode_rte_float32: Bool32,
13989    pub shader_rounding_mode_rte_float64: Bool32,
13990    pub shader_rounding_mode_rtz_float16: Bool32,
13991    pub shader_rounding_mode_rtz_float32: Bool32,
13992    pub shader_rounding_mode_rtz_float64: Bool32,
13993}
13994
13995impl Default for PhysicalDeviceFloatControlsProperties {
13996    #[inline]
13997    fn default() -> Self {
13998        Self {
13999            s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
14000            next: ptr::null_mut(),
14001            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
14002            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
14003            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
14004            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
14005            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
14006            shader_denorm_preserve_float16: Bool32::default(),
14007            shader_denorm_preserve_float32: Bool32::default(),
14008            shader_denorm_preserve_float64: Bool32::default(),
14009            shader_denorm_flush_to_zero_float16: Bool32::default(),
14010            shader_denorm_flush_to_zero_float32: Bool32::default(),
14011            shader_denorm_flush_to_zero_float64: Bool32::default(),
14012            shader_rounding_mode_rte_float16: Bool32::default(),
14013            shader_rounding_mode_rte_float32: Bool32::default(),
14014            shader_rounding_mode_rte_float64: Bool32::default(),
14015            shader_rounding_mode_rtz_float16: Bool32::default(),
14016            shader_rounding_mode_rtz_float32: Bool32::default(),
14017            shader_rounding_mode_rtz_float64: Bool32::default(),
14018        }
14019    }
14020}
14021
14022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFormatPackFeaturesARM.html>
14023#[repr(C)]
14024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14025pub struct PhysicalDeviceFormatPackFeaturesARM {
14026    pub s_type: StructureType,
14027    pub next: *mut c_void,
14028    pub format_pack: Bool32,
14029}
14030
14031impl Default for PhysicalDeviceFormatPackFeaturesARM {
14032    #[inline]
14033    fn default() -> Self {
14034        Self {
14035            s_type: StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM,
14036            next: ptr::null_mut(),
14037            format_pack: Bool32::default(),
14038        }
14039    }
14040}
14041
14042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>
14043#[repr(C)]
14044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14045pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
14046    pub s_type: StructureType,
14047    pub next: *mut c_void,
14048    pub fragment_density_map_deferred: Bool32,
14049}
14050
14051impl Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
14052    #[inline]
14053    fn default() -> Self {
14054        Self {
14055            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
14056            next: ptr::null_mut(),
14057            fragment_density_map_deferred: Bool32::default(),
14058        }
14059    }
14060}
14061
14062/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>
14063#[repr(C)]
14064#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14065pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
14066    pub s_type: StructureType,
14067    pub next: *mut c_void,
14068    pub subsampled_loads: Bool32,
14069    pub subsampled_coarse_reconstruction_early_access: Bool32,
14070    pub max_subsampled_array_layers: u32,
14071    pub max_descriptor_set_subsampled_samplers: u32,
14072}
14073
14074impl Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
14075    #[inline]
14076    fn default() -> Self {
14077        Self {
14078            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
14079            next: ptr::null_mut(),
14080            subsampled_loads: Bool32::default(),
14081            subsampled_coarse_reconstruction_early_access: Bool32::default(),
14082            max_subsampled_array_layers: u32::default(),
14083            max_descriptor_set_subsampled_samplers: u32::default(),
14084        }
14085    }
14086}
14087
14088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>
14089#[repr(C)]
14090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14091pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
14092    pub s_type: StructureType,
14093    pub next: *mut c_void,
14094    pub fragment_density_map: Bool32,
14095    pub fragment_density_map_dynamic: Bool32,
14096    pub fragment_density_map_non_subsampled_images: Bool32,
14097}
14098
14099impl Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
14100    #[inline]
14101    fn default() -> Self {
14102        Self {
14103            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
14104            next: ptr::null_mut(),
14105            fragment_density_map: Bool32::default(),
14106            fragment_density_map_dynamic: Bool32::default(),
14107            fragment_density_map_non_subsampled_images: Bool32::default(),
14108        }
14109    }
14110}
14111
14112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE.html>
14113#[repr(C)]
14114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14115pub struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
14116    pub s_type: StructureType,
14117    pub next: *mut c_void,
14118    pub fragment_density_map_layered: Bool32,
14119}
14120
14121impl Default for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
14122    #[inline]
14123    fn default() -> Self {
14124        Self {
14125            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE,
14126            next: ptr::null_mut(),
14127            fragment_density_map_layered: Bool32::default(),
14128        }
14129    }
14130}
14131
14132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.html>
14133#[repr(C)]
14134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14135pub struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
14136    pub s_type: StructureType,
14137    pub next: *mut c_void,
14138    pub max_fragment_density_map_layers: u32,
14139}
14140
14141impl Default for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
14142    #[inline]
14143    fn default() -> Self {
14144        Self {
14145            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE,
14146            next: ptr::null_mut(),
14147            max_fragment_density_map_layers: u32::default(),
14148        }
14149    }
14150}
14151
14152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.html>
14153#[repr(C)]
14154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14155pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
14156    pub s_type: StructureType,
14157    pub next: *mut c_void,
14158    pub fragment_density_map_offset: Bool32,
14159}
14160
14161impl Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
14162    #[inline]
14163    fn default() -> Self {
14164        Self {
14165            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,
14166            next: ptr::null_mut(),
14167            fragment_density_map_offset: Bool32::default(),
14168        }
14169    }
14170}
14171
14172/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.html>
14173#[repr(C)]
14174#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14175pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
14176    pub s_type: StructureType,
14177    pub next: *mut c_void,
14178    pub fragment_density_offset_granularity: Extent2D,
14179}
14180
14181impl Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
14182    #[inline]
14183    fn default() -> Self {
14184        Self {
14185            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,
14186            next: ptr::null_mut(),
14187            fragment_density_offset_granularity: Extent2D::default(),
14188        }
14189    }
14190}
14191
14192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>
14193#[repr(C)]
14194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14195pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
14196    pub s_type: StructureType,
14197    pub next: *mut c_void,
14198    pub min_fragment_density_texel_size: Extent2D,
14199    pub max_fragment_density_texel_size: Extent2D,
14200    pub fragment_density_invocations: Bool32,
14201}
14202
14203impl Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
14204    #[inline]
14205    fn default() -> Self {
14206        Self {
14207            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
14208            next: ptr::null_mut(),
14209            min_fragment_density_texel_size: Extent2D::default(),
14210            max_fragment_density_texel_size: Extent2D::default(),
14211            fragment_density_invocations: Bool32::default(),
14212        }
14213    }
14214}
14215
14216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html>
14217#[repr(C)]
14218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14219pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
14220    pub s_type: StructureType,
14221    pub next: *mut c_void,
14222    pub fragment_shader_barycentric: Bool32,
14223}
14224
14225impl Default for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
14226    #[inline]
14227    fn default() -> Self {
14228        Self {
14229            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
14230            next: ptr::null_mut(),
14231            fragment_shader_barycentric: Bool32::default(),
14232        }
14233    }
14234}
14235
14236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html>
14237#[repr(C)]
14238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14239pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
14240    pub s_type: StructureType,
14241    pub next: *mut c_void,
14242    pub tri_strip_vertex_order_independent_of_provoking_vertex: Bool32,
14243}
14244
14245impl Default for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
14246    #[inline]
14247    fn default() -> Self {
14248        Self {
14249            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR,
14250            next: ptr::null_mut(),
14251            tri_strip_vertex_order_independent_of_provoking_vertex: Bool32::default(),
14252        }
14253    }
14254}
14255
14256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>
14257#[repr(C)]
14258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14259pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
14260    pub s_type: StructureType,
14261    pub next: *mut c_void,
14262    pub fragment_shader_sample_interlock: Bool32,
14263    pub fragment_shader_pixel_interlock: Bool32,
14264    pub fragment_shader_shading_rate_interlock: Bool32,
14265}
14266
14267impl Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
14268    #[inline]
14269    fn default() -> Self {
14270        Self {
14271            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
14272            next: ptr::null_mut(),
14273            fragment_shader_sample_interlock: Bool32::default(),
14274            fragment_shader_pixel_interlock: Bool32::default(),
14275            fragment_shader_shading_rate_interlock: Bool32::default(),
14276        }
14277    }
14278}
14279
14280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>
14281#[repr(C)]
14282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14283pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
14284    pub s_type: StructureType,
14285    pub next: *mut c_void,
14286    pub fragment_shading_rate_enums: Bool32,
14287    pub supersample_fragment_shading_rates: Bool32,
14288    pub no_invocation_fragment_shading_rates: Bool32,
14289}
14290
14291impl Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
14292    #[inline]
14293    fn default() -> Self {
14294        Self {
14295            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
14296            next: ptr::null_mut(),
14297            fragment_shading_rate_enums: Bool32::default(),
14298            supersample_fragment_shading_rates: Bool32::default(),
14299            no_invocation_fragment_shading_rates: Bool32::default(),
14300        }
14301    }
14302}
14303
14304/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>
14305#[repr(C)]
14306#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14307pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
14308    pub s_type: StructureType,
14309    pub next: *mut c_void,
14310    pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
14311}
14312
14313impl Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
14314    #[inline]
14315    fn default() -> Self {
14316        Self {
14317            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
14318            next: ptr::null_mut(),
14319            max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
14320        }
14321    }
14322}
14323
14324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>
14325#[repr(C)]
14326#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14327pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
14328    pub s_type: StructureType,
14329    pub next: *mut c_void,
14330    pub pipeline_fragment_shading_rate: Bool32,
14331    pub primitive_fragment_shading_rate: Bool32,
14332    pub attachment_fragment_shading_rate: Bool32,
14333}
14334
14335impl Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
14336    #[inline]
14337    fn default() -> Self {
14338        Self {
14339            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
14340            next: ptr::null_mut(),
14341            pipeline_fragment_shading_rate: Bool32::default(),
14342            primitive_fragment_shading_rate: Bool32::default(),
14343            attachment_fragment_shading_rate: Bool32::default(),
14344        }
14345    }
14346}
14347
14348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>
14349#[repr(C)]
14350#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14351pub struct PhysicalDeviceFragmentShadingRateKHR {
14352    pub s_type: StructureType,
14353    pub next: *mut c_void,
14354    pub sample_counts: SampleCountFlags,
14355    pub fragment_size: Extent2D,
14356}
14357
14358impl Default for PhysicalDeviceFragmentShadingRateKHR {
14359    #[inline]
14360    fn default() -> Self {
14361        Self {
14362            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
14363            next: ptr::null_mut(),
14364            sample_counts: SampleCountFlags::default(),
14365            fragment_size: Extent2D::default(),
14366        }
14367    }
14368}
14369
14370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>
14371#[repr(C)]
14372#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14373pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
14374    pub s_type: StructureType,
14375    pub next: *mut c_void,
14376    pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
14377    pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
14378    pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
14379    pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
14380    pub layered_shading_rate_attachments: Bool32,
14381    pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
14382    pub max_fragment_size: Extent2D,
14383    pub max_fragment_size_aspect_ratio: u32,
14384    pub max_fragment_shading_rate_coverage_samples: u32,
14385    pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
14386    pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
14387    pub fragment_shading_rate_with_sample_mask: Bool32,
14388    pub fragment_shading_rate_with_shader_sample_mask: Bool32,
14389    pub fragment_shading_rate_with_conservative_rasterization: Bool32,
14390    pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
14391    pub fragment_shading_rate_with_custom_sample_locations: Bool32,
14392    pub fragment_shading_rate_strict_multiply_combiner: Bool32,
14393}
14394
14395impl Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
14396    #[inline]
14397    fn default() -> Self {
14398        Self {
14399            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
14400            next: ptr::null_mut(),
14401            min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
14402            max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
14403            max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
14404            primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
14405            layered_shading_rate_attachments: Bool32::default(),
14406            fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
14407            max_fragment_size: Extent2D::default(),
14408            max_fragment_size_aspect_ratio: u32::default(),
14409            max_fragment_shading_rate_coverage_samples: u32::default(),
14410            max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
14411            fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
14412            fragment_shading_rate_with_sample_mask: Bool32::default(),
14413            fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
14414            fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
14415            fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
14416            fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
14417            fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
14418        }
14419    }
14420}
14421
14422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html>
14423#[repr(C)]
14424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14425pub struct PhysicalDeviceFrameBoundaryFeaturesEXT {
14426    pub s_type: StructureType,
14427    pub next: *mut c_void,
14428    pub frame_boundary: Bool32,
14429}
14430
14431impl Default for PhysicalDeviceFrameBoundaryFeaturesEXT {
14432    #[inline]
14433    fn default() -> Self {
14434        Self {
14435            s_type: StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT,
14436            next: ptr::null_mut(),
14437            frame_boundary: Bool32::default(),
14438        }
14439    }
14440}
14441
14442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html>
14443#[repr(C)]
14444#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14445pub struct PhysicalDeviceGlobalPriorityQueryFeatures {
14446    pub s_type: StructureType,
14447    pub next: *mut c_void,
14448    pub global_priority_query: Bool32,
14449}
14450
14451impl Default for PhysicalDeviceGlobalPriorityQueryFeatures {
14452    #[inline]
14453    fn default() -> Self {
14454        Self {
14455            s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,
14456            next: ptr::null_mut(),
14457            global_priority_query: Bool32::default(),
14458        }
14459    }
14460}
14461
14462/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html>
14463#[repr(C)]
14464#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14465pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
14466    pub s_type: StructureType,
14467    pub next: *mut c_void,
14468    pub graphics_pipeline_library: Bool32,
14469}
14470
14471impl Default for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
14472    #[inline]
14473    fn default() -> Self {
14474        Self {
14475            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,
14476            next: ptr::null_mut(),
14477            graphics_pipeline_library: Bool32::default(),
14478        }
14479    }
14480}
14481
14482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html>
14483#[repr(C)]
14484#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14485pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
14486    pub s_type: StructureType,
14487    pub next: *mut c_void,
14488    pub graphics_pipeline_library_fast_linking: Bool32,
14489    pub graphics_pipeline_library_independent_interpolation_decoration: Bool32,
14490}
14491
14492impl Default for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
14493    #[inline]
14494    fn default() -> Self {
14495        Self {
14496            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,
14497            next: ptr::null_mut(),
14498            graphics_pipeline_library_fast_linking: Bool32::default(),
14499            graphics_pipeline_library_independent_interpolation_decoration: Bool32::default(),
14500        }
14501    }
14502}
14503
14504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html>
14505#[repr(C)]
14506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14507pub struct PhysicalDeviceGroupProperties {
14508    pub s_type: StructureType,
14509    pub next: *mut c_void,
14510    pub physical_device_count: u32,
14511    pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
14512    pub subset_allocation: Bool32,
14513}
14514
14515impl Default for PhysicalDeviceGroupProperties {
14516    #[inline]
14517    fn default() -> Self {
14518        Self {
14519            s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
14520            next: ptr::null_mut(),
14521            physical_device_count: u32::default(),
14522            physical_devices: [PhysicalDevice::default(); MAX_DEVICE_GROUP_SIZE],
14523            subset_allocation: Bool32::default(),
14524        }
14525    }
14526}
14527
14528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html>
14529#[repr(C)]
14530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14531pub struct PhysicalDeviceHdrVividFeaturesHUAWEI {
14532    pub s_type: StructureType,
14533    pub next: *mut c_void,
14534    pub hdr_vivid: Bool32,
14535}
14536
14537impl Default for PhysicalDeviceHdrVividFeaturesHUAWEI {
14538    #[inline]
14539    fn default() -> Self {
14540        Self {
14541            s_type: StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI,
14542            next: ptr::null_mut(),
14543            hdr_vivid: Bool32::default(),
14544        }
14545    }
14546}
14547
14548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html>
14549#[repr(C)]
14550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14551pub struct PhysicalDeviceHostImageCopyFeatures {
14552    pub s_type: StructureType,
14553    pub next: *mut c_void,
14554    pub host_image_copy: Bool32,
14555}
14556
14557impl Default for PhysicalDeviceHostImageCopyFeatures {
14558    #[inline]
14559    fn default() -> Self {
14560        Self {
14561            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,
14562            next: ptr::null_mut(),
14563            host_image_copy: Bool32::default(),
14564        }
14565    }
14566}
14567
14568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html>
14569#[repr(C)]
14570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14571pub struct PhysicalDeviceHostImageCopyProperties {
14572    pub s_type: StructureType,
14573    pub next: *mut c_void,
14574    pub copy_src_layout_count: u32,
14575    pub copy_src_layouts: *mut ImageLayout,
14576    pub copy_dst_layout_count: u32,
14577    pub copy_dst_layouts: *mut ImageLayout,
14578    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
14579    pub identical_memory_type_requirements: Bool32,
14580}
14581
14582impl Default for PhysicalDeviceHostImageCopyProperties {
14583    #[inline]
14584    fn default() -> Self {
14585        Self {
14586            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,
14587            next: ptr::null_mut(),
14588            copy_src_layout_count: u32::default(),
14589            copy_src_layouts: ptr::null_mut(),
14590            copy_dst_layout_count: u32::default(),
14591            copy_dst_layouts: ptr::null_mut(),
14592            optimal_tiling_layout_uuid: ByteArray::default(),
14593            identical_memory_type_requirements: Bool32::default(),
14594        }
14595    }
14596}
14597
14598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>
14599#[repr(C)]
14600#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14601pub struct PhysicalDeviceHostQueryResetFeatures {
14602    pub s_type: StructureType,
14603    pub next: *mut c_void,
14604    pub host_query_reset: Bool32,
14605}
14606
14607impl Default for PhysicalDeviceHostQueryResetFeatures {
14608    #[inline]
14609    fn default() -> Self {
14610        Self {
14611            s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
14612            next: ptr::null_mut(),
14613            host_query_reset: Bool32::default(),
14614        }
14615    }
14616}
14617
14618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html>
14619#[repr(C)]
14620#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14621pub struct PhysicalDeviceIDProperties {
14622    pub s_type: StructureType,
14623    pub next: *mut c_void,
14624    pub device_uuid: ByteArray<UUID_SIZE>,
14625    pub driver_uuid: ByteArray<UUID_SIZE>,
14626    pub device_luid: ByteArray<LUID_SIZE>,
14627    pub device_node_mask: u32,
14628    pub device_luid_valid: Bool32,
14629}
14630
14631impl Default for PhysicalDeviceIDProperties {
14632    #[inline]
14633    fn default() -> Self {
14634        Self {
14635            s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
14636            next: ptr::null_mut(),
14637            device_uuid: ByteArray::default(),
14638            driver_uuid: ByteArray::default(),
14639            device_luid: ByteArray::default(),
14640            device_node_mask: u32::default(),
14641            device_luid_valid: Bool32::default(),
14642        }
14643    }
14644}
14645
14646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html>
14647#[repr(C)]
14648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14649pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXT {
14650    pub s_type: StructureType,
14651    pub next: *mut c_void,
14652    pub image_2d_view_of_3d: Bool32,
14653    pub sampler_2d_view_of_3d: Bool32,
14654}
14655
14656impl Default for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
14657    #[inline]
14658    fn default() -> Self {
14659        Self {
14660            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT,
14661            next: ptr::null_mut(),
14662            image_2d_view_of_3d: Bool32::default(),
14663            sampler_2d_view_of_3d: Bool32::default(),
14664        }
14665    }
14666}
14667
14668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html>
14669#[repr(C)]
14670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14671pub struct PhysicalDeviceImageAlignmentControlFeaturesMESA {
14672    pub s_type: StructureType,
14673    pub next: *mut c_void,
14674    pub image_alignment_control: Bool32,
14675}
14676
14677impl Default for PhysicalDeviceImageAlignmentControlFeaturesMESA {
14678    #[inline]
14679    fn default() -> Self {
14680        Self {
14681            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA,
14682            next: ptr::null_mut(),
14683            image_alignment_control: Bool32::default(),
14684        }
14685    }
14686}
14687
14688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html>
14689#[repr(C)]
14690#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14691pub struct PhysicalDeviceImageAlignmentControlPropertiesMESA {
14692    pub s_type: StructureType,
14693    pub next: *mut c_void,
14694    pub supported_image_alignment_mask: u32,
14695}
14696
14697impl Default for PhysicalDeviceImageAlignmentControlPropertiesMESA {
14698    #[inline]
14699    fn default() -> Self {
14700        Self {
14701            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA,
14702            next: ptr::null_mut(),
14703            supported_image_alignment_mask: u32::default(),
14704        }
14705    }
14706}
14707
14708/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html>
14709#[repr(C)]
14710#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14711pub struct PhysicalDeviceImageCompressionControlFeaturesEXT {
14712    pub s_type: StructureType,
14713    pub next: *mut c_void,
14714    pub image_compression_control: Bool32,
14715}
14716
14717impl Default for PhysicalDeviceImageCompressionControlFeaturesEXT {
14718    #[inline]
14719    fn default() -> Self {
14720        Self {
14721            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT,
14722            next: ptr::null_mut(),
14723            image_compression_control: Bool32::default(),
14724        }
14725    }
14726}
14727
14728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html>
14729#[repr(C)]
14730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14731pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
14732    pub s_type: StructureType,
14733    pub next: *mut c_void,
14734    pub image_compression_control_swapchain: Bool32,
14735}
14736
14737impl Default for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
14738    #[inline]
14739    fn default() -> Self {
14740        Self {
14741            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT,
14742            next: ptr::null_mut(),
14743            image_compression_control_swapchain: Bool32::default(),
14744        }
14745    }
14746}
14747
14748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>
14749#[repr(C)]
14750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14751pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
14752    pub s_type: StructureType,
14753    pub next: *const c_void,
14754    pub drm_format_modifier: u64,
14755    pub sharing_mode: SharingMode,
14756    pub queue_family_index_count: u32,
14757    pub queue_family_indices: *const u32,
14758}
14759
14760impl Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
14761    #[inline]
14762    fn default() -> Self {
14763        Self {
14764            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
14765            next: ptr::null(),
14766            drm_format_modifier: u64::default(),
14767            sharing_mode: SharingMode::default(),
14768            queue_family_index_count: u32::default(),
14769            queue_family_indices: ptr::null(),
14770        }
14771    }
14772}
14773
14774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html>
14775#[repr(C)]
14776#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14777pub struct PhysicalDeviceImageFormatInfo2 {
14778    pub s_type: StructureType,
14779    pub next: *const c_void,
14780    pub format: Format,
14781    pub type_: ImageType,
14782    pub tiling: ImageTiling,
14783    pub usage: ImageUsageFlags,
14784    pub flags: ImageCreateFlags,
14785}
14786
14787impl Default for PhysicalDeviceImageFormatInfo2 {
14788    #[inline]
14789    fn default() -> Self {
14790        Self {
14791            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
14792            next: ptr::null(),
14793            format: Format::default(),
14794            type_: ImageType::default(),
14795            tiling: ImageTiling::default(),
14796            usage: ImageUsageFlags::default(),
14797            flags: ImageCreateFlags::default(),
14798        }
14799    }
14800}
14801
14802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html>
14803#[repr(C)]
14804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14805pub struct PhysicalDeviceImageProcessing2FeaturesQCOM {
14806    pub s_type: StructureType,
14807    pub next: *mut c_void,
14808    pub texture_block_match2: Bool32,
14809}
14810
14811impl Default for PhysicalDeviceImageProcessing2FeaturesQCOM {
14812    #[inline]
14813    fn default() -> Self {
14814        Self {
14815            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM,
14816            next: ptr::null_mut(),
14817            texture_block_match2: Bool32::default(),
14818        }
14819    }
14820}
14821
14822/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html>
14823#[repr(C)]
14824#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14825pub struct PhysicalDeviceImageProcessing2PropertiesQCOM {
14826    pub s_type: StructureType,
14827    pub next: *mut c_void,
14828    pub max_block_match_window: Extent2D,
14829}
14830
14831impl Default for PhysicalDeviceImageProcessing2PropertiesQCOM {
14832    #[inline]
14833    fn default() -> Self {
14834        Self {
14835            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM,
14836            next: ptr::null_mut(),
14837            max_block_match_window: Extent2D::default(),
14838        }
14839    }
14840}
14841
14842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html>
14843#[repr(C)]
14844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14845pub struct PhysicalDeviceImageProcessingFeaturesQCOM {
14846    pub s_type: StructureType,
14847    pub next: *mut c_void,
14848    pub texture_sample_weighted: Bool32,
14849    pub texture_box_filter: Bool32,
14850    pub texture_block_match: Bool32,
14851}
14852
14853impl Default for PhysicalDeviceImageProcessingFeaturesQCOM {
14854    #[inline]
14855    fn default() -> Self {
14856        Self {
14857            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM,
14858            next: ptr::null_mut(),
14859            texture_sample_weighted: Bool32::default(),
14860            texture_box_filter: Bool32::default(),
14861            texture_block_match: Bool32::default(),
14862        }
14863    }
14864}
14865
14866/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html>
14867#[repr(C)]
14868#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14869pub struct PhysicalDeviceImageProcessingPropertiesQCOM {
14870    pub s_type: StructureType,
14871    pub next: *mut c_void,
14872    pub max_weight_filter_phases: u32,
14873    pub max_weight_filter_dimension: Extent2D,
14874    pub max_block_match_region: Extent2D,
14875    pub max_box_filter_block_size: Extent2D,
14876}
14877
14878impl Default for PhysicalDeviceImageProcessingPropertiesQCOM {
14879    #[inline]
14880    fn default() -> Self {
14881        Self {
14882            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM,
14883            next: ptr::null_mut(),
14884            max_weight_filter_phases: u32::default(),
14885            max_weight_filter_dimension: Extent2D::default(),
14886            max_block_match_region: Extent2D::default(),
14887            max_box_filter_block_size: Extent2D::default(),
14888        }
14889    }
14890}
14891
14892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html>
14893#[repr(C)]
14894#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14895pub struct PhysicalDeviceImageRobustnessFeatures {
14896    pub s_type: StructureType,
14897    pub next: *mut c_void,
14898    pub robust_image_access: Bool32,
14899}
14900
14901impl Default for PhysicalDeviceImageRobustnessFeatures {
14902    #[inline]
14903    fn default() -> Self {
14904        Self {
14905            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
14906            next: ptr::null_mut(),
14907            robust_image_access: Bool32::default(),
14908        }
14909    }
14910}
14911
14912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html>
14913#[repr(C)]
14914#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14915pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
14916    pub s_type: StructureType,
14917    pub next: *mut c_void,
14918    pub image_sliced_view_of_3d: Bool32,
14919}
14920
14921impl Default for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
14922    #[inline]
14923    fn default() -> Self {
14924        Self {
14925            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT,
14926            next: ptr::null_mut(),
14927            image_sliced_view_of_3d: Bool32::default(),
14928        }
14929    }
14930}
14931
14932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>
14933#[repr(C)]
14934#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14935pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
14936    pub s_type: StructureType,
14937    pub next: *mut c_void,
14938    pub image_view_type: ImageViewType,
14939}
14940
14941impl Default for PhysicalDeviceImageViewImageFormatInfoEXT {
14942    #[inline]
14943    fn default() -> Self {
14944        Self {
14945            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
14946            next: ptr::null_mut(),
14947            image_view_type: ImageViewType::default(),
14948        }
14949    }
14950}
14951
14952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>
14953#[repr(C)]
14954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14955pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
14956    pub s_type: StructureType,
14957    pub next: *mut c_void,
14958    pub min_lod: Bool32,
14959}
14960
14961impl Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
14962    #[inline]
14963    fn default() -> Self {
14964        Self {
14965            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
14966            next: ptr::null_mut(),
14967            min_lod: Bool32::default(),
14968        }
14969    }
14970}
14971
14972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>
14973#[repr(C)]
14974#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14975pub struct PhysicalDeviceImagelessFramebufferFeatures {
14976    pub s_type: StructureType,
14977    pub next: *mut c_void,
14978    pub imageless_framebuffer: Bool32,
14979}
14980
14981impl Default for PhysicalDeviceImagelessFramebufferFeatures {
14982    #[inline]
14983    fn default() -> Self {
14984        Self {
14985            s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
14986            next: ptr::null_mut(),
14987            imageless_framebuffer: Bool32::default(),
14988        }
14989    }
14990}
14991
14992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html>
14993#[repr(C)]
14994#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14995pub struct PhysicalDeviceIndexTypeUint8Features {
14996    pub s_type: StructureType,
14997    pub next: *mut c_void,
14998    pub index_type_uint8: Bool32,
14999}
15000
15001impl Default for PhysicalDeviceIndexTypeUint8Features {
15002    #[inline]
15003    fn default() -> Self {
15004        Self {
15005            s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,
15006            next: ptr::null_mut(),
15007            index_type_uint8: Bool32::default(),
15008        }
15009    }
15010}
15011
15012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>
15013#[repr(C)]
15014#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15015pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
15016    pub s_type: StructureType,
15017    pub next: *mut c_void,
15018    pub inherited_viewport_scissor_2d: Bool32,
15019}
15020
15021impl Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
15022    #[inline]
15023    fn default() -> Self {
15024        Self {
15025            s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
15026            next: ptr::null_mut(),
15027            inherited_viewport_scissor_2d: Bool32::default(),
15028        }
15029    }
15030}
15031
15032/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html>
15033#[repr(C)]
15034#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15035pub struct PhysicalDeviceInlineUniformBlockFeatures {
15036    pub s_type: StructureType,
15037    pub next: *mut c_void,
15038    pub inline_uniform_block: Bool32,
15039    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
15040}
15041
15042impl Default for PhysicalDeviceInlineUniformBlockFeatures {
15043    #[inline]
15044    fn default() -> Self {
15045        Self {
15046            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
15047            next: ptr::null_mut(),
15048            inline_uniform_block: Bool32::default(),
15049            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
15050        }
15051    }
15052}
15053
15054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html>
15055#[repr(C)]
15056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15057pub struct PhysicalDeviceInlineUniformBlockProperties {
15058    pub s_type: StructureType,
15059    pub next: *mut c_void,
15060    pub max_inline_uniform_block_size: u32,
15061    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
15062    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
15063    pub max_descriptor_set_inline_uniform_blocks: u32,
15064    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
15065}
15066
15067impl Default for PhysicalDeviceInlineUniformBlockProperties {
15068    #[inline]
15069    fn default() -> Self {
15070        Self {
15071            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
15072            next: ptr::null_mut(),
15073            max_inline_uniform_block_size: u32::default(),
15074            max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
15075            max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
15076            max_descriptor_set_inline_uniform_blocks: u32::default(),
15077            max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
15078        }
15079    }
15080}
15081
15082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>
15083#[repr(C)]
15084#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15085pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
15086    pub s_type: StructureType,
15087    pub next: *mut c_void,
15088    pub invocation_mask: Bool32,
15089}
15090
15091impl Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
15092    #[inline]
15093    fn default() -> Self {
15094        Self {
15095            s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
15096            next: ptr::null_mut(),
15097            invocation_mask: Bool32::default(),
15098        }
15099    }
15100}
15101
15102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html>
15103#[repr(C)]
15104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15105pub struct PhysicalDeviceLayeredApiPropertiesKHR {
15106    pub s_type: StructureType,
15107    pub next: *mut c_void,
15108    pub vendor_id: u32,
15109    pub device_id: u32,
15110    pub layered_api: PhysicalDeviceLayeredApiKHR,
15111    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
15112}
15113
15114impl Default for PhysicalDeviceLayeredApiPropertiesKHR {
15115    #[inline]
15116    fn default() -> Self {
15117        Self {
15118            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR,
15119            next: ptr::null_mut(),
15120            vendor_id: u32::default(),
15121            device_id: u32::default(),
15122            layered_api: PhysicalDeviceLayeredApiKHR::default(),
15123            device_name: StringArray::default(),
15124        }
15125    }
15126}
15127
15128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html>
15129#[repr(C)]
15130#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15131pub struct PhysicalDeviceLayeredApiPropertiesListKHR {
15132    pub s_type: StructureType,
15133    pub next: *mut c_void,
15134    pub layered_api_count: u32,
15135    pub layered_apis: *mut PhysicalDeviceLayeredApiPropertiesKHR,
15136}
15137
15138impl Default for PhysicalDeviceLayeredApiPropertiesListKHR {
15139    #[inline]
15140    fn default() -> Self {
15141        Self {
15142            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR,
15143            next: ptr::null_mut(),
15144            layered_api_count: u32::default(),
15145            layered_apis: ptr::null_mut(),
15146        }
15147    }
15148}
15149
15150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html>
15151#[repr(C)]
15152#[derive(Copy, Clone, Debug, PartialEq)]
15153pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHR {
15154    pub s_type: StructureType,
15155    pub next: *mut c_void,
15156    pub properties: PhysicalDeviceProperties2,
15157}
15158
15159impl Default for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
15160    #[inline]
15161    fn default() -> Self {
15162        Self {
15163            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR,
15164            next: ptr::null_mut(),
15165            properties: PhysicalDeviceProperties2::default(),
15166        }
15167    }
15168}
15169
15170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html>
15171#[repr(C)]
15172#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15173pub struct PhysicalDeviceLayeredDriverPropertiesMSFT {
15174    pub s_type: StructureType,
15175    pub next: *mut c_void,
15176    pub underlying_api: LayeredDriverUnderlyingApiMSFT,
15177}
15178
15179impl Default for PhysicalDeviceLayeredDriverPropertiesMSFT {
15180    #[inline]
15181    fn default() -> Self {
15182        Self {
15183            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT,
15184            next: ptr::null_mut(),
15185            underlying_api: LayeredDriverUnderlyingApiMSFT::default(),
15186        }
15187    }
15188}
15189
15190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html>
15191#[repr(C)]
15192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15193pub struct PhysicalDeviceLegacyDitheringFeaturesEXT {
15194    pub s_type: StructureType,
15195    pub next: *mut c_void,
15196    pub legacy_dithering: Bool32,
15197}
15198
15199impl Default for PhysicalDeviceLegacyDitheringFeaturesEXT {
15200    #[inline]
15201    fn default() -> Self {
15202        Self {
15203            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT,
15204            next: ptr::null_mut(),
15205            legacy_dithering: Bool32::default(),
15206        }
15207    }
15208}
15209
15210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html>
15211#[repr(C)]
15212#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15213pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
15214    pub s_type: StructureType,
15215    pub next: *mut c_void,
15216    pub legacy_vertex_attributes: Bool32,
15217}
15218
15219impl Default for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
15220    #[inline]
15221    fn default() -> Self {
15222        Self {
15223            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT,
15224            next: ptr::null_mut(),
15225            legacy_vertex_attributes: Bool32::default(),
15226        }
15227    }
15228}
15229
15230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html>
15231#[repr(C)]
15232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15233pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
15234    pub s_type: StructureType,
15235    pub next: *mut c_void,
15236    pub native_unaligned_performance: Bool32,
15237}
15238
15239impl Default for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
15240    #[inline]
15241    fn default() -> Self {
15242        Self {
15243            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT,
15244            next: ptr::null_mut(),
15245            native_unaligned_performance: Bool32::default(),
15246        }
15247    }
15248}
15249
15250/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html>
15251#[repr(C)]
15252#[derive(Copy, Clone, Default, Debug, PartialEq)]
15253pub struct PhysicalDeviceLimits {
15254    pub max_image_dimension_1d: u32,
15255    pub max_image_dimension_2d: u32,
15256    pub max_image_dimension_3d: u32,
15257    pub max_image_dimension_cube: u32,
15258    pub max_image_array_layers: u32,
15259    pub max_texel_buffer_elements: u32,
15260    pub max_uniform_buffer_range: u32,
15261    pub max_storage_buffer_range: u32,
15262    pub max_push_constants_size: u32,
15263    pub max_memory_allocation_count: u32,
15264    pub max_sampler_allocation_count: u32,
15265    pub buffer_image_granularity: DeviceSize,
15266    pub sparse_address_space_size: DeviceSize,
15267    pub max_bound_descriptor_sets: u32,
15268    pub max_per_stage_descriptor_samplers: u32,
15269    pub max_per_stage_descriptor_uniform_buffers: u32,
15270    pub max_per_stage_descriptor_storage_buffers: u32,
15271    pub max_per_stage_descriptor_sampled_images: u32,
15272    pub max_per_stage_descriptor_storage_images: u32,
15273    pub max_per_stage_descriptor_input_attachments: u32,
15274    pub max_per_stage_resources: u32,
15275    pub max_descriptor_set_samplers: u32,
15276    pub max_descriptor_set_uniform_buffers: u32,
15277    pub max_descriptor_set_uniform_buffers_dynamic: u32,
15278    pub max_descriptor_set_storage_buffers: u32,
15279    pub max_descriptor_set_storage_buffers_dynamic: u32,
15280    pub max_descriptor_set_sampled_images: u32,
15281    pub max_descriptor_set_storage_images: u32,
15282    pub max_descriptor_set_input_attachments: u32,
15283    pub max_vertex_input_attributes: u32,
15284    pub max_vertex_input_bindings: u32,
15285    pub max_vertex_input_attribute_offset: u32,
15286    pub max_vertex_input_binding_stride: u32,
15287    pub max_vertex_output_components: u32,
15288    pub max_tessellation_generation_level: u32,
15289    pub max_tessellation_patch_size: u32,
15290    pub max_tessellation_control_per_vertex_input_components: u32,
15291    pub max_tessellation_control_per_vertex_output_components: u32,
15292    pub max_tessellation_control_per_patch_output_components: u32,
15293    pub max_tessellation_control_total_output_components: u32,
15294    pub max_tessellation_evaluation_input_components: u32,
15295    pub max_tessellation_evaluation_output_components: u32,
15296    pub max_geometry_shader_invocations: u32,
15297    pub max_geometry_input_components: u32,
15298    pub max_geometry_output_components: u32,
15299    pub max_geometry_output_vertices: u32,
15300    pub max_geometry_total_output_components: u32,
15301    pub max_fragment_input_components: u32,
15302    pub max_fragment_output_attachments: u32,
15303    pub max_fragment_dual_src_attachments: u32,
15304    pub max_fragment_combined_output_resources: u32,
15305    pub max_compute_shared_memory_size: u32,
15306    pub max_compute_work_group_count: [u32; 3],
15307    pub max_compute_work_group_invocations: u32,
15308    pub max_compute_work_group_size: [u32; 3],
15309    pub sub_pixel_precision_bits: u32,
15310    pub sub_texel_precision_bits: u32,
15311    pub mipmap_precision_bits: u32,
15312    pub max_draw_indexed_index_value: u32,
15313    pub max_draw_indirect_count: u32,
15314    pub max_sampler_lod_bias: f32,
15315    pub max_sampler_anisotropy: f32,
15316    pub max_viewports: u32,
15317    pub max_viewport_dimensions: [u32; 2],
15318    pub viewport_bounds_range: [f32; 2],
15319    pub viewport_sub_pixel_bits: u32,
15320    pub min_memory_map_alignment: usize,
15321    pub min_texel_buffer_offset_alignment: DeviceSize,
15322    pub min_uniform_buffer_offset_alignment: DeviceSize,
15323    pub min_storage_buffer_offset_alignment: DeviceSize,
15324    pub min_texel_offset: i32,
15325    pub max_texel_offset: u32,
15326    pub min_texel_gather_offset: i32,
15327    pub max_texel_gather_offset: u32,
15328    pub min_interpolation_offset: f32,
15329    pub max_interpolation_offset: f32,
15330    pub sub_pixel_interpolation_offset_bits: u32,
15331    pub max_framebuffer_width: u32,
15332    pub max_framebuffer_height: u32,
15333    pub max_framebuffer_layers: u32,
15334    pub framebuffer_color_sample_counts: SampleCountFlags,
15335    pub framebuffer_depth_sample_counts: SampleCountFlags,
15336    pub framebuffer_stencil_sample_counts: SampleCountFlags,
15337    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
15338    pub max_color_attachments: u32,
15339    pub sampled_image_color_sample_counts: SampleCountFlags,
15340    pub sampled_image_integer_sample_counts: SampleCountFlags,
15341    pub sampled_image_depth_sample_counts: SampleCountFlags,
15342    pub sampled_image_stencil_sample_counts: SampleCountFlags,
15343    pub storage_image_sample_counts: SampleCountFlags,
15344    pub max_sample_mask_words: u32,
15345    pub timestamp_compute_and_graphics: Bool32,
15346    pub timestamp_period: f32,
15347    pub max_clip_distances: u32,
15348    pub max_cull_distances: u32,
15349    pub max_combined_clip_and_cull_distances: u32,
15350    pub discrete_queue_priorities: u32,
15351    pub point_size_range: [f32; 2],
15352    pub line_width_range: [f32; 2],
15353    pub point_size_granularity: f32,
15354    pub line_width_granularity: f32,
15355    pub strict_lines: Bool32,
15356    pub standard_sample_locations: Bool32,
15357    pub optimal_buffer_copy_offset_alignment: DeviceSize,
15358    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
15359    pub non_coherent_atom_size: DeviceSize,
15360}
15361
15362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html>
15363#[repr(C)]
15364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15365pub struct PhysicalDeviceLineRasterizationFeatures {
15366    pub s_type: StructureType,
15367    pub next: *mut c_void,
15368    pub rectangular_lines: Bool32,
15369    pub bresenham_lines: Bool32,
15370    pub smooth_lines: Bool32,
15371    pub stippled_rectangular_lines: Bool32,
15372    pub stippled_bresenham_lines: Bool32,
15373    pub stippled_smooth_lines: Bool32,
15374}
15375
15376impl Default for PhysicalDeviceLineRasterizationFeatures {
15377    #[inline]
15378    fn default() -> Self {
15379        Self {
15380            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,
15381            next: ptr::null_mut(),
15382            rectangular_lines: Bool32::default(),
15383            bresenham_lines: Bool32::default(),
15384            smooth_lines: Bool32::default(),
15385            stippled_rectangular_lines: Bool32::default(),
15386            stippled_bresenham_lines: Bool32::default(),
15387            stippled_smooth_lines: Bool32::default(),
15388        }
15389    }
15390}
15391
15392/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html>
15393#[repr(C)]
15394#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15395pub struct PhysicalDeviceLineRasterizationProperties {
15396    pub s_type: StructureType,
15397    pub next: *mut c_void,
15398    pub line_sub_pixel_precision_bits: u32,
15399}
15400
15401impl Default for PhysicalDeviceLineRasterizationProperties {
15402    #[inline]
15403    fn default() -> Self {
15404        Self {
15405            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,
15406            next: ptr::null_mut(),
15407            line_sub_pixel_precision_bits: u32::default(),
15408        }
15409    }
15410}
15411
15412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>
15413#[repr(C)]
15414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15415pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
15416    pub s_type: StructureType,
15417    pub next: *mut c_void,
15418    pub linear_color_attachment: Bool32,
15419}
15420
15421impl Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
15422    #[inline]
15423    fn default() -> Self {
15424        Self {
15425            s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
15426            next: ptr::null_mut(),
15427            linear_color_attachment: Bool32::default(),
15428        }
15429    }
15430}
15431
15432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html>
15433#[repr(C)]
15434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15435pub struct PhysicalDeviceMaintenance3Properties {
15436    pub s_type: StructureType,
15437    pub next: *mut c_void,
15438    pub max_per_set_descriptors: u32,
15439    pub max_memory_allocation_size: DeviceSize,
15440}
15441
15442impl Default for PhysicalDeviceMaintenance3Properties {
15443    #[inline]
15444    fn default() -> Self {
15445        Self {
15446            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
15447            next: ptr::null_mut(),
15448            max_per_set_descriptors: u32::default(),
15449            max_memory_allocation_size: DeviceSize::default(),
15450        }
15451    }
15452}
15453
15454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html>
15455#[repr(C)]
15456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15457pub struct PhysicalDeviceMaintenance4Features {
15458    pub s_type: StructureType,
15459    pub next: *mut c_void,
15460    pub maintenance4: Bool32,
15461}
15462
15463impl Default for PhysicalDeviceMaintenance4Features {
15464    #[inline]
15465    fn default() -> Self {
15466        Self {
15467            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
15468            next: ptr::null_mut(),
15469            maintenance4: Bool32::default(),
15470        }
15471    }
15472}
15473
15474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html>
15475#[repr(C)]
15476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15477pub struct PhysicalDeviceMaintenance4Properties {
15478    pub s_type: StructureType,
15479    pub next: *mut c_void,
15480    pub max_buffer_size: DeviceSize,
15481}
15482
15483impl Default for PhysicalDeviceMaintenance4Properties {
15484    #[inline]
15485    fn default() -> Self {
15486        Self {
15487            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
15488            next: ptr::null_mut(),
15489            max_buffer_size: DeviceSize::default(),
15490        }
15491    }
15492}
15493
15494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html>
15495#[repr(C)]
15496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15497pub struct PhysicalDeviceMaintenance5Features {
15498    pub s_type: StructureType,
15499    pub next: *mut c_void,
15500    pub maintenance5: Bool32,
15501}
15502
15503impl Default for PhysicalDeviceMaintenance5Features {
15504    #[inline]
15505    fn default() -> Self {
15506        Self {
15507            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
15508            next: ptr::null_mut(),
15509            maintenance5: Bool32::default(),
15510        }
15511    }
15512}
15513
15514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html>
15515#[repr(C)]
15516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15517pub struct PhysicalDeviceMaintenance5Properties {
15518    pub s_type: StructureType,
15519    pub next: *mut c_void,
15520    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
15521    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
15522    pub depth_stencil_swizzle_one_support: Bool32,
15523    pub polygon_mode_point_size: Bool32,
15524    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
15525    pub non_strict_wide_lines_use_parallelogram: Bool32,
15526}
15527
15528impl Default for PhysicalDeviceMaintenance5Properties {
15529    #[inline]
15530    fn default() -> Self {
15531        Self {
15532            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
15533            next: ptr::null_mut(),
15534            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
15535            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
15536            depth_stencil_swizzle_one_support: Bool32::default(),
15537            polygon_mode_point_size: Bool32::default(),
15538            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
15539            non_strict_wide_lines_use_parallelogram: Bool32::default(),
15540        }
15541    }
15542}
15543
15544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html>
15545#[repr(C)]
15546#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15547pub struct PhysicalDeviceMaintenance6Features {
15548    pub s_type: StructureType,
15549    pub next: *mut c_void,
15550    pub maintenance6: Bool32,
15551}
15552
15553impl Default for PhysicalDeviceMaintenance6Features {
15554    #[inline]
15555    fn default() -> Self {
15556        Self {
15557            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,
15558            next: ptr::null_mut(),
15559            maintenance6: Bool32::default(),
15560        }
15561    }
15562}
15563
15564/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html>
15565#[repr(C)]
15566#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15567pub struct PhysicalDeviceMaintenance6Properties {
15568    pub s_type: StructureType,
15569    pub next: *mut c_void,
15570    pub block_texel_view_compatible_multiple_layers: Bool32,
15571    pub max_combined_image_sampler_descriptor_count: u32,
15572    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
15573}
15574
15575impl Default for PhysicalDeviceMaintenance6Properties {
15576    #[inline]
15577    fn default() -> Self {
15578        Self {
15579            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,
15580            next: ptr::null_mut(),
15581            block_texel_view_compatible_multiple_layers: Bool32::default(),
15582            max_combined_image_sampler_descriptor_count: u32::default(),
15583            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
15584        }
15585    }
15586}
15587
15588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html>
15589#[repr(C)]
15590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15591pub struct PhysicalDeviceMaintenance7FeaturesKHR {
15592    pub s_type: StructureType,
15593    pub next: *mut c_void,
15594    pub maintenance7: Bool32,
15595}
15596
15597impl Default for PhysicalDeviceMaintenance7FeaturesKHR {
15598    #[inline]
15599    fn default() -> Self {
15600        Self {
15601            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR,
15602            next: ptr::null_mut(),
15603            maintenance7: Bool32::default(),
15604        }
15605    }
15606}
15607
15608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html>
15609#[repr(C)]
15610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15611pub struct PhysicalDeviceMaintenance7PropertiesKHR {
15612    pub s_type: StructureType,
15613    pub next: *mut c_void,
15614    pub robust_fragment_shading_rate_attachment_access: Bool32,
15615    pub separate_depth_stencil_attachment_access: Bool32,
15616    pub max_descriptor_set_total_uniform_buffers_dynamic: u32,
15617    pub max_descriptor_set_total_storage_buffers_dynamic: u32,
15618    pub max_descriptor_set_total_buffers_dynamic: u32,
15619    pub max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32,
15620    pub max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32,
15621    pub max_descriptor_set_update_after_bind_total_buffers_dynamic: u32,
15622}
15623
15624impl Default for PhysicalDeviceMaintenance7PropertiesKHR {
15625    #[inline]
15626    fn default() -> Self {
15627        Self {
15628            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR,
15629            next: ptr::null_mut(),
15630            robust_fragment_shading_rate_attachment_access: Bool32::default(),
15631            separate_depth_stencil_attachment_access: Bool32::default(),
15632            max_descriptor_set_total_uniform_buffers_dynamic: u32::default(),
15633            max_descriptor_set_total_storage_buffers_dynamic: u32::default(),
15634            max_descriptor_set_total_buffers_dynamic: u32::default(),
15635            max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32::default(),
15636            max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32::default(),
15637            max_descriptor_set_update_after_bind_total_buffers_dynamic: u32::default(),
15638        }
15639    }
15640}
15641
15642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html>
15643#[repr(C)]
15644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15645pub struct PhysicalDeviceMaintenance8FeaturesKHR {
15646    pub s_type: StructureType,
15647    pub next: *mut c_void,
15648    pub maintenance8: Bool32,
15649}
15650
15651impl Default for PhysicalDeviceMaintenance8FeaturesKHR {
15652    #[inline]
15653    fn default() -> Self {
15654        Self {
15655            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR,
15656            next: ptr::null_mut(),
15657            maintenance8: Bool32::default(),
15658        }
15659    }
15660}
15661
15662/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9FeaturesKHR.html>
15663#[repr(C)]
15664#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15665pub struct PhysicalDeviceMaintenance9FeaturesKHR {
15666    pub s_type: StructureType,
15667    pub next: *mut c_void,
15668    pub maintenance9: Bool32,
15669}
15670
15671impl Default for PhysicalDeviceMaintenance9FeaturesKHR {
15672    #[inline]
15673    fn default() -> Self {
15674        Self {
15675            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR,
15676            next: ptr::null_mut(),
15677            maintenance9: Bool32::default(),
15678        }
15679    }
15680}
15681
15682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9PropertiesKHR.html>
15683#[repr(C)]
15684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15685pub struct PhysicalDeviceMaintenance9PropertiesKHR {
15686    pub s_type: StructureType,
15687    pub next: *mut c_void,
15688    pub image_2d_view_of_3d_sparse: Bool32,
15689    pub default_vertex_attribute_value: DefaultVertexAttributeValueKHR,
15690}
15691
15692impl Default for PhysicalDeviceMaintenance9PropertiesKHR {
15693    #[inline]
15694    fn default() -> Self {
15695        Self {
15696            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR,
15697            next: ptr::null_mut(),
15698            image_2d_view_of_3d_sparse: Bool32::default(),
15699            default_vertex_attribute_value: DefaultVertexAttributeValueKHR::default(),
15700        }
15701    }
15702}
15703
15704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html>
15705#[repr(C)]
15706#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15707pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXT {
15708    pub s_type: StructureType,
15709    pub next: *mut c_void,
15710    pub memory_map_placed: Bool32,
15711    pub memory_map_range_placed: Bool32,
15712    pub memory_unmap_reserve: Bool32,
15713}
15714
15715impl Default for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
15716    #[inline]
15717    fn default() -> Self {
15718        Self {
15719            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT,
15720            next: ptr::null_mut(),
15721            memory_map_placed: Bool32::default(),
15722            memory_map_range_placed: Bool32::default(),
15723            memory_unmap_reserve: Bool32::default(),
15724        }
15725    }
15726}
15727
15728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html>
15729#[repr(C)]
15730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15731pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXT {
15732    pub s_type: StructureType,
15733    pub next: *mut c_void,
15734    pub min_placed_memory_map_alignment: DeviceSize,
15735}
15736
15737impl Default for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
15738    #[inline]
15739    fn default() -> Self {
15740        Self {
15741            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT,
15742            next: ptr::null_mut(),
15743            min_placed_memory_map_alignment: DeviceSize::default(),
15744        }
15745    }
15746}
15747
15748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>
15749#[repr(C)]
15750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15751pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
15752    pub s_type: StructureType,
15753    pub next: *mut c_void,
15754    pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS],
15755    pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS],
15756}
15757
15758impl Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
15759    #[inline]
15760    fn default() -> Self {
15761        Self {
15762            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
15763            next: ptr::null_mut(),
15764            heap_budget: [DeviceSize::default(); MAX_MEMORY_HEAPS],
15765            heap_usage: [DeviceSize::default(); MAX_MEMORY_HEAPS],
15766        }
15767    }
15768}
15769
15770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html>
15771#[repr(C)]
15772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15773pub struct PhysicalDeviceMemoryDecompressionFeaturesNV {
15774    pub s_type: StructureType,
15775    pub next: *mut c_void,
15776    pub memory_decompression: Bool32,
15777}
15778
15779impl Default for PhysicalDeviceMemoryDecompressionFeaturesNV {
15780    #[inline]
15781    fn default() -> Self {
15782        Self {
15783            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV,
15784            next: ptr::null_mut(),
15785            memory_decompression: Bool32::default(),
15786        }
15787    }
15788}
15789
15790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html>
15791#[repr(C)]
15792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15793pub struct PhysicalDeviceMemoryDecompressionPropertiesNV {
15794    pub s_type: StructureType,
15795    pub next: *mut c_void,
15796    pub decompression_methods: MemoryDecompressionMethodFlagsNV,
15797    pub max_decompression_indirect_count: u64,
15798}
15799
15800impl Default for PhysicalDeviceMemoryDecompressionPropertiesNV {
15801    #[inline]
15802    fn default() -> Self {
15803        Self {
15804            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV,
15805            next: ptr::null_mut(),
15806            decompression_methods: MemoryDecompressionMethodFlagsNV::default(),
15807            max_decompression_indirect_count: u64::default(),
15808        }
15809    }
15810}
15811
15812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>
15813#[repr(C)]
15814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15815pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
15816    pub s_type: StructureType,
15817    pub next: *mut c_void,
15818    pub memory_priority: Bool32,
15819}
15820
15821impl Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
15822    #[inline]
15823    fn default() -> Self {
15824        Self {
15825            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
15826            next: ptr::null_mut(),
15827            memory_priority: Bool32::default(),
15828        }
15829    }
15830}
15831
15832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html>
15833#[repr(C)]
15834#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
15835pub struct PhysicalDeviceMemoryProperties {
15836    pub memory_type_count: u32,
15837    pub memory_types: [MemoryType; MAX_MEMORY_TYPES],
15838    pub memory_heap_count: u32,
15839    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS],
15840}
15841
15842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html>
15843#[repr(C)]
15844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15845pub struct PhysicalDeviceMemoryProperties2 {
15846    pub s_type: StructureType,
15847    pub next: *mut c_void,
15848    pub memory_properties: PhysicalDeviceMemoryProperties,
15849}
15850
15851impl Default for PhysicalDeviceMemoryProperties2 {
15852    #[inline]
15853    fn default() -> Self {
15854        Self {
15855            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
15856            next: ptr::null_mut(),
15857            memory_properties: PhysicalDeviceMemoryProperties::default(),
15858        }
15859    }
15860}
15861
15862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html>
15863#[repr(C)]
15864#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15865pub struct PhysicalDeviceMeshShaderFeaturesEXT {
15866    pub s_type: StructureType,
15867    pub next: *mut c_void,
15868    pub task_shader: Bool32,
15869    pub mesh_shader: Bool32,
15870    pub multiview_mesh_shader: Bool32,
15871    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
15872    pub mesh_shader_queries: Bool32,
15873}
15874
15875impl Default for PhysicalDeviceMeshShaderFeaturesEXT {
15876    #[inline]
15877    fn default() -> Self {
15878        Self {
15879            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT,
15880            next: ptr::null_mut(),
15881            task_shader: Bool32::default(),
15882            mesh_shader: Bool32::default(),
15883            multiview_mesh_shader: Bool32::default(),
15884            primitive_fragment_shading_rate_mesh_shader: Bool32::default(),
15885            mesh_shader_queries: Bool32::default(),
15886        }
15887    }
15888}
15889
15890/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>
15891#[repr(C)]
15892#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15893pub struct PhysicalDeviceMeshShaderFeaturesNV {
15894    pub s_type: StructureType,
15895    pub next: *mut c_void,
15896    pub task_shader: Bool32,
15897    pub mesh_shader: Bool32,
15898}
15899
15900impl Default for PhysicalDeviceMeshShaderFeaturesNV {
15901    #[inline]
15902    fn default() -> Self {
15903        Self {
15904            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
15905            next: ptr::null_mut(),
15906            task_shader: Bool32::default(),
15907            mesh_shader: Bool32::default(),
15908        }
15909    }
15910}
15911
15912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html>
15913#[repr(C)]
15914#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15915pub struct PhysicalDeviceMeshShaderPropertiesEXT {
15916    pub s_type: StructureType,
15917    pub next: *mut c_void,
15918    pub max_task_work_group_total_count: u32,
15919    pub max_task_work_group_count: [u32; 3],
15920    pub max_task_work_group_invocations: u32,
15921    pub max_task_work_group_size: [u32; 3],
15922    pub max_task_payload_size: u32,
15923    pub max_task_shared_memory_size: u32,
15924    pub max_task_payload_and_shared_memory_size: u32,
15925    pub max_mesh_work_group_total_count: u32,
15926    pub max_mesh_work_group_count: [u32; 3],
15927    pub max_mesh_work_group_invocations: u32,
15928    pub max_mesh_work_group_size: [u32; 3],
15929    pub max_mesh_shared_memory_size: u32,
15930    pub max_mesh_payload_and_shared_memory_size: u32,
15931    pub max_mesh_output_memory_size: u32,
15932    pub max_mesh_payload_and_output_memory_size: u32,
15933    pub max_mesh_output_components: u32,
15934    pub max_mesh_output_vertices: u32,
15935    pub max_mesh_output_primitives: u32,
15936    pub max_mesh_output_layers: u32,
15937    pub max_mesh_multiview_view_count: u32,
15938    pub mesh_output_per_vertex_granularity: u32,
15939    pub mesh_output_per_primitive_granularity: u32,
15940    pub max_preferred_task_work_group_invocations: u32,
15941    pub max_preferred_mesh_work_group_invocations: u32,
15942    pub prefers_local_invocation_vertex_output: Bool32,
15943    pub prefers_local_invocation_primitive_output: Bool32,
15944    pub prefers_compact_vertex_output: Bool32,
15945    pub prefers_compact_primitive_output: Bool32,
15946}
15947
15948impl Default for PhysicalDeviceMeshShaderPropertiesEXT {
15949    #[inline]
15950    fn default() -> Self {
15951        Self {
15952            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT,
15953            next: ptr::null_mut(),
15954            max_task_work_group_total_count: u32::default(),
15955            max_task_work_group_count: [u32::default(); 3],
15956            max_task_work_group_invocations: u32::default(),
15957            max_task_work_group_size: [u32::default(); 3],
15958            max_task_payload_size: u32::default(),
15959            max_task_shared_memory_size: u32::default(),
15960            max_task_payload_and_shared_memory_size: u32::default(),
15961            max_mesh_work_group_total_count: u32::default(),
15962            max_mesh_work_group_count: [u32::default(); 3],
15963            max_mesh_work_group_invocations: u32::default(),
15964            max_mesh_work_group_size: [u32::default(); 3],
15965            max_mesh_shared_memory_size: u32::default(),
15966            max_mesh_payload_and_shared_memory_size: u32::default(),
15967            max_mesh_output_memory_size: u32::default(),
15968            max_mesh_payload_and_output_memory_size: u32::default(),
15969            max_mesh_output_components: u32::default(),
15970            max_mesh_output_vertices: u32::default(),
15971            max_mesh_output_primitives: u32::default(),
15972            max_mesh_output_layers: u32::default(),
15973            max_mesh_multiview_view_count: u32::default(),
15974            mesh_output_per_vertex_granularity: u32::default(),
15975            mesh_output_per_primitive_granularity: u32::default(),
15976            max_preferred_task_work_group_invocations: u32::default(),
15977            max_preferred_mesh_work_group_invocations: u32::default(),
15978            prefers_local_invocation_vertex_output: Bool32::default(),
15979            prefers_local_invocation_primitive_output: Bool32::default(),
15980            prefers_compact_vertex_output: Bool32::default(),
15981            prefers_compact_primitive_output: Bool32::default(),
15982        }
15983    }
15984}
15985
15986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>
15987#[repr(C)]
15988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15989pub struct PhysicalDeviceMeshShaderPropertiesNV {
15990    pub s_type: StructureType,
15991    pub next: *mut c_void,
15992    pub max_draw_mesh_tasks_count: u32,
15993    pub max_task_work_group_invocations: u32,
15994    pub max_task_work_group_size: [u32; 3],
15995    pub max_task_total_memory_size: u32,
15996    pub max_task_output_count: u32,
15997    pub max_mesh_work_group_invocations: u32,
15998    pub max_mesh_work_group_size: [u32; 3],
15999    pub max_mesh_total_memory_size: u32,
16000    pub max_mesh_output_vertices: u32,
16001    pub max_mesh_output_primitives: u32,
16002    pub max_mesh_multiview_view_count: u32,
16003    pub mesh_output_per_vertex_granularity: u32,
16004    pub mesh_output_per_primitive_granularity: u32,
16005}
16006
16007impl Default for PhysicalDeviceMeshShaderPropertiesNV {
16008    #[inline]
16009    fn default() -> Self {
16010        Self {
16011            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
16012            next: ptr::null_mut(),
16013            max_draw_mesh_tasks_count: u32::default(),
16014            max_task_work_group_invocations: u32::default(),
16015            max_task_work_group_size: [u32::default(); 3],
16016            max_task_total_memory_size: u32::default(),
16017            max_task_output_count: u32::default(),
16018            max_mesh_work_group_invocations: u32::default(),
16019            max_mesh_work_group_size: [u32::default(); 3],
16020            max_mesh_total_memory_size: u32::default(),
16021            max_mesh_output_vertices: u32::default(),
16022            max_mesh_output_primitives: u32::default(),
16023            max_mesh_multiview_view_count: u32::default(),
16024            mesh_output_per_vertex_granularity: u32::default(),
16025            mesh_output_per_primitive_granularity: u32::default(),
16026        }
16027    }
16028}
16029
16030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>
16031#[repr(C)]
16032#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16033pub struct PhysicalDeviceMultiDrawFeaturesEXT {
16034    pub s_type: StructureType,
16035    pub next: *mut c_void,
16036    pub multi_draw: Bool32,
16037}
16038
16039impl Default for PhysicalDeviceMultiDrawFeaturesEXT {
16040    #[inline]
16041    fn default() -> Self {
16042        Self {
16043            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
16044            next: ptr::null_mut(),
16045            multi_draw: Bool32::default(),
16046        }
16047    }
16048}
16049
16050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>
16051#[repr(C)]
16052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16053pub struct PhysicalDeviceMultiDrawPropertiesEXT {
16054    pub s_type: StructureType,
16055    pub next: *mut c_void,
16056    pub max_multi_draw_count: u32,
16057}
16058
16059impl Default for PhysicalDeviceMultiDrawPropertiesEXT {
16060    #[inline]
16061    fn default() -> Self {
16062        Self {
16063            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
16064            next: ptr::null_mut(),
16065            max_multi_draw_count: u32::default(),
16066        }
16067    }
16068}
16069
16070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html>
16071#[repr(C)]
16072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16073pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
16074    pub s_type: StructureType,
16075    pub next: *mut c_void,
16076    pub multisampled_render_to_single_sampled: Bool32,
16077}
16078
16079impl Default for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
16080    #[inline]
16081    fn default() -> Self {
16082        Self {
16083            s_type:
16084                StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT,
16085            next: ptr::null_mut(),
16086            multisampled_render_to_single_sampled: Bool32::default(),
16087        }
16088    }
16089}
16090
16091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html>
16092#[repr(C)]
16093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16094pub struct PhysicalDeviceMultiviewFeatures {
16095    pub s_type: StructureType,
16096    pub next: *mut c_void,
16097    pub multiview: Bool32,
16098    pub multiview_geometry_shader: Bool32,
16099    pub multiview_tessellation_shader: Bool32,
16100}
16101
16102impl Default for PhysicalDeviceMultiviewFeatures {
16103    #[inline]
16104    fn default() -> Self {
16105        Self {
16106            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
16107            next: ptr::null_mut(),
16108            multiview: Bool32::default(),
16109            multiview_geometry_shader: Bool32::default(),
16110            multiview_tessellation_shader: Bool32::default(),
16111        }
16112    }
16113}
16114
16115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>
16116#[repr(C)]
16117#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16118pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
16119    pub s_type: StructureType,
16120    pub next: *mut c_void,
16121    pub per_view_position_all_components: Bool32,
16122}
16123
16124impl Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
16125    #[inline]
16126    fn default() -> Self {
16127        Self {
16128            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
16129            next: ptr::null_mut(),
16130            per_view_position_all_components: Bool32::default(),
16131        }
16132    }
16133}
16134
16135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html>
16136#[repr(C)]
16137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16138pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
16139    pub s_type: StructureType,
16140    pub next: *mut c_void,
16141    pub multiview_per_view_render_areas: Bool32,
16142}
16143
16144impl Default for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
16145    #[inline]
16146    fn default() -> Self {
16147        Self {
16148            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM,
16149            next: ptr::null_mut(),
16150            multiview_per_view_render_areas: Bool32::default(),
16151        }
16152    }
16153}
16154
16155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html>
16156#[repr(C)]
16157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16158pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
16159    pub s_type: StructureType,
16160    pub next: *mut c_void,
16161    pub multiview_per_view_viewports: Bool32,
16162}
16163
16164impl Default for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
16165    #[inline]
16166    fn default() -> Self {
16167        Self {
16168            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM,
16169            next: ptr::null_mut(),
16170            multiview_per_view_viewports: Bool32::default(),
16171        }
16172    }
16173}
16174
16175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html>
16176#[repr(C)]
16177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16178pub struct PhysicalDeviceMultiviewProperties {
16179    pub s_type: StructureType,
16180    pub next: *mut c_void,
16181    pub max_multiview_view_count: u32,
16182    pub max_multiview_instance_index: u32,
16183}
16184
16185impl Default for PhysicalDeviceMultiviewProperties {
16186    #[inline]
16187    fn default() -> Self {
16188        Self {
16189            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
16190            next: ptr::null_mut(),
16191            max_multiview_view_count: u32::default(),
16192            max_multiview_instance_index: u32::default(),
16193        }
16194    }
16195}
16196
16197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html>
16198#[repr(C)]
16199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16200pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
16201    pub s_type: StructureType,
16202    pub next: *mut c_void,
16203    pub mutable_descriptor_type: Bool32,
16204}
16205
16206impl Default for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
16207    #[inline]
16208    fn default() -> Self {
16209        Self {
16210            s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
16211            next: ptr::null_mut(),
16212            mutable_descriptor_type: Bool32::default(),
16213        }
16214    }
16215}
16216
16217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html>
16218#[repr(C)]
16219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16220pub struct PhysicalDeviceNestedCommandBufferFeaturesEXT {
16221    pub s_type: StructureType,
16222    pub next: *mut c_void,
16223    pub nested_command_buffer: Bool32,
16224    pub nested_command_buffer_rendering: Bool32,
16225    pub nested_command_buffer_simultaneous_use: Bool32,
16226}
16227
16228impl Default for PhysicalDeviceNestedCommandBufferFeaturesEXT {
16229    #[inline]
16230    fn default() -> Self {
16231        Self {
16232            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT,
16233            next: ptr::null_mut(),
16234            nested_command_buffer: Bool32::default(),
16235            nested_command_buffer_rendering: Bool32::default(),
16236            nested_command_buffer_simultaneous_use: Bool32::default(),
16237        }
16238    }
16239}
16240
16241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html>
16242#[repr(C)]
16243#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16244pub struct PhysicalDeviceNestedCommandBufferPropertiesEXT {
16245    pub s_type: StructureType,
16246    pub next: *mut c_void,
16247    pub max_command_buffer_nesting_level: u32,
16248}
16249
16250impl Default for PhysicalDeviceNestedCommandBufferPropertiesEXT {
16251    #[inline]
16252    fn default() -> Self {
16253        Self {
16254            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT,
16255            next: ptr::null_mut(),
16256            max_command_buffer_nesting_level: u32::default(),
16257        }
16258    }
16259}
16260
16261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html>
16262#[repr(C)]
16263#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16264pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
16265    pub s_type: StructureType,
16266    pub next: *mut c_void,
16267    pub non_seamless_cube_map: Bool32,
16268}
16269
16270impl Default for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
16271    #[inline]
16272    fn default() -> Self {
16273        Self {
16274            s_type: StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
16275            next: ptr::null_mut(),
16276            non_seamless_cube_map: Bool32::default(),
16277        }
16278    }
16279}
16280
16281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html>
16282#[repr(C)]
16283#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16284pub struct PhysicalDeviceOpacityMicromapFeaturesEXT {
16285    pub s_type: StructureType,
16286    pub next: *mut c_void,
16287    pub micromap: Bool32,
16288    pub micromap_capture_replay: Bool32,
16289    pub micromap_host_commands: Bool32,
16290}
16291
16292impl Default for PhysicalDeviceOpacityMicromapFeaturesEXT {
16293    #[inline]
16294    fn default() -> Self {
16295        Self {
16296            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT,
16297            next: ptr::null_mut(),
16298            micromap: Bool32::default(),
16299            micromap_capture_replay: Bool32::default(),
16300            micromap_host_commands: Bool32::default(),
16301        }
16302    }
16303}
16304
16305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html>
16306#[repr(C)]
16307#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16308pub struct PhysicalDeviceOpacityMicromapPropertiesEXT {
16309    pub s_type: StructureType,
16310    pub next: *mut c_void,
16311    pub max_opacity2_state_subdivision_level: u32,
16312    pub max_opacity4_state_subdivision_level: u32,
16313}
16314
16315impl Default for PhysicalDeviceOpacityMicromapPropertiesEXT {
16316    #[inline]
16317    fn default() -> Self {
16318        Self {
16319            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT,
16320            next: ptr::null_mut(),
16321            max_opacity2_state_subdivision_level: u32::default(),
16322            max_opacity4_state_subdivision_level: u32::default(),
16323        }
16324    }
16325}
16326
16327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html>
16328#[repr(C)]
16329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16330pub struct PhysicalDeviceOpticalFlowFeaturesNV {
16331    pub s_type: StructureType,
16332    pub next: *mut c_void,
16333    pub optical_flow: Bool32,
16334}
16335
16336impl Default for PhysicalDeviceOpticalFlowFeaturesNV {
16337    #[inline]
16338    fn default() -> Self {
16339        Self {
16340            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV,
16341            next: ptr::null_mut(),
16342            optical_flow: Bool32::default(),
16343        }
16344    }
16345}
16346
16347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html>
16348#[repr(C)]
16349#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16350pub struct PhysicalDeviceOpticalFlowPropertiesNV {
16351    pub s_type: StructureType,
16352    pub next: *mut c_void,
16353    pub supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV,
16354    pub supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV,
16355    pub hint_supported: Bool32,
16356    pub cost_supported: Bool32,
16357    pub bidirectional_flow_supported: Bool32,
16358    pub global_flow_supported: Bool32,
16359    pub min_width: u32,
16360    pub min_height: u32,
16361    pub max_width: u32,
16362    pub max_height: u32,
16363    pub max_num_regions_of_interest: u32,
16364}
16365
16366impl Default for PhysicalDeviceOpticalFlowPropertiesNV {
16367    #[inline]
16368    fn default() -> Self {
16369        Self {
16370            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV,
16371            next: ptr::null_mut(),
16372            supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
16373            supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
16374            hint_supported: Bool32::default(),
16375            cost_supported: Bool32::default(),
16376            bidirectional_flow_supported: Bool32::default(),
16377            global_flow_supported: Bool32::default(),
16378            min_width: u32::default(),
16379            min_height: u32::default(),
16380            max_width: u32::default(),
16381            max_height: u32::default(),
16382            max_num_regions_of_interest: u32::default(),
16383        }
16384    }
16385}
16386
16387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>
16388#[repr(C)]
16389#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16390pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
16391    pub s_type: StructureType,
16392    pub next: *mut c_void,
16393    pub pci_domain: u32,
16394    pub pci_bus: u32,
16395    pub pci_device: u32,
16396    pub pci_function: u32,
16397}
16398
16399impl Default for PhysicalDevicePCIBusInfoPropertiesEXT {
16400    #[inline]
16401    fn default() -> Self {
16402        Self {
16403            s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
16404            next: ptr::null_mut(),
16405            pci_domain: u32::default(),
16406            pci_bus: u32::default(),
16407            pci_device: u32::default(),
16408            pci_function: u32::default(),
16409        }
16410    }
16411}
16412
16413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>
16414#[repr(C)]
16415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16416pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
16417    pub s_type: StructureType,
16418    pub next: *mut c_void,
16419    pub pageable_device_local_memory: Bool32,
16420}
16421
16422impl Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
16423    #[inline]
16424    fn default() -> Self {
16425        Self {
16426            s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
16427            next: ptr::null_mut(),
16428            pageable_device_local_memory: Bool32::default(),
16429        }
16430    }
16431}
16432
16433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html>
16434#[repr(C)]
16435#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16436pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
16437    pub s_type: StructureType,
16438    pub next: *mut c_void,
16439    pub partitioned_acceleration_structure: Bool32,
16440}
16441
16442impl Default for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
16443    #[inline]
16444    fn default() -> Self {
16445        Self {
16446            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV,
16447            next: ptr::null_mut(),
16448            partitioned_acceleration_structure: Bool32::default(),
16449        }
16450    }
16451}
16452
16453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html>
16454#[repr(C)]
16455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16456pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
16457    pub s_type: StructureType,
16458    pub next: *mut c_void,
16459    pub max_partition_count: u32,
16460}
16461
16462impl Default for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
16463    #[inline]
16464    fn default() -> Self {
16465        Self {
16466            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV,
16467            next: ptr::null_mut(),
16468            max_partition_count: u32::default(),
16469        }
16470    }
16471}
16472
16473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html>
16474#[repr(C)]
16475#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16476pub struct PhysicalDevicePerStageDescriptorSetFeaturesNV {
16477    pub s_type: StructureType,
16478    pub next: *mut c_void,
16479    pub per_stage_descriptor_set: Bool32,
16480    pub dynamic_pipeline_layout: Bool32,
16481}
16482
16483impl Default for PhysicalDevicePerStageDescriptorSetFeaturesNV {
16484    #[inline]
16485    fn default() -> Self {
16486        Self {
16487            s_type: StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV,
16488            next: ptr::null_mut(),
16489            per_stage_descriptor_set: Bool32::default(),
16490            dynamic_pipeline_layout: Bool32::default(),
16491        }
16492    }
16493}
16494
16495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>
16496#[repr(C)]
16497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16498pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
16499    pub s_type: StructureType,
16500    pub next: *mut c_void,
16501    pub performance_counter_query_pools: Bool32,
16502    pub performance_counter_multiple_query_pools: Bool32,
16503}
16504
16505impl Default for PhysicalDevicePerformanceQueryFeaturesKHR {
16506    #[inline]
16507    fn default() -> Self {
16508        Self {
16509            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
16510            next: ptr::null_mut(),
16511            performance_counter_query_pools: Bool32::default(),
16512            performance_counter_multiple_query_pools: Bool32::default(),
16513        }
16514    }
16515}
16516
16517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>
16518#[repr(C)]
16519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16520pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
16521    pub s_type: StructureType,
16522    pub next: *mut c_void,
16523    pub allow_command_buffer_query_copies: Bool32,
16524}
16525
16526impl Default for PhysicalDevicePerformanceQueryPropertiesKHR {
16527    #[inline]
16528    fn default() -> Self {
16529        Self {
16530            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
16531            next: ptr::null_mut(),
16532            allow_command_buffer_query_copies: Bool32::default(),
16533        }
16534    }
16535}
16536
16537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html>
16538#[repr(C)]
16539#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16540pub struct PhysicalDevicePipelineBinaryFeaturesKHR {
16541    pub s_type: StructureType,
16542    pub next: *mut c_void,
16543    pub pipeline_binaries: Bool32,
16544}
16545
16546impl Default for PhysicalDevicePipelineBinaryFeaturesKHR {
16547    #[inline]
16548    fn default() -> Self {
16549        Self {
16550            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR,
16551            next: ptr::null_mut(),
16552            pipeline_binaries: Bool32::default(),
16553        }
16554    }
16555}
16556
16557/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html>
16558#[repr(C)]
16559#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16560pub struct PhysicalDevicePipelineBinaryPropertiesKHR {
16561    pub s_type: StructureType,
16562    pub next: *mut c_void,
16563    pub pipeline_binary_internal_cache: Bool32,
16564    pub pipeline_binary_internal_cache_control: Bool32,
16565    pub pipeline_binary_prefers_internal_cache: Bool32,
16566    pub pipeline_binary_precompiled_internal_cache: Bool32,
16567    pub pipeline_binary_compressed_data: Bool32,
16568}
16569
16570impl Default for PhysicalDevicePipelineBinaryPropertiesKHR {
16571    #[inline]
16572    fn default() -> Self {
16573        Self {
16574            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR,
16575            next: ptr::null_mut(),
16576            pipeline_binary_internal_cache: Bool32::default(),
16577            pipeline_binary_internal_cache_control: Bool32::default(),
16578            pipeline_binary_prefers_internal_cache: Bool32::default(),
16579            pipeline_binary_precompiled_internal_cache: Bool32::default(),
16580            pipeline_binary_compressed_data: Bool32::default(),
16581        }
16582    }
16583}
16584
16585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC.html>
16586#[repr(C)]
16587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16588pub struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
16589    pub s_type: StructureType,
16590    pub next: *mut c_void,
16591    pub pipeline_cache_incremental_mode: Bool32,
16592}
16593
16594impl Default for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
16595    #[inline]
16596    fn default() -> Self {
16597        Self {
16598            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC,
16599            next: ptr::null_mut(),
16600            pipeline_cache_incremental_mode: Bool32::default(),
16601        }
16602    }
16603}
16604
16605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html>
16606#[repr(C)]
16607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16608pub struct PhysicalDevicePipelineCreationCacheControlFeatures {
16609    pub s_type: StructureType,
16610    pub next: *mut c_void,
16611    pub pipeline_creation_cache_control: Bool32,
16612}
16613
16614impl Default for PhysicalDevicePipelineCreationCacheControlFeatures {
16615    #[inline]
16616    fn default() -> Self {
16617        Self {
16618            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
16619            next: ptr::null_mut(),
16620            pipeline_creation_cache_control: Bool32::default(),
16621        }
16622    }
16623}
16624
16625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>
16626#[repr(C)]
16627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16628pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
16629    pub s_type: StructureType,
16630    pub next: *mut c_void,
16631    pub pipeline_executable_info: Bool32,
16632}
16633
16634impl Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
16635    #[inline]
16636    fn default() -> Self {
16637        Self {
16638            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
16639            next: ptr::null_mut(),
16640            pipeline_executable_info: Bool32::default(),
16641        }
16642    }
16643}
16644
16645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html>
16646#[repr(C)]
16647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16648pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
16649    pub s_type: StructureType,
16650    pub next: *mut c_void,
16651    pub pipeline_library_group_handles: Bool32,
16652}
16653
16654impl Default for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
16655    #[inline]
16656    fn default() -> Self {
16657        Self {
16658            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
16659            next: ptr::null_mut(),
16660            pipeline_library_group_handles: Bool32::default(),
16661        }
16662    }
16663}
16664
16665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html>
16666#[repr(C)]
16667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16668pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARM {
16669    pub s_type: StructureType,
16670    pub next: *mut c_void,
16671    pub pipeline_opacity_micromap: Bool32,
16672}
16673
16674impl Default for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
16675    #[inline]
16676    fn default() -> Self {
16677        Self {
16678            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM,
16679            next: ptr::null_mut(),
16680            pipeline_opacity_micromap: Bool32::default(),
16681        }
16682    }
16683}
16684
16685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html>
16686#[repr(C)]
16687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16688pub struct PhysicalDevicePipelinePropertiesFeaturesEXT {
16689    pub s_type: StructureType,
16690    pub next: *mut c_void,
16691    pub pipeline_properties_identifier: Bool32,
16692}
16693
16694impl Default for PhysicalDevicePipelinePropertiesFeaturesEXT {
16695    #[inline]
16696    fn default() -> Self {
16697        Self {
16698            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT,
16699            next: ptr::null_mut(),
16700            pipeline_properties_identifier: Bool32::default(),
16701        }
16702    }
16703}
16704
16705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html>
16706#[repr(C)]
16707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16708pub struct PhysicalDevicePipelineProtectedAccessFeatures {
16709    pub s_type: StructureType,
16710    pub next: *mut c_void,
16711    pub pipeline_protected_access: Bool32,
16712}
16713
16714impl Default for PhysicalDevicePipelineProtectedAccessFeatures {
16715    #[inline]
16716    fn default() -> Self {
16717        Self {
16718            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
16719            next: ptr::null_mut(),
16720            pipeline_protected_access: Bool32::default(),
16721        }
16722    }
16723}
16724
16725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html>
16726#[repr(C)]
16727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16728pub struct PhysicalDevicePipelineRobustnessFeatures {
16729    pub s_type: StructureType,
16730    pub next: *mut c_void,
16731    pub pipeline_robustness: Bool32,
16732}
16733
16734impl Default for PhysicalDevicePipelineRobustnessFeatures {
16735    #[inline]
16736    fn default() -> Self {
16737        Self {
16738            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,
16739            next: ptr::null_mut(),
16740            pipeline_robustness: Bool32::default(),
16741        }
16742    }
16743}
16744
16745/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html>
16746#[repr(C)]
16747#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16748pub struct PhysicalDevicePipelineRobustnessProperties {
16749    pub s_type: StructureType,
16750    pub next: *mut c_void,
16751    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
16752    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
16753    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
16754    pub default_robustness_images: PipelineRobustnessImageBehavior,
16755}
16756
16757impl Default for PhysicalDevicePipelineRobustnessProperties {
16758    #[inline]
16759    fn default() -> Self {
16760        Self {
16761            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,
16762            next: ptr::null_mut(),
16763            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
16764            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
16765            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
16766            default_robustness_images: PipelineRobustnessImageBehavior::default(),
16767        }
16768    }
16769}
16770
16771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html>
16772#[repr(C)]
16773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16774pub struct PhysicalDevicePointClippingProperties {
16775    pub s_type: StructureType,
16776    pub next: *mut c_void,
16777    pub point_clipping_behavior: PointClippingBehavior,
16778}
16779
16780impl Default for PhysicalDevicePointClippingProperties {
16781    #[inline]
16782    fn default() -> Self {
16783        Self {
16784            s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
16785            next: ptr::null_mut(),
16786            point_clipping_behavior: PointClippingBehavior::default(),
16787        }
16788    }
16789}
16790
16791/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>
16792#[repr(C)]
16793#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16794pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
16795    pub s_type: StructureType,
16796    pub next: *mut c_void,
16797    pub constant_alpha_color_blend_factors: Bool32,
16798    pub events: Bool32,
16799    pub image_view_format_reinterpretation: Bool32,
16800    pub image_view_format_swizzle: Bool32,
16801    pub image_view_2d_on_3d_image: Bool32,
16802    pub multisample_array_image: Bool32,
16803    pub mutable_comparison_samplers: Bool32,
16804    pub point_polygons: Bool32,
16805    pub sampler_mip_lod_bias: Bool32,
16806    pub separate_stencil_mask_ref: Bool32,
16807    pub shader_sample_rate_interpolation_functions: Bool32,
16808    pub tessellation_isolines: Bool32,
16809    pub tessellation_point_mode: Bool32,
16810    pub triangle_fans: Bool32,
16811    pub vertex_attribute_access_beyond_stride: Bool32,
16812}
16813
16814impl Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
16815    #[inline]
16816    fn default() -> Self {
16817        Self {
16818            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
16819            next: ptr::null_mut(),
16820            constant_alpha_color_blend_factors: Bool32::default(),
16821            events: Bool32::default(),
16822            image_view_format_reinterpretation: Bool32::default(),
16823            image_view_format_swizzle: Bool32::default(),
16824            image_view_2d_on_3d_image: Bool32::default(),
16825            multisample_array_image: Bool32::default(),
16826            mutable_comparison_samplers: Bool32::default(),
16827            point_polygons: Bool32::default(),
16828            sampler_mip_lod_bias: Bool32::default(),
16829            separate_stencil_mask_ref: Bool32::default(),
16830            shader_sample_rate_interpolation_functions: Bool32::default(),
16831            tessellation_isolines: Bool32::default(),
16832            tessellation_point_mode: Bool32::default(),
16833            triangle_fans: Bool32::default(),
16834            vertex_attribute_access_beyond_stride: Bool32::default(),
16835        }
16836    }
16837}
16838
16839/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>
16840#[repr(C)]
16841#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16842pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
16843    pub s_type: StructureType,
16844    pub next: *mut c_void,
16845    pub min_vertex_input_binding_stride_alignment: u32,
16846}
16847
16848impl Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
16849    #[inline]
16850    fn default() -> Self {
16851        Self {
16852            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
16853            next: ptr::null_mut(),
16854            min_vertex_input_binding_stride_alignment: u32::default(),
16855        }
16856    }
16857}
16858
16859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html>
16860#[repr(C)]
16861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16862pub struct PhysicalDevicePresentBarrierFeaturesNV {
16863    pub s_type: StructureType,
16864    pub next: *mut c_void,
16865    pub present_barrier: Bool32,
16866}
16867
16868impl Default for PhysicalDevicePresentBarrierFeaturesNV {
16869    #[inline]
16870    fn default() -> Self {
16871        Self {
16872            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV,
16873            next: ptr::null_mut(),
16874            present_barrier: Bool32::default(),
16875        }
16876    }
16877}
16878
16879/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentId2FeaturesKHR.html>
16880#[repr(C)]
16881#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16882pub struct PhysicalDevicePresentId2FeaturesKHR {
16883    pub s_type: StructureType,
16884    pub next: *mut c_void,
16885    pub present_id2: Bool32,
16886}
16887
16888impl Default for PhysicalDevicePresentId2FeaturesKHR {
16889    #[inline]
16890    fn default() -> Self {
16891        Self {
16892            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR,
16893            next: ptr::null_mut(),
16894            present_id2: Bool32::default(),
16895        }
16896    }
16897}
16898
16899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>
16900#[repr(C)]
16901#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16902pub struct PhysicalDevicePresentIdFeaturesKHR {
16903    pub s_type: StructureType,
16904    pub next: *mut c_void,
16905    pub present_id: Bool32,
16906}
16907
16908impl Default for PhysicalDevicePresentIdFeaturesKHR {
16909    #[inline]
16910    fn default() -> Self {
16911        Self {
16912            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
16913            next: ptr::null_mut(),
16914            present_id: Bool32::default(),
16915        }
16916    }
16917}
16918
16919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html>
16920#[repr(C)]
16921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16922pub struct PhysicalDevicePresentMeteringFeaturesNV {
16923    pub s_type: StructureType,
16924    pub next: *mut c_void,
16925    pub present_metering: Bool32,
16926}
16927
16928impl Default for PhysicalDevicePresentMeteringFeaturesNV {
16929    #[inline]
16930    fn default() -> Self {
16931        Self {
16932            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV,
16933            next: ptr::null_mut(),
16934            present_metering: Bool32::default(),
16935        }
16936    }
16937}
16938
16939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.html>
16940#[repr(C)]
16941#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16942pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
16943    pub s_type: StructureType,
16944    pub next: *mut c_void,
16945    pub present_mode_fifo_latest_ready: Bool32,
16946}
16947
16948impl Default for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
16949    #[inline]
16950    fn default() -> Self {
16951        Self {
16952            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR,
16953            next: ptr::null_mut(),
16954            present_mode_fifo_latest_ready: Bool32::default(),
16955        }
16956    }
16957}
16958
16959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWait2FeaturesKHR.html>
16960#[repr(C)]
16961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16962pub struct PhysicalDevicePresentWait2FeaturesKHR {
16963    pub s_type: StructureType,
16964    pub next: *mut c_void,
16965    pub present_wait2: Bool32,
16966}
16967
16968impl Default for PhysicalDevicePresentWait2FeaturesKHR {
16969    #[inline]
16970    fn default() -> Self {
16971        Self {
16972            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR,
16973            next: ptr::null_mut(),
16974            present_wait2: Bool32::default(),
16975        }
16976    }
16977}
16978
16979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>
16980#[repr(C)]
16981#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16982pub struct PhysicalDevicePresentWaitFeaturesKHR {
16983    pub s_type: StructureType,
16984    pub next: *mut c_void,
16985    pub present_wait: Bool32,
16986}
16987
16988impl Default for PhysicalDevicePresentWaitFeaturesKHR {
16989    #[inline]
16990    fn default() -> Self {
16991        Self {
16992            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
16993            next: ptr::null_mut(),
16994            present_wait: Bool32::default(),
16995        }
16996    }
16997}
16998
16999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>
17000#[repr(C)]
17001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17002pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
17003    pub s_type: StructureType,
17004    pub next: *mut c_void,
17005    pub primitive_topology_list_restart: Bool32,
17006    pub primitive_topology_patch_list_restart: Bool32,
17007}
17008
17009impl Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
17010    #[inline]
17011    fn default() -> Self {
17012        Self {
17013            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
17014            next: ptr::null_mut(),
17015            primitive_topology_list_restart: Bool32::default(),
17016            primitive_topology_patch_list_restart: Bool32::default(),
17017        }
17018    }
17019}
17020
17021/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html>
17022#[repr(C)]
17023#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17024pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
17025    pub s_type: StructureType,
17026    pub next: *mut c_void,
17027    pub primitives_generated_query: Bool32,
17028    pub primitives_generated_query_with_rasterizer_discard: Bool32,
17029    pub primitives_generated_query_with_non_zero_streams: Bool32,
17030}
17031
17032impl Default for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
17033    #[inline]
17034    fn default() -> Self {
17035        Self {
17036            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,
17037            next: ptr::null_mut(),
17038            primitives_generated_query: Bool32::default(),
17039            primitives_generated_query_with_rasterizer_discard: Bool32::default(),
17040            primitives_generated_query_with_non_zero_streams: Bool32::default(),
17041        }
17042    }
17043}
17044
17045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html>
17046#[repr(C)]
17047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17048pub struct PhysicalDevicePrivateDataFeatures {
17049    pub s_type: StructureType,
17050    pub next: *mut c_void,
17051    pub private_data: Bool32,
17052}
17053
17054impl Default for PhysicalDevicePrivateDataFeatures {
17055    #[inline]
17056    fn default() -> Self {
17057        Self {
17058            s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
17059            next: ptr::null_mut(),
17060            private_data: Bool32::default(),
17061        }
17062    }
17063}
17064
17065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html>
17066#[repr(C)]
17067#[derive(Copy, Clone, Default, Debug, PartialEq)]
17068pub struct PhysicalDeviceProperties {
17069    pub api_version: u32,
17070    pub driver_version: u32,
17071    pub vendor_id: u32,
17072    pub device_id: u32,
17073    pub device_type: PhysicalDeviceType,
17074    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
17075    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
17076    pub limits: PhysicalDeviceLimits,
17077    pub sparse_properties: PhysicalDeviceSparseProperties,
17078}
17079
17080/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html>
17081#[repr(C)]
17082#[derive(Copy, Clone, Debug, PartialEq)]
17083pub struct PhysicalDeviceProperties2 {
17084    pub s_type: StructureType,
17085    pub next: *mut c_void,
17086    pub properties: PhysicalDeviceProperties,
17087}
17088
17089impl Default for PhysicalDeviceProperties2 {
17090    #[inline]
17091    fn default() -> Self {
17092        Self {
17093            s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
17094            next: ptr::null_mut(),
17095            properties: PhysicalDeviceProperties::default(),
17096        }
17097    }
17098}
17099
17100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>
17101#[repr(C)]
17102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17103pub struct PhysicalDeviceProtectedMemoryFeatures {
17104    pub s_type: StructureType,
17105    pub next: *mut c_void,
17106    pub protected_memory: Bool32,
17107}
17108
17109impl Default for PhysicalDeviceProtectedMemoryFeatures {
17110    #[inline]
17111    fn default() -> Self {
17112        Self {
17113            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
17114            next: ptr::null_mut(),
17115            protected_memory: Bool32::default(),
17116        }
17117    }
17118}
17119
17120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>
17121#[repr(C)]
17122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17123pub struct PhysicalDeviceProtectedMemoryProperties {
17124    pub s_type: StructureType,
17125    pub next: *mut c_void,
17126    pub protected_no_fault: Bool32,
17127}
17128
17129impl Default for PhysicalDeviceProtectedMemoryProperties {
17130    #[inline]
17131    fn default() -> Self {
17132        Self {
17133            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
17134            next: ptr::null_mut(),
17135            protected_no_fault: Bool32::default(),
17136        }
17137    }
17138}
17139
17140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>
17141#[repr(C)]
17142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17143pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
17144    pub s_type: StructureType,
17145    pub next: *mut c_void,
17146    pub provoking_vertex_last: Bool32,
17147    pub transform_feedback_preserves_provoking_vertex: Bool32,
17148}
17149
17150impl Default for PhysicalDeviceProvokingVertexFeaturesEXT {
17151    #[inline]
17152    fn default() -> Self {
17153        Self {
17154            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
17155            next: ptr::null_mut(),
17156            provoking_vertex_last: Bool32::default(),
17157            transform_feedback_preserves_provoking_vertex: Bool32::default(),
17158        }
17159    }
17160}
17161
17162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>
17163#[repr(C)]
17164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17165pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
17166    pub s_type: StructureType,
17167    pub next: *mut c_void,
17168    pub provoking_vertex_mode_per_pipeline: Bool32,
17169    pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
17170}
17171
17172impl Default for PhysicalDeviceProvokingVertexPropertiesEXT {
17173    #[inline]
17174    fn default() -> Self {
17175        Self {
17176            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
17177            next: ptr::null_mut(),
17178            provoking_vertex_mode_per_pipeline: Bool32::default(),
17179            transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
17180        }
17181    }
17182}
17183
17184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html>
17185#[repr(C)]
17186#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17187pub struct PhysicalDevicePushDescriptorProperties {
17188    pub s_type: StructureType,
17189    pub next: *mut c_void,
17190    pub max_push_descriptors: u32,
17191}
17192
17193impl Default for PhysicalDevicePushDescriptorProperties {
17194    #[inline]
17195    fn default() -> Self {
17196        Self {
17197            s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,
17198            next: ptr::null_mut(),
17199            max_push_descriptors: u32::default(),
17200        }
17201    }
17202}
17203
17204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.html>
17205#[repr(C)]
17206#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17207pub struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
17208    pub s_type: StructureType,
17209    pub next: *const c_void,
17210    pub queue_family_index: u32,
17211    pub engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM,
17212}
17213
17214impl Default for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
17215    #[inline]
17216    fn default() -> Self {
17217        Self {
17218            s_type:
17219                StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM,
17220            next: ptr::null(),
17221            queue_family_index: u32::default(),
17222            engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM::default(),
17223        }
17224    }
17225}
17226
17227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>
17228#[repr(C)]
17229#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17230pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
17231    pub s_type: StructureType,
17232    pub next: *mut c_void,
17233    pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
17234}
17235
17236impl Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
17237    #[inline]
17238    fn default() -> Self {
17239        Self {
17240            s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
17241            next: ptr::null_mut(),
17242            format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
17243        }
17244    }
17245}
17246
17247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html>
17248#[repr(C)]
17249#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17250pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
17251    pub s_type: StructureType,
17252    pub next: *mut c_void,
17253    pub rasterization_order_color_attachment_access: Bool32,
17254    pub rasterization_order_depth_attachment_access: Bool32,
17255    pub rasterization_order_stencil_attachment_access: Bool32,
17256}
17257
17258impl Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
17259    #[inline]
17260    fn default() -> Self {
17261        Self {
17262            s_type:
17263                StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
17264            next: ptr::null_mut(),
17265            rasterization_order_color_attachment_access: Bool32::default(),
17266            rasterization_order_depth_attachment_access: Bool32::default(),
17267            rasterization_order_stencil_attachment_access: Bool32::default(),
17268        }
17269    }
17270}
17271
17272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html>
17273#[repr(C)]
17274#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17275pub struct PhysicalDeviceRawAccessChainsFeaturesNV {
17276    pub s_type: StructureType,
17277    pub next: *mut c_void,
17278    pub shader_raw_access_chains: Bool32,
17279}
17280
17281impl Default for PhysicalDeviceRawAccessChainsFeaturesNV {
17282    #[inline]
17283    fn default() -> Self {
17284        Self {
17285            s_type: StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV,
17286            next: ptr::null_mut(),
17287            shader_raw_access_chains: Bool32::default(),
17288        }
17289    }
17290}
17291
17292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>
17293#[repr(C)]
17294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17295pub struct PhysicalDeviceRayQueryFeaturesKHR {
17296    pub s_type: StructureType,
17297    pub next: *mut c_void,
17298    pub ray_query: Bool32,
17299}
17300
17301impl Default for PhysicalDeviceRayQueryFeaturesKHR {
17302    #[inline]
17303    fn default() -> Self {
17304        Self {
17305            s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
17306            next: ptr::null_mut(),
17307            ray_query: Bool32::default(),
17308        }
17309    }
17310}
17311
17312/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html>
17313#[repr(C)]
17314#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17315pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
17316    pub s_type: StructureType,
17317    pub next: *mut c_void,
17318    pub ray_tracing_invocation_reorder: Bool32,
17319}
17320
17321impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
17322    #[inline]
17323    fn default() -> Self {
17324        Self {
17325            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV,
17326            next: ptr::null_mut(),
17327            ray_tracing_invocation_reorder: Bool32::default(),
17328        }
17329    }
17330}
17331
17332/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html>
17333#[repr(C)]
17334#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17335pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
17336    pub s_type: StructureType,
17337    pub next: *mut c_void,
17338    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeNV,
17339}
17340
17341impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
17342    #[inline]
17343    fn default() -> Self {
17344        Self {
17345            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV,
17346            next: ptr::null_mut(),
17347            ray_tracing_invocation_reorder_reordering_hint:
17348                RayTracingInvocationReorderModeNV::default(),
17349        }
17350    }
17351}
17352
17353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html>
17354#[repr(C)]
17355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17356pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
17357    pub s_type: StructureType,
17358    pub next: *mut c_void,
17359    pub spheres: Bool32,
17360    pub linear_swept_spheres: Bool32,
17361}
17362
17363impl Default for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
17364    #[inline]
17365    fn default() -> Self {
17366        Self {
17367            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV,
17368            next: ptr::null_mut(),
17369            spheres: Bool32::default(),
17370            linear_swept_spheres: Bool32::default(),
17371        }
17372    }
17373}
17374
17375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html>
17376#[repr(C)]
17377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17378pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
17379    pub s_type: StructureType,
17380    pub next: *mut c_void,
17381    pub ray_tracing_maintenance1: Bool32,
17382    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
17383}
17384
17385impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
17386    #[inline]
17387    fn default() -> Self {
17388        Self {
17389            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR,
17390            next: ptr::null_mut(),
17391            ray_tracing_maintenance1: Bool32::default(),
17392            ray_tracing_pipeline_trace_rays_indirect2: Bool32::default(),
17393        }
17394    }
17395}
17396
17397/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>
17398#[repr(C)]
17399#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17400pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
17401    pub s_type: StructureType,
17402    pub next: *mut c_void,
17403    pub ray_tracing_motion_blur: Bool32,
17404    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
17405}
17406
17407impl Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
17408    #[inline]
17409    fn default() -> Self {
17410        Self {
17411            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
17412            next: ptr::null_mut(),
17413            ray_tracing_motion_blur: Bool32::default(),
17414            ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
17415        }
17416    }
17417}
17418
17419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>
17420#[repr(C)]
17421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17422pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
17423    pub s_type: StructureType,
17424    pub next: *mut c_void,
17425    pub ray_tracing_pipeline: Bool32,
17426    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
17427    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
17428    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
17429    pub ray_traversal_primitive_culling: Bool32,
17430}
17431
17432impl Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
17433    #[inline]
17434    fn default() -> Self {
17435        Self {
17436            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
17437            next: ptr::null_mut(),
17438            ray_tracing_pipeline: Bool32::default(),
17439            ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
17440            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
17441            ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
17442            ray_traversal_primitive_culling: Bool32::default(),
17443        }
17444    }
17445}
17446
17447/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>
17448#[repr(C)]
17449#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17450pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
17451    pub s_type: StructureType,
17452    pub next: *mut c_void,
17453    pub shader_group_handle_size: u32,
17454    pub max_ray_recursion_depth: u32,
17455    pub max_shader_group_stride: u32,
17456    pub shader_group_base_alignment: u32,
17457    pub shader_group_handle_capture_replay_size: u32,
17458    pub max_ray_dispatch_invocation_count: u32,
17459    pub shader_group_handle_alignment: u32,
17460    pub max_ray_hit_attribute_size: u32,
17461}
17462
17463impl Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
17464    #[inline]
17465    fn default() -> Self {
17466        Self {
17467            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
17468            next: ptr::null_mut(),
17469            shader_group_handle_size: u32::default(),
17470            max_ray_recursion_depth: u32::default(),
17471            max_shader_group_stride: u32::default(),
17472            shader_group_base_alignment: u32::default(),
17473            shader_group_handle_capture_replay_size: u32::default(),
17474            max_ray_dispatch_invocation_count: u32::default(),
17475            shader_group_handle_alignment: u32::default(),
17476            max_ray_hit_attribute_size: u32::default(),
17477        }
17478    }
17479}
17480
17481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html>
17482#[repr(C)]
17483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17484pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
17485    pub s_type: StructureType,
17486    pub next: *mut c_void,
17487    pub ray_tracing_position_fetch: Bool32,
17488}
17489
17490impl Default for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
17491    #[inline]
17492    fn default() -> Self {
17493        Self {
17494            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR,
17495            next: ptr::null_mut(),
17496            ray_tracing_position_fetch: Bool32::default(),
17497        }
17498    }
17499}
17500
17501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>
17502#[repr(C)]
17503#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17504pub struct PhysicalDeviceRayTracingPropertiesNV {
17505    pub s_type: StructureType,
17506    pub next: *mut c_void,
17507    pub shader_group_handle_size: u32,
17508    pub max_recursion_depth: u32,
17509    pub max_shader_group_stride: u32,
17510    pub shader_group_base_alignment: u32,
17511    pub max_geometry_count: u64,
17512    pub max_instance_count: u64,
17513    pub max_triangle_count: u64,
17514    pub max_descriptor_set_acceleration_structures: u32,
17515}
17516
17517impl Default for PhysicalDeviceRayTracingPropertiesNV {
17518    #[inline]
17519    fn default() -> Self {
17520        Self {
17521            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
17522            next: ptr::null_mut(),
17523            shader_group_handle_size: u32::default(),
17524            max_recursion_depth: u32::default(),
17525            max_shader_group_stride: u32::default(),
17526            shader_group_base_alignment: u32::default(),
17527            max_geometry_count: u64::default(),
17528            max_instance_count: u64::default(),
17529            max_triangle_count: u64::default(),
17530            max_descriptor_set_acceleration_structures: u32::default(),
17531        }
17532    }
17533}
17534
17535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html>
17536#[repr(C)]
17537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17538pub struct PhysicalDeviceRayTracingValidationFeaturesNV {
17539    pub s_type: StructureType,
17540    pub next: *mut c_void,
17541    pub ray_tracing_validation: Bool32,
17542}
17543
17544impl Default for PhysicalDeviceRayTracingValidationFeaturesNV {
17545    #[inline]
17546    fn default() -> Self {
17547        Self {
17548            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV,
17549            next: ptr::null_mut(),
17550            ray_tracing_validation: Bool32::default(),
17551        }
17552    }
17553}
17554
17555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html>
17556#[repr(C)]
17557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17558pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
17559    pub s_type: StructureType,
17560    pub next: *mut c_void,
17561    pub relaxed_line_rasterization: Bool32,
17562}
17563
17564impl Default for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
17565    #[inline]
17566    fn default() -> Self {
17567        Self {
17568            s_type: StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG,
17569            next: ptr::null_mut(),
17570            relaxed_line_rasterization: Bool32::default(),
17571        }
17572    }
17573}
17574
17575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html>
17576#[repr(C)]
17577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17578pub struct PhysicalDeviceRenderPassStripedFeaturesARM {
17579    pub s_type: StructureType,
17580    pub next: *mut c_void,
17581    pub render_pass_striped: Bool32,
17582}
17583
17584impl Default for PhysicalDeviceRenderPassStripedFeaturesARM {
17585    #[inline]
17586    fn default() -> Self {
17587        Self {
17588            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
17589            next: ptr::null_mut(),
17590            render_pass_striped: Bool32::default(),
17591        }
17592    }
17593}
17594
17595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html>
17596#[repr(C)]
17597#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17598pub struct PhysicalDeviceRenderPassStripedPropertiesARM {
17599    pub s_type: StructureType,
17600    pub next: *mut c_void,
17601    pub render_pass_stripe_granularity: Extent2D,
17602    pub max_render_pass_stripes: u32,
17603}
17604
17605impl Default for PhysicalDeviceRenderPassStripedPropertiesARM {
17606    #[inline]
17607    fn default() -> Self {
17608        Self {
17609            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
17610            next: ptr::null_mut(),
17611            render_pass_stripe_granularity: Extent2D::default(),
17612            max_render_pass_stripes: u32::default(),
17613        }
17614    }
17615}
17616
17617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>
17618#[repr(C)]
17619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17620pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
17621    pub s_type: StructureType,
17622    pub next: *mut c_void,
17623    pub representative_fragment_test: Bool32,
17624}
17625
17626impl Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
17627    #[inline]
17628    fn default() -> Self {
17629        Self {
17630            s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
17631            next: ptr::null_mut(),
17632            representative_fragment_test: Bool32::default(),
17633        }
17634    }
17635}
17636
17637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesKHR.html>
17638#[repr(C)]
17639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17640pub struct PhysicalDeviceRobustness2FeaturesKHR {
17641    pub s_type: StructureType,
17642    pub next: *mut c_void,
17643    pub robust_buffer_access2: Bool32,
17644    pub robust_image_access2: Bool32,
17645    pub null_descriptor: Bool32,
17646}
17647
17648impl Default for PhysicalDeviceRobustness2FeaturesKHR {
17649    #[inline]
17650    fn default() -> Self {
17651        Self {
17652            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR,
17653            next: ptr::null_mut(),
17654            robust_buffer_access2: Bool32::default(),
17655            robust_image_access2: Bool32::default(),
17656            null_descriptor: Bool32::default(),
17657        }
17658    }
17659}
17660
17661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesKHR.html>
17662#[repr(C)]
17663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17664pub struct PhysicalDeviceRobustness2PropertiesKHR {
17665    pub s_type: StructureType,
17666    pub next: *mut c_void,
17667    pub robust_storage_buffer_access_size_alignment: DeviceSize,
17668    pub robust_uniform_buffer_access_size_alignment: DeviceSize,
17669}
17670
17671impl Default for PhysicalDeviceRobustness2PropertiesKHR {
17672    #[inline]
17673    fn default() -> Self {
17674        Self {
17675            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR,
17676            next: ptr::null_mut(),
17677            robust_storage_buffer_access_size_alignment: DeviceSize::default(),
17678            robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
17679        }
17680    }
17681}
17682
17683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>
17684#[repr(C)]
17685#[derive(Copy, Clone, Debug, PartialEq)]
17686pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
17687    pub s_type: StructureType,
17688    pub next: *mut c_void,
17689    pub sample_location_sample_counts: SampleCountFlags,
17690    pub max_sample_location_grid_size: Extent2D,
17691    pub sample_location_coordinate_range: [f32; 2],
17692    pub sample_location_sub_pixel_bits: u32,
17693    pub variable_sample_locations: Bool32,
17694}
17695
17696impl Default for PhysicalDeviceSampleLocationsPropertiesEXT {
17697    #[inline]
17698    fn default() -> Self {
17699        Self {
17700            s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
17701            next: ptr::null_mut(),
17702            sample_location_sample_counts: SampleCountFlags::default(),
17703            max_sample_location_grid_size: Extent2D::default(),
17704            sample_location_coordinate_range: [f32::default(); 2],
17705            sample_location_sub_pixel_bits: u32::default(),
17706            variable_sample_locations: Bool32::default(),
17707        }
17708    }
17709}
17710
17711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>
17712#[repr(C)]
17713#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17714pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
17715    pub s_type: StructureType,
17716    pub next: *mut c_void,
17717    pub filter_minmax_single_component_formats: Bool32,
17718    pub filter_minmax_image_component_mapping: Bool32,
17719}
17720
17721impl Default for PhysicalDeviceSamplerFilterMinmaxProperties {
17722    #[inline]
17723    fn default() -> Self {
17724        Self {
17725            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
17726            next: ptr::null_mut(),
17727            filter_minmax_single_component_formats: Bool32::default(),
17728            filter_minmax_image_component_mapping: Bool32::default(),
17729        }
17730    }
17731}
17732
17733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>
17734#[repr(C)]
17735#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17736pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
17737    pub s_type: StructureType,
17738    pub next: *mut c_void,
17739    pub sampler_ycbcr_conversion: Bool32,
17740}
17741
17742impl Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
17743    #[inline]
17744    fn default() -> Self {
17745        Self {
17746            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
17747            next: ptr::null_mut(),
17748            sampler_ycbcr_conversion: Bool32::default(),
17749        }
17750    }
17751}
17752
17753/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>
17754#[repr(C)]
17755#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17756pub struct PhysicalDeviceScalarBlockLayoutFeatures {
17757    pub s_type: StructureType,
17758    pub next: *mut c_void,
17759    pub scalar_block_layout: Bool32,
17760}
17761
17762impl Default for PhysicalDeviceScalarBlockLayoutFeatures {
17763    #[inline]
17764    fn default() -> Self {
17765        Self {
17766            s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
17767            next: ptr::null_mut(),
17768            scalar_block_layout: Bool32::default(),
17769        }
17770    }
17771}
17772
17773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html>
17774#[repr(C)]
17775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17776pub struct PhysicalDeviceSchedulingControlsFeaturesARM {
17777    pub s_type: StructureType,
17778    pub next: *mut c_void,
17779    pub scheduling_controls: Bool32,
17780}
17781
17782impl Default for PhysicalDeviceSchedulingControlsFeaturesARM {
17783    #[inline]
17784    fn default() -> Self {
17785        Self {
17786            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM,
17787            next: ptr::null_mut(),
17788            scheduling_controls: Bool32::default(),
17789        }
17790    }
17791}
17792
17793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html>
17794#[repr(C)]
17795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17796pub struct PhysicalDeviceSchedulingControlsPropertiesARM {
17797    pub s_type: StructureType,
17798    pub next: *mut c_void,
17799    pub scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM,
17800}
17801
17802impl Default for PhysicalDeviceSchedulingControlsPropertiesARM {
17803    #[inline]
17804    fn default() -> Self {
17805        Self {
17806            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM,
17807            next: ptr::null_mut(),
17808            scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM::default(),
17809        }
17810    }
17811}
17812
17813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>
17814#[repr(C)]
17815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17816pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
17817    pub s_type: StructureType,
17818    pub next: *mut c_void,
17819    pub separate_depth_stencil_layouts: Bool32,
17820}
17821
17822impl Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
17823    #[inline]
17824    fn default() -> Self {
17825        Self {
17826            s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
17827            next: ptr::null_mut(),
17828            separate_depth_stencil_layouts: Bool32::default(),
17829        }
17830    }
17831}
17832
17833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html>
17834#[repr(C)]
17835#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17836pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
17837    pub s_type: StructureType,
17838    pub next: *mut c_void,
17839    pub shader_float16_vector_atomics: Bool32,
17840}
17841
17842impl Default for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
17843    #[inline]
17844    fn default() -> Self {
17845        Self {
17846            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV,
17847            next: ptr::null_mut(),
17848            shader_float16_vector_atomics: Bool32::default(),
17849        }
17850    }
17851}
17852
17853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>
17854#[repr(C)]
17855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17856pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
17857    pub s_type: StructureType,
17858    pub next: *mut c_void,
17859    pub shader_buffer_float16_atomics: Bool32,
17860    pub shader_buffer_float16_atomic_add: Bool32,
17861    pub shader_buffer_float16_atomic_min_max: Bool32,
17862    pub shader_buffer_float32_atomic_min_max: Bool32,
17863    pub shader_buffer_float64_atomic_min_max: Bool32,
17864    pub shader_shared_float16_atomics: Bool32,
17865    pub shader_shared_float16_atomic_add: Bool32,
17866    pub shader_shared_float16_atomic_min_max: Bool32,
17867    pub shader_shared_float32_atomic_min_max: Bool32,
17868    pub shader_shared_float64_atomic_min_max: Bool32,
17869    pub shader_image_float32_atomic_min_max: Bool32,
17870    pub sparse_image_float32_atomic_min_max: Bool32,
17871}
17872
17873impl Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
17874    #[inline]
17875    fn default() -> Self {
17876        Self {
17877            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
17878            next: ptr::null_mut(),
17879            shader_buffer_float16_atomics: Bool32::default(),
17880            shader_buffer_float16_atomic_add: Bool32::default(),
17881            shader_buffer_float16_atomic_min_max: Bool32::default(),
17882            shader_buffer_float32_atomic_min_max: Bool32::default(),
17883            shader_buffer_float64_atomic_min_max: Bool32::default(),
17884            shader_shared_float16_atomics: Bool32::default(),
17885            shader_shared_float16_atomic_add: Bool32::default(),
17886            shader_shared_float16_atomic_min_max: Bool32::default(),
17887            shader_shared_float32_atomic_min_max: Bool32::default(),
17888            shader_shared_float64_atomic_min_max: Bool32::default(),
17889            shader_image_float32_atomic_min_max: Bool32::default(),
17890            sparse_image_float32_atomic_min_max: Bool32::default(),
17891        }
17892    }
17893}
17894
17895/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>
17896#[repr(C)]
17897#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17898pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
17899    pub s_type: StructureType,
17900    pub next: *mut c_void,
17901    pub shader_buffer_float32_atomics: Bool32,
17902    pub shader_buffer_float32_atomic_add: Bool32,
17903    pub shader_buffer_float64_atomics: Bool32,
17904    pub shader_buffer_float64_atomic_add: Bool32,
17905    pub shader_shared_float32_atomics: Bool32,
17906    pub shader_shared_float32_atomic_add: Bool32,
17907    pub shader_shared_float64_atomics: Bool32,
17908    pub shader_shared_float64_atomic_add: Bool32,
17909    pub shader_image_float32_atomics: Bool32,
17910    pub shader_image_float32_atomic_add: Bool32,
17911    pub sparse_image_float32_atomics: Bool32,
17912    pub sparse_image_float32_atomic_add: Bool32,
17913}
17914
17915impl Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
17916    #[inline]
17917    fn default() -> Self {
17918        Self {
17919            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
17920            next: ptr::null_mut(),
17921            shader_buffer_float32_atomics: Bool32::default(),
17922            shader_buffer_float32_atomic_add: Bool32::default(),
17923            shader_buffer_float64_atomics: Bool32::default(),
17924            shader_buffer_float64_atomic_add: Bool32::default(),
17925            shader_shared_float32_atomics: Bool32::default(),
17926            shader_shared_float32_atomic_add: Bool32::default(),
17927            shader_shared_float64_atomics: Bool32::default(),
17928            shader_shared_float64_atomic_add: Bool32::default(),
17929            shader_image_float32_atomics: Bool32::default(),
17930            shader_image_float32_atomic_add: Bool32::default(),
17931            sparse_image_float32_atomics: Bool32::default(),
17932            sparse_image_float32_atomic_add: Bool32::default(),
17933        }
17934    }
17935}
17936
17937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>
17938#[repr(C)]
17939#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17940pub struct PhysicalDeviceShaderAtomicInt64Features {
17941    pub s_type: StructureType,
17942    pub next: *mut c_void,
17943    pub shader_buffer_int64_atomics: Bool32,
17944    pub shader_shared_int64_atomics: Bool32,
17945}
17946
17947impl Default for PhysicalDeviceShaderAtomicInt64Features {
17948    #[inline]
17949    fn default() -> Self {
17950        Self {
17951            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
17952            next: ptr::null_mut(),
17953            shader_buffer_int64_atomics: Bool32::default(),
17954            shader_shared_int64_atomics: Bool32::default(),
17955        }
17956    }
17957}
17958
17959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderBfloat16FeaturesKHR.html>
17960#[repr(C)]
17961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17962pub struct PhysicalDeviceShaderBfloat16FeaturesKHR {
17963    pub s_type: StructureType,
17964    pub next: *mut c_void,
17965    pub shader_b_float16_type: Bool32,
17966    pub shader_b_float_16dot_product: Bool32,
17967    pub shader_b_float16_cooperative_matrix: Bool32,
17968}
17969
17970impl Default for PhysicalDeviceShaderBfloat16FeaturesKHR {
17971    #[inline]
17972    fn default() -> Self {
17973        Self {
17974            s_type: StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR,
17975            next: ptr::null_mut(),
17976            shader_b_float16_type: Bool32::default(),
17977            shader_b_float_16dot_product: Bool32::default(),
17978            shader_b_float16_cooperative_matrix: Bool32::default(),
17979        }
17980    }
17981}
17982
17983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>
17984#[repr(C)]
17985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17986pub struct PhysicalDeviceShaderClockFeaturesKHR {
17987    pub s_type: StructureType,
17988    pub next: *mut c_void,
17989    pub shader_subgroup_clock: Bool32,
17990    pub shader_device_clock: Bool32,
17991}
17992
17993impl Default for PhysicalDeviceShaderClockFeaturesKHR {
17994    #[inline]
17995    fn default() -> Self {
17996        Self {
17997            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
17998            next: ptr::null_mut(),
17999            shader_subgroup_clock: Bool32::default(),
18000            shader_device_clock: Bool32::default(),
18001        }
18002    }
18003}
18004
18005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html>
18006#[repr(C)]
18007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18008pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
18009    pub s_type: StructureType,
18010    pub next: *mut c_void,
18011    pub shader_core_builtins: Bool32,
18012}
18013
18014impl Default for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
18015    #[inline]
18016    fn default() -> Self {
18017        Self {
18018            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
18019            next: ptr::null_mut(),
18020            shader_core_builtins: Bool32::default(),
18021        }
18022    }
18023}
18024
18025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html>
18026#[repr(C)]
18027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18028pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
18029    pub s_type: StructureType,
18030    pub next: *mut c_void,
18031    pub shader_core_mask: u64,
18032    pub shader_core_count: u32,
18033    pub shader_warps_per_core: u32,
18034}
18035
18036impl Default for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
18037    #[inline]
18038    fn default() -> Self {
18039        Self {
18040            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
18041            next: ptr::null_mut(),
18042            shader_core_mask: u64::default(),
18043            shader_core_count: u32::default(),
18044            shader_warps_per_core: u32::default(),
18045        }
18046    }
18047}
18048
18049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>
18050#[repr(C)]
18051#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18052pub struct PhysicalDeviceShaderCoreProperties2AMD {
18053    pub s_type: StructureType,
18054    pub next: *mut c_void,
18055    pub shader_core_features: ShaderCorePropertiesFlagsAMD,
18056    pub active_compute_unit_count: u32,
18057}
18058
18059impl Default for PhysicalDeviceShaderCoreProperties2AMD {
18060    #[inline]
18061    fn default() -> Self {
18062        Self {
18063            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
18064            next: ptr::null_mut(),
18065            shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
18066            active_compute_unit_count: u32::default(),
18067        }
18068    }
18069}
18070
18071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>
18072#[repr(C)]
18073#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18074pub struct PhysicalDeviceShaderCorePropertiesAMD {
18075    pub s_type: StructureType,
18076    pub next: *mut c_void,
18077    pub shader_engine_count: u32,
18078    pub shader_arrays_per_engine_count: u32,
18079    pub compute_units_per_shader_array: u32,
18080    pub simd_per_compute_unit: u32,
18081    pub wavefronts_per_simd: u32,
18082    pub wavefront_size: u32,
18083    pub sgprs_per_simd: u32,
18084    pub min_sgpr_allocation: u32,
18085    pub max_sgpr_allocation: u32,
18086    pub sgpr_allocation_granularity: u32,
18087    pub vgprs_per_simd: u32,
18088    pub min_vgpr_allocation: u32,
18089    pub max_vgpr_allocation: u32,
18090    pub vgpr_allocation_granularity: u32,
18091}
18092
18093impl Default for PhysicalDeviceShaderCorePropertiesAMD {
18094    #[inline]
18095    fn default() -> Self {
18096        Self {
18097            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
18098            next: ptr::null_mut(),
18099            shader_engine_count: u32::default(),
18100            shader_arrays_per_engine_count: u32::default(),
18101            compute_units_per_shader_array: u32::default(),
18102            simd_per_compute_unit: u32::default(),
18103            wavefronts_per_simd: u32::default(),
18104            wavefront_size: u32::default(),
18105            sgprs_per_simd: u32::default(),
18106            min_sgpr_allocation: u32::default(),
18107            max_sgpr_allocation: u32::default(),
18108            sgpr_allocation_granularity: u32::default(),
18109            vgprs_per_simd: u32::default(),
18110            min_vgpr_allocation: u32::default(),
18111            max_vgpr_allocation: u32::default(),
18112            vgpr_allocation_granularity: u32::default(),
18113        }
18114    }
18115}
18116
18117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html>
18118#[repr(C)]
18119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18120pub struct PhysicalDeviceShaderCorePropertiesARM {
18121    pub s_type: StructureType,
18122    pub next: *mut c_void,
18123    pub pixel_rate: u32,
18124    pub texel_rate: u32,
18125    pub fma_rate: u32,
18126}
18127
18128impl Default for PhysicalDeviceShaderCorePropertiesARM {
18129    #[inline]
18130    fn default() -> Self {
18131        Self {
18132            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM,
18133            next: ptr::null_mut(),
18134            pixel_rate: u32::default(),
18135            texel_rate: u32::default(),
18136            fma_rate: u32::default(),
18137        }
18138    }
18139}
18140
18141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html>
18142#[repr(C)]
18143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18144pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
18145    pub s_type: StructureType,
18146    pub next: *mut c_void,
18147    pub shader_demote_to_helper_invocation: Bool32,
18148}
18149
18150impl Default for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
18151    #[inline]
18152    fn default() -> Self {
18153        Self {
18154            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
18155            next: ptr::null_mut(),
18156            shader_demote_to_helper_invocation: Bool32::default(),
18157        }
18158    }
18159}
18160
18161/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>
18162#[repr(C)]
18163#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18164pub struct PhysicalDeviceShaderDrawParametersFeatures {
18165    pub s_type: StructureType,
18166    pub next: *mut c_void,
18167    pub shader_draw_parameters: Bool32,
18168}
18169
18170impl Default for PhysicalDeviceShaderDrawParametersFeatures {
18171    #[inline]
18172    fn default() -> Self {
18173        Self {
18174            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
18175            next: ptr::null_mut(),
18176            shader_draw_parameters: Bool32::default(),
18177        }
18178    }
18179}
18180
18181/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html>
18182#[repr(C)]
18183#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18184pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
18185    pub s_type: StructureType,
18186    pub next: *mut c_void,
18187    pub shader_early_and_late_fragment_tests: Bool32,
18188}
18189
18190impl Default for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
18191    #[inline]
18192    fn default() -> Self {
18193        Self {
18194            s_type:
18195                StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD,
18196            next: ptr::null_mut(),
18197            shader_early_and_late_fragment_tests: Bool32::default(),
18198        }
18199    }
18200}
18201
18202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html>
18203#[repr(C)]
18204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18205pub struct PhysicalDeviceShaderEnqueueFeaturesAMDX {
18206    pub s_type: StructureType,
18207    pub next: *mut c_void,
18208    pub shader_enqueue: Bool32,
18209    pub shader_mesh_enqueue: Bool32,
18210}
18211
18212impl Default for PhysicalDeviceShaderEnqueueFeaturesAMDX {
18213    #[inline]
18214    fn default() -> Self {
18215        Self {
18216            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX,
18217            next: ptr::null_mut(),
18218            shader_enqueue: Bool32::default(),
18219            shader_mesh_enqueue: Bool32::default(),
18220        }
18221    }
18222}
18223
18224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html>
18225#[repr(C)]
18226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18227pub struct PhysicalDeviceShaderEnqueuePropertiesAMDX {
18228    pub s_type: StructureType,
18229    pub next: *mut c_void,
18230    pub max_execution_graph_depth: u32,
18231    pub max_execution_graph_shader_output_nodes: u32,
18232    pub max_execution_graph_shader_payload_size: u32,
18233    pub max_execution_graph_shader_payload_count: u32,
18234    pub execution_graph_dispatch_address_alignment: u32,
18235    pub max_execution_graph_workgroup_count: [u32; 3],
18236    pub max_execution_graph_workgroups: u32,
18237}
18238
18239impl Default for PhysicalDeviceShaderEnqueuePropertiesAMDX {
18240    #[inline]
18241    fn default() -> Self {
18242        Self {
18243            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX,
18244            next: ptr::null_mut(),
18245            max_execution_graph_depth: u32::default(),
18246            max_execution_graph_shader_output_nodes: u32::default(),
18247            max_execution_graph_shader_payload_size: u32::default(),
18248            max_execution_graph_shader_payload_count: u32::default(),
18249            execution_graph_dispatch_address_alignment: u32::default(),
18250            max_execution_graph_workgroup_count: [u32::default(); 3],
18251            max_execution_graph_workgroups: u32::default(),
18252        }
18253    }
18254}
18255
18256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html>
18257#[repr(C)]
18258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18259pub struct PhysicalDeviceShaderExpectAssumeFeatures {
18260    pub s_type: StructureType,
18261    pub next: *mut c_void,
18262    pub shader_expect_assume: Bool32,
18263}
18264
18265impl Default for PhysicalDeviceShaderExpectAssumeFeatures {
18266    #[inline]
18267    fn default() -> Self {
18268        Self {
18269            s_type: StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,
18270            next: ptr::null_mut(),
18271            shader_expect_assume: Bool32::default(),
18272        }
18273    }
18274}
18275
18276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>
18277#[repr(C)]
18278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18279pub struct PhysicalDeviceShaderFloat16Int8Features {
18280    pub s_type: StructureType,
18281    pub next: *mut c_void,
18282    pub shader_float16: Bool32,
18283    pub shader_int8: Bool32,
18284}
18285
18286impl Default for PhysicalDeviceShaderFloat16Int8Features {
18287    #[inline]
18288    fn default() -> Self {
18289        Self {
18290            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
18291            next: ptr::null_mut(),
18292            shader_float16: Bool32::default(),
18293            shader_int8: Bool32::default(),
18294        }
18295    }
18296}
18297
18298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat8FeaturesEXT.html>
18299#[repr(C)]
18300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18301pub struct PhysicalDeviceShaderFloat8FeaturesEXT {
18302    pub s_type: StructureType,
18303    pub next: *mut c_void,
18304    pub shader_float8: Bool32,
18305    pub shader_float8_cooperative_matrix: Bool32,
18306}
18307
18308impl Default for PhysicalDeviceShaderFloat8FeaturesEXT {
18309    #[inline]
18310    fn default() -> Self {
18311        Self {
18312            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT,
18313            next: ptr::null_mut(),
18314            shader_float8: Bool32::default(),
18315            shader_float8_cooperative_matrix: Bool32::default(),
18316        }
18317    }
18318}
18319
18320/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html>
18321#[repr(C)]
18322#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18323pub struct PhysicalDeviceShaderFloatControls2Features {
18324    pub s_type: StructureType,
18325    pub next: *mut c_void,
18326    pub shader_float_controls2: Bool32,
18327}
18328
18329impl Default for PhysicalDeviceShaderFloatControls2Features {
18330    #[inline]
18331    fn default() -> Self {
18332        Self {
18333            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,
18334            next: ptr::null_mut(),
18335            shader_float_controls2: Bool32::default(),
18336        }
18337    }
18338}
18339
18340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>
18341#[repr(C)]
18342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18343pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
18344    pub s_type: StructureType,
18345    pub next: *mut c_void,
18346    pub shader_image_int64_atomics: Bool32,
18347    pub sparse_image_int64_atomics: Bool32,
18348}
18349
18350impl Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
18351    #[inline]
18352    fn default() -> Self {
18353        Self {
18354            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
18355            next: ptr::null_mut(),
18356            shader_image_int64_atomics: Bool32::default(),
18357            sparse_image_int64_atomics: Bool32::default(),
18358        }
18359    }
18360}
18361
18362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>
18363#[repr(C)]
18364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18365pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
18366    pub s_type: StructureType,
18367    pub next: *mut c_void,
18368    pub image_footprint: Bool32,
18369}
18370
18371impl Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
18372    #[inline]
18373    fn default() -> Self {
18374        Self {
18375            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
18376            next: ptr::null_mut(),
18377            image_footprint: Bool32::default(),
18378        }
18379    }
18380}
18381
18382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html>
18383#[repr(C)]
18384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18385pub struct PhysicalDeviceShaderIntegerDotProductFeatures {
18386    pub s_type: StructureType,
18387    pub next: *mut c_void,
18388    pub shader_integer_dot_product: Bool32,
18389}
18390
18391impl Default for PhysicalDeviceShaderIntegerDotProductFeatures {
18392    #[inline]
18393    fn default() -> Self {
18394        Self {
18395            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
18396            next: ptr::null_mut(),
18397            shader_integer_dot_product: Bool32::default(),
18398        }
18399    }
18400}
18401
18402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html>
18403#[repr(C)]
18404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18405pub struct PhysicalDeviceShaderIntegerDotProductProperties {
18406    pub s_type: StructureType,
18407    pub next: *mut c_void,
18408    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
18409    pub integer_dot_product_8bit_signed_accelerated: Bool32,
18410    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
18411    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
18412    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
18413    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
18414    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
18415    pub integer_dot_product_16bit_signed_accelerated: Bool32,
18416    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
18417    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
18418    pub integer_dot_product_32bit_signed_accelerated: Bool32,
18419    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
18420    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
18421    pub integer_dot_product_64bit_signed_accelerated: Bool32,
18422    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
18423    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
18424    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
18425    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
18426    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
18427    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
18428    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
18429        Bool32,
18430    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
18431    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
18432    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
18433    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
18434    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
18435    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
18436    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
18437    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
18438    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
18439}
18440
18441impl Default for PhysicalDeviceShaderIntegerDotProductProperties {
18442    #[inline]
18443    fn default() -> Self {
18444        Self { s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, next: ptr::null_mut(), integer_dot_product_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_8bit_signed_accelerated: Bool32::default(), integer_dot_product_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_16bit_signed_accelerated: Bool32::default(), integer_dot_product_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_32bit_signed_accelerated: Bool32::default(), integer_dot_product_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_64bit_signed_accelerated: Bool32::default(), integer_dot_product_64bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32::default() }
18445    }
18446}
18447
18448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>
18449#[repr(C)]
18450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18451pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
18452    pub s_type: StructureType,
18453    pub next: *mut c_void,
18454    pub shader_integer_functions2: Bool32,
18455}
18456
18457impl Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
18458    #[inline]
18459    fn default() -> Self {
18460        Self {
18461            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
18462            next: ptr::null_mut(),
18463            shader_integer_functions2: Bool32::default(),
18464        }
18465    }
18466}
18467
18468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html>
18469#[repr(C)]
18470#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18471pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
18472    pub s_type: StructureType,
18473    pub next: *mut c_void,
18474    pub shader_maximal_reconvergence: Bool32,
18475}
18476
18477impl Default for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
18478    #[inline]
18479    fn default() -> Self {
18480        Self {
18481            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR,
18482            next: ptr::null_mut(),
18483            shader_maximal_reconvergence: Bool32::default(),
18484        }
18485    }
18486}
18487
18488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html>
18489#[repr(C)]
18490#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18491pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
18492    pub s_type: StructureType,
18493    pub next: *mut c_void,
18494    pub shader_module_identifier: Bool32,
18495}
18496
18497impl Default for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
18498    #[inline]
18499    fn default() -> Self {
18500        Self {
18501            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT,
18502            next: ptr::null_mut(),
18503            shader_module_identifier: Bool32::default(),
18504        }
18505    }
18506}
18507
18508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html>
18509#[repr(C)]
18510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18511pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
18512    pub s_type: StructureType,
18513    pub next: *mut c_void,
18514    pub shader_module_identifier_algorithm_uuid: ByteArray<UUID_SIZE>,
18515}
18516
18517impl Default for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
18518    #[inline]
18519    fn default() -> Self {
18520        Self {
18521            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT,
18522            next: ptr::null_mut(),
18523            shader_module_identifier_algorithm_uuid: ByteArray::default(),
18524        }
18525    }
18526}
18527
18528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html>
18529#[repr(C)]
18530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18531pub struct PhysicalDeviceShaderObjectFeaturesEXT {
18532    pub s_type: StructureType,
18533    pub next: *mut c_void,
18534    pub shader_object: Bool32,
18535}
18536
18537impl Default for PhysicalDeviceShaderObjectFeaturesEXT {
18538    #[inline]
18539    fn default() -> Self {
18540        Self {
18541            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT,
18542            next: ptr::null_mut(),
18543            shader_object: Bool32::default(),
18544        }
18545    }
18546}
18547
18548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html>
18549#[repr(C)]
18550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18551pub struct PhysicalDeviceShaderObjectPropertiesEXT {
18552    pub s_type: StructureType,
18553    pub next: *mut c_void,
18554    pub shader_binary_uuid: ByteArray<UUID_SIZE>,
18555    pub shader_binary_version: u32,
18556}
18557
18558impl Default for PhysicalDeviceShaderObjectPropertiesEXT {
18559    #[inline]
18560    fn default() -> Self {
18561        Self {
18562            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT,
18563            next: ptr::null_mut(),
18564            shader_binary_uuid: ByteArray::default(),
18565            shader_binary_version: u32::default(),
18566        }
18567    }
18568}
18569
18570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html>
18571#[repr(C)]
18572#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18573pub struct PhysicalDeviceShaderQuadControlFeaturesKHR {
18574    pub s_type: StructureType,
18575    pub next: *mut c_void,
18576    pub shader_quad_control: Bool32,
18577}
18578
18579impl Default for PhysicalDeviceShaderQuadControlFeaturesKHR {
18580    #[inline]
18581    fn default() -> Self {
18582        Self {
18583            s_type: StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR,
18584            next: ptr::null_mut(),
18585            shader_quad_control: Bool32::default(),
18586        }
18587    }
18588}
18589
18590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html>
18591#[repr(C)]
18592#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18593pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
18594    pub s_type: StructureType,
18595    pub next: *mut c_void,
18596    pub shader_relaxed_extended_instruction: Bool32,
18597}
18598
18599impl Default for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
18600    #[inline]
18601    fn default() -> Self {
18602        Self {
18603            s_type: StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR,
18604            next: ptr::null_mut(),
18605            shader_relaxed_extended_instruction: Bool32::default(),
18606        }
18607    }
18608}
18609
18610/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html>
18611#[repr(C)]
18612#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18613pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
18614    pub s_type: StructureType,
18615    pub next: *mut c_void,
18616    pub shader_replicated_composites: Bool32,
18617}
18618
18619impl Default for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
18620    #[inline]
18621    fn default() -> Self {
18622        Self {
18623            s_type: StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT,
18624            next: ptr::null_mut(),
18625            shader_replicated_composites: Bool32::default(),
18626        }
18627    }
18628}
18629
18630/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>
18631#[repr(C)]
18632#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18633pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
18634    pub s_type: StructureType,
18635    pub next: *mut c_void,
18636    pub shader_sm_builtins: Bool32,
18637}
18638
18639impl Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
18640    #[inline]
18641    fn default() -> Self {
18642        Self {
18643            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
18644            next: ptr::null_mut(),
18645            shader_sm_builtins: Bool32::default(),
18646        }
18647    }
18648}
18649
18650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>
18651#[repr(C)]
18652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18653pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
18654    pub s_type: StructureType,
18655    pub next: *mut c_void,
18656    pub shader_sm_count: u32,
18657    pub shader_warps_per_sm: u32,
18658}
18659
18660impl Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
18661    #[inline]
18662    fn default() -> Self {
18663        Self {
18664            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
18665            next: ptr::null_mut(),
18666            shader_sm_count: u32::default(),
18667            shader_warps_per_sm: u32::default(),
18668        }
18669    }
18670}
18671
18672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>
18673#[repr(C)]
18674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18675pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
18676    pub s_type: StructureType,
18677    pub next: *mut c_void,
18678    pub shader_subgroup_extended_types: Bool32,
18679}
18680
18681impl Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
18682    #[inline]
18683    fn default() -> Self {
18684        Self {
18685            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
18686            next: ptr::null_mut(),
18687            shader_subgroup_extended_types: Bool32::default(),
18688        }
18689    }
18690}
18691
18692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html>
18693#[repr(C)]
18694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18695pub struct PhysicalDeviceShaderSubgroupRotateFeatures {
18696    pub s_type: StructureType,
18697    pub next: *mut c_void,
18698    pub shader_subgroup_rotate: Bool32,
18699    pub shader_subgroup_rotate_clustered: Bool32,
18700}
18701
18702impl Default for PhysicalDeviceShaderSubgroupRotateFeatures {
18703    #[inline]
18704    fn default() -> Self {
18705        Self {
18706            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
18707            next: ptr::null_mut(),
18708            shader_subgroup_rotate: Bool32::default(),
18709            shader_subgroup_rotate_clustered: Bool32::default(),
18710        }
18711    }
18712}
18713
18714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>
18715#[repr(C)]
18716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18717pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
18718    pub s_type: StructureType,
18719    pub next: *mut c_void,
18720    pub shader_subgroup_uniform_control_flow: Bool32,
18721}
18722
18723impl Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
18724    #[inline]
18725    fn default() -> Self {
18726        Self {
18727            s_type:
18728                StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
18729            next: ptr::null_mut(),
18730            shader_subgroup_uniform_control_flow: Bool32::default(),
18731        }
18732    }
18733}
18734
18735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html>
18736#[repr(C)]
18737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18738pub struct PhysicalDeviceShaderTerminateInvocationFeatures {
18739    pub s_type: StructureType,
18740    pub next: *mut c_void,
18741    pub shader_terminate_invocation: Bool32,
18742}
18743
18744impl Default for PhysicalDeviceShaderTerminateInvocationFeatures {
18745    #[inline]
18746    fn default() -> Self {
18747        Self {
18748            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
18749            next: ptr::null_mut(),
18750            shader_terminate_invocation: Bool32::default(),
18751        }
18752    }
18753}
18754
18755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html>
18756#[repr(C)]
18757#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18758pub struct PhysicalDeviceShaderTileImageFeaturesEXT {
18759    pub s_type: StructureType,
18760    pub next: *mut c_void,
18761    pub shader_tile_image_color_read_access: Bool32,
18762    pub shader_tile_image_depth_read_access: Bool32,
18763    pub shader_tile_image_stencil_read_access: Bool32,
18764}
18765
18766impl Default for PhysicalDeviceShaderTileImageFeaturesEXT {
18767    #[inline]
18768    fn default() -> Self {
18769        Self {
18770            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT,
18771            next: ptr::null_mut(),
18772            shader_tile_image_color_read_access: Bool32::default(),
18773            shader_tile_image_depth_read_access: Bool32::default(),
18774            shader_tile_image_stencil_read_access: Bool32::default(),
18775        }
18776    }
18777}
18778
18779/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html>
18780#[repr(C)]
18781#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18782pub struct PhysicalDeviceShaderTileImagePropertiesEXT {
18783    pub s_type: StructureType,
18784    pub next: *mut c_void,
18785    pub shader_tile_image_coherent_read_accelerated: Bool32,
18786    pub shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32,
18787    pub shader_tile_image_read_from_helper_invocation: Bool32,
18788}
18789
18790impl Default for PhysicalDeviceShaderTileImagePropertiesEXT {
18791    #[inline]
18792    fn default() -> Self {
18793        Self {
18794            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT,
18795            next: ptr::null_mut(),
18796            shader_tile_image_coherent_read_accelerated: Bool32::default(),
18797            shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32::default(),
18798            shader_tile_image_read_from_helper_invocation: Bool32::default(),
18799        }
18800    }
18801}
18802
18803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>
18804#[repr(C)]
18805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18806pub struct PhysicalDeviceShadingRateImageFeaturesNV {
18807    pub s_type: StructureType,
18808    pub next: *mut c_void,
18809    pub shading_rate_image: Bool32,
18810    pub shading_rate_coarse_sample_order: Bool32,
18811}
18812
18813impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
18814    #[inline]
18815    fn default() -> Self {
18816        Self {
18817            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
18818            next: ptr::null_mut(),
18819            shading_rate_image: Bool32::default(),
18820            shading_rate_coarse_sample_order: Bool32::default(),
18821        }
18822    }
18823}
18824
18825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>
18826#[repr(C)]
18827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18828pub struct PhysicalDeviceShadingRateImagePropertiesNV {
18829    pub s_type: StructureType,
18830    pub next: *mut c_void,
18831    pub shading_rate_texel_size: Extent2D,
18832    pub shading_rate_palette_size: u32,
18833    pub shading_rate_max_coarse_samples: u32,
18834}
18835
18836impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
18837    #[inline]
18838    fn default() -> Self {
18839        Self {
18840            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
18841            next: ptr::null_mut(),
18842            shading_rate_texel_size: Extent2D::default(),
18843            shading_rate_palette_size: u32::default(),
18844            shading_rate_max_coarse_samples: u32::default(),
18845        }
18846    }
18847}
18848
18849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>
18850#[repr(C)]
18851#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18852pub struct PhysicalDeviceSparseImageFormatInfo2 {
18853    pub s_type: StructureType,
18854    pub next: *const c_void,
18855    pub format: Format,
18856    pub type_: ImageType,
18857    pub samples: SampleCountFlags,
18858    pub usage: ImageUsageFlags,
18859    pub tiling: ImageTiling,
18860}
18861
18862impl Default for PhysicalDeviceSparseImageFormatInfo2 {
18863    #[inline]
18864    fn default() -> Self {
18865        Self {
18866            s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
18867            next: ptr::null(),
18868            format: Format::default(),
18869            type_: ImageType::default(),
18870            samples: SampleCountFlags::default(),
18871            usage: ImageUsageFlags::default(),
18872            tiling: ImageTiling::default(),
18873        }
18874    }
18875}
18876
18877/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html>
18878#[repr(C)]
18879#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
18880pub struct PhysicalDeviceSparseProperties {
18881    pub residency_standard_2d_block_shape: Bool32,
18882    pub residency_standard_2d_multisample_block_shape: Bool32,
18883    pub residency_standard_3d_block_shape: Bool32,
18884    pub residency_aligned_mip_size: Bool32,
18885    pub residency_non_resident_strict: Bool32,
18886}
18887
18888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html>
18889#[repr(C)]
18890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18891pub struct PhysicalDeviceSubgroupProperties {
18892    pub s_type: StructureType,
18893    pub next: *mut c_void,
18894    pub subgroup_size: u32,
18895    pub supported_stages: ShaderStageFlags,
18896    pub supported_operations: SubgroupFeatureFlags,
18897    pub quad_operations_in_all_stages: Bool32,
18898}
18899
18900impl Default for PhysicalDeviceSubgroupProperties {
18901    #[inline]
18902    fn default() -> Self {
18903        Self {
18904            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
18905            next: ptr::null_mut(),
18906            subgroup_size: u32::default(),
18907            supported_stages: ShaderStageFlags::default(),
18908            supported_operations: SubgroupFeatureFlags::default(),
18909            quad_operations_in_all_stages: Bool32::default(),
18910        }
18911    }
18912}
18913
18914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html>
18915#[repr(C)]
18916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18917pub struct PhysicalDeviceSubgroupSizeControlFeatures {
18918    pub s_type: StructureType,
18919    pub next: *mut c_void,
18920    pub subgroup_size_control: Bool32,
18921    pub compute_full_subgroups: Bool32,
18922}
18923
18924impl Default for PhysicalDeviceSubgroupSizeControlFeatures {
18925    #[inline]
18926    fn default() -> Self {
18927        Self {
18928            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
18929            next: ptr::null_mut(),
18930            subgroup_size_control: Bool32::default(),
18931            compute_full_subgroups: Bool32::default(),
18932        }
18933    }
18934}
18935
18936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html>
18937#[repr(C)]
18938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18939pub struct PhysicalDeviceSubgroupSizeControlProperties {
18940    pub s_type: StructureType,
18941    pub next: *mut c_void,
18942    pub min_subgroup_size: u32,
18943    pub max_subgroup_size: u32,
18944    pub max_compute_workgroup_subgroups: u32,
18945    pub required_subgroup_size_stages: ShaderStageFlags,
18946}
18947
18948impl Default for PhysicalDeviceSubgroupSizeControlProperties {
18949    #[inline]
18950    fn default() -> Self {
18951        Self {
18952            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
18953            next: ptr::null_mut(),
18954            min_subgroup_size: u32::default(),
18955            max_subgroup_size: u32::default(),
18956            max_compute_workgroup_subgroups: u32::default(),
18957            required_subgroup_size_stages: ShaderStageFlags::default(),
18958        }
18959    }
18960}
18961
18962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html>
18963#[repr(C)]
18964#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18965pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
18966    pub s_type: StructureType,
18967    pub next: *mut c_void,
18968    pub subpass_merge_feedback: Bool32,
18969}
18970
18971impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
18972    #[inline]
18973    fn default() -> Self {
18974        Self {
18975            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT,
18976            next: ptr::null_mut(),
18977            subpass_merge_feedback: Bool32::default(),
18978        }
18979    }
18980}
18981
18982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>
18983#[repr(C)]
18984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18985pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
18986    pub s_type: StructureType,
18987    pub next: *mut c_void,
18988    pub subpass_shading: Bool32,
18989}
18990
18991impl Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
18992    #[inline]
18993    fn default() -> Self {
18994        Self {
18995            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
18996            next: ptr::null_mut(),
18997            subpass_shading: Bool32::default(),
18998        }
18999    }
19000}
19001
19002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>
19003#[repr(C)]
19004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19005pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
19006    pub s_type: StructureType,
19007    pub next: *mut c_void,
19008    pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
19009}
19010
19011impl Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
19012    #[inline]
19013    fn default() -> Self {
19014        Self {
19015            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
19016            next: ptr::null_mut(),
19017            max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
19018        }
19019    }
19020}
19021
19022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>
19023#[repr(C)]
19024#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19025pub struct PhysicalDeviceSurfaceInfo2KHR {
19026    pub s_type: StructureType,
19027    pub next: *const c_void,
19028    pub surface: SurfaceKHR,
19029}
19030
19031impl Default for PhysicalDeviceSurfaceInfo2KHR {
19032    #[inline]
19033    fn default() -> Self {
19034        Self {
19035            s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
19036            next: ptr::null(),
19037            surface: SurfaceKHR::default(),
19038        }
19039    }
19040}
19041
19042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR.html>
19043#[repr(C)]
19044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19045pub struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
19046    pub s_type: StructureType,
19047    pub next: *mut c_void,
19048    pub swapchain_maintenance1: Bool32,
19049}
19050
19051impl Default for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
19052    #[inline]
19053    fn default() -> Self {
19054        Self {
19055            s_type: StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR,
19056            next: ptr::null_mut(),
19057            swapchain_maintenance1: Bool32::default(),
19058        }
19059    }
19060}
19061
19062/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html>
19063#[repr(C)]
19064#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19065pub struct PhysicalDeviceSynchronization2Features {
19066    pub s_type: StructureType,
19067    pub next: *mut c_void,
19068    pub synchronization2: Bool32,
19069}
19070
19071impl Default for PhysicalDeviceSynchronization2Features {
19072    #[inline]
19073    fn default() -> Self {
19074        Self {
19075            s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
19076            next: ptr::null_mut(),
19077            synchronization2: Bool32::default(),
19078        }
19079    }
19080}
19081
19082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorFeaturesARM.html>
19083#[repr(C)]
19084#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19085pub struct PhysicalDeviceTensorFeaturesARM {
19086    pub s_type: StructureType,
19087    pub next: *mut c_void,
19088    pub tensor_non_packed: Bool32,
19089    pub shader_tensor_access: Bool32,
19090    pub shader_storage_tensor_array_dynamic_indexing: Bool32,
19091    pub shader_storage_tensor_array_non_uniform_indexing: Bool32,
19092    pub descriptor_binding_storage_tensor_update_after_bind: Bool32,
19093    pub tensors: Bool32,
19094}
19095
19096impl Default for PhysicalDeviceTensorFeaturesARM {
19097    #[inline]
19098    fn default() -> Self {
19099        Self {
19100            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM,
19101            next: ptr::null_mut(),
19102            tensor_non_packed: Bool32::default(),
19103            shader_tensor_access: Bool32::default(),
19104            shader_storage_tensor_array_dynamic_indexing: Bool32::default(),
19105            shader_storage_tensor_array_non_uniform_indexing: Bool32::default(),
19106            descriptor_binding_storage_tensor_update_after_bind: Bool32::default(),
19107            tensors: Bool32::default(),
19108        }
19109    }
19110}
19111
19112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorPropertiesARM.html>
19113#[repr(C)]
19114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19115pub struct PhysicalDeviceTensorPropertiesARM {
19116    pub s_type: StructureType,
19117    pub next: *mut c_void,
19118    pub max_tensor_dimension_count: u32,
19119    pub max_tensor_elements: u64,
19120    pub max_per_dimension_tensor_elements: u64,
19121    pub max_tensor_stride: i64,
19122    pub max_tensor_size: u64,
19123    pub max_tensor_shader_access_array_length: u32,
19124    pub max_tensor_shader_access_size: u32,
19125    pub max_descriptor_set_storage_tensors: u32,
19126    pub max_per_stage_descriptor_set_storage_tensors: u32,
19127    pub max_descriptor_set_update_after_bind_storage_tensors: u32,
19128    pub max_per_stage_descriptor_update_after_bind_storage_tensors: u32,
19129    pub shader_storage_tensor_array_non_uniform_indexing_native: Bool32,
19130    pub shader_tensor_supported_stages: ShaderStageFlags,
19131}
19132
19133impl Default for PhysicalDeviceTensorPropertiesARM {
19134    #[inline]
19135    fn default() -> Self {
19136        Self {
19137            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM,
19138            next: ptr::null_mut(),
19139            max_tensor_dimension_count: u32::default(),
19140            max_tensor_elements: u64::default(),
19141            max_per_dimension_tensor_elements: u64::default(),
19142            max_tensor_stride: i64::default(),
19143            max_tensor_size: u64::default(),
19144            max_tensor_shader_access_array_length: u32::default(),
19145            max_tensor_shader_access_size: u32::default(),
19146            max_descriptor_set_storage_tensors: u32::default(),
19147            max_per_stage_descriptor_set_storage_tensors: u32::default(),
19148            max_descriptor_set_update_after_bind_storage_tensors: u32::default(),
19149            max_per_stage_descriptor_update_after_bind_storage_tensors: u32::default(),
19150            shader_storage_tensor_array_non_uniform_indexing_native: Bool32::default(),
19151            shader_tensor_supported_stages: ShaderStageFlags::default(),
19152        }
19153    }
19154}
19155
19156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>
19157#[repr(C)]
19158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19159pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
19160    pub s_type: StructureType,
19161    pub next: *mut c_void,
19162    pub texel_buffer_alignment: Bool32,
19163}
19164
19165impl Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
19166    #[inline]
19167    fn default() -> Self {
19168        Self {
19169            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
19170            next: ptr::null_mut(),
19171            texel_buffer_alignment: Bool32::default(),
19172        }
19173    }
19174}
19175
19176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html>
19177#[repr(C)]
19178#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19179pub struct PhysicalDeviceTexelBufferAlignmentProperties {
19180    pub s_type: StructureType,
19181    pub next: *mut c_void,
19182    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
19183    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
19184    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
19185    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
19186}
19187
19188impl Default for PhysicalDeviceTexelBufferAlignmentProperties {
19189    #[inline]
19190    fn default() -> Self {
19191        Self {
19192            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
19193            next: ptr::null_mut(),
19194            storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
19195            storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
19196            uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
19197            uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
19198        }
19199    }
19200}
19201
19202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html>
19203#[repr(C)]
19204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19205pub struct PhysicalDeviceTextureCompressionASTCHDRFeatures {
19206    pub s_type: StructureType,
19207    pub next: *mut c_void,
19208    pub texture_compression_astc_hdr: Bool32,
19209}
19210
19211impl Default for PhysicalDeviceTextureCompressionASTCHDRFeatures {
19212    #[inline]
19213    fn default() -> Self {
19214        Self {
19215            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
19216            next: ptr::null_mut(),
19217            texture_compression_astc_hdr: Bool32::default(),
19218        }
19219    }
19220}
19221
19222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapFeaturesQCOM.html>
19223#[repr(C)]
19224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19225pub struct PhysicalDeviceTileMemoryHeapFeaturesQCOM {
19226    pub s_type: StructureType,
19227    pub next: *mut c_void,
19228    pub tile_memory_heap: Bool32,
19229}
19230
19231impl Default for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
19232    #[inline]
19233    fn default() -> Self {
19234        Self {
19235            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM,
19236            next: ptr::null_mut(),
19237            tile_memory_heap: Bool32::default(),
19238        }
19239    }
19240}
19241
19242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapPropertiesQCOM.html>
19243#[repr(C)]
19244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19245pub struct PhysicalDeviceTileMemoryHeapPropertiesQCOM {
19246    pub s_type: StructureType,
19247    pub next: *mut c_void,
19248    pub queue_submit_boundary: Bool32,
19249    pub tile_buffer_transfers: Bool32,
19250}
19251
19252impl Default for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
19253    #[inline]
19254    fn default() -> Self {
19255        Self {
19256            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM,
19257            next: ptr::null_mut(),
19258            queue_submit_boundary: Bool32::default(),
19259            tile_buffer_transfers: Bool32::default(),
19260        }
19261    }
19262}
19263
19264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html>
19265#[repr(C)]
19266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19267pub struct PhysicalDeviceTilePropertiesFeaturesQCOM {
19268    pub s_type: StructureType,
19269    pub next: *mut c_void,
19270    pub tile_properties: Bool32,
19271}
19272
19273impl Default for PhysicalDeviceTilePropertiesFeaturesQCOM {
19274    #[inline]
19275    fn default() -> Self {
19276        Self {
19277            s_type: StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM,
19278            next: ptr::null_mut(),
19279            tile_properties: Bool32::default(),
19280        }
19281    }
19282}
19283
19284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingFeaturesQCOM.html>
19285#[repr(C)]
19286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19287pub struct PhysicalDeviceTileShadingFeaturesQCOM {
19288    pub s_type: StructureType,
19289    pub next: *mut c_void,
19290    pub tile_shading: Bool32,
19291    pub tile_shading_fragment_stage: Bool32,
19292    pub tile_shading_color_attachments: Bool32,
19293    pub tile_shading_depth_attachments: Bool32,
19294    pub tile_shading_stencil_attachments: Bool32,
19295    pub tile_shading_input_attachments: Bool32,
19296    pub tile_shading_sampled_attachments: Bool32,
19297    pub tile_shading_per_tile_draw: Bool32,
19298    pub tile_shading_per_tile_dispatch: Bool32,
19299    pub tile_shading_dispatch_tile: Bool32,
19300    pub tile_shading_apron: Bool32,
19301    pub tile_shading_anisotropic_apron: Bool32,
19302    pub tile_shading_atomic_ops: Bool32,
19303    pub tile_shading_image_processing: Bool32,
19304}
19305
19306impl Default for PhysicalDeviceTileShadingFeaturesQCOM {
19307    #[inline]
19308    fn default() -> Self {
19309        Self {
19310            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM,
19311            next: ptr::null_mut(),
19312            tile_shading: Bool32::default(),
19313            tile_shading_fragment_stage: Bool32::default(),
19314            tile_shading_color_attachments: Bool32::default(),
19315            tile_shading_depth_attachments: Bool32::default(),
19316            tile_shading_stencil_attachments: Bool32::default(),
19317            tile_shading_input_attachments: Bool32::default(),
19318            tile_shading_sampled_attachments: Bool32::default(),
19319            tile_shading_per_tile_draw: Bool32::default(),
19320            tile_shading_per_tile_dispatch: Bool32::default(),
19321            tile_shading_dispatch_tile: Bool32::default(),
19322            tile_shading_apron: Bool32::default(),
19323            tile_shading_anisotropic_apron: Bool32::default(),
19324            tile_shading_atomic_ops: Bool32::default(),
19325            tile_shading_image_processing: Bool32::default(),
19326        }
19327    }
19328}
19329
19330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingPropertiesQCOM.html>
19331#[repr(C)]
19332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19333pub struct PhysicalDeviceTileShadingPropertiesQCOM {
19334    pub s_type: StructureType,
19335    pub next: *mut c_void,
19336    pub max_apron_size: u32,
19337    pub prefer_non_coherent: Bool32,
19338    pub tile_granularity: Extent2D,
19339    pub max_tile_shading_rate: Extent2D,
19340}
19341
19342impl Default for PhysicalDeviceTileShadingPropertiesQCOM {
19343    #[inline]
19344    fn default() -> Self {
19345        Self {
19346            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM,
19347            next: ptr::null_mut(),
19348            max_apron_size: u32::default(),
19349            prefer_non_coherent: Bool32::default(),
19350            tile_granularity: Extent2D::default(),
19351            max_tile_shading_rate: Extent2D::default(),
19352        }
19353    }
19354}
19355
19356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>
19357#[repr(C)]
19358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19359pub struct PhysicalDeviceTimelineSemaphoreFeatures {
19360    pub s_type: StructureType,
19361    pub next: *mut c_void,
19362    pub timeline_semaphore: Bool32,
19363}
19364
19365impl Default for PhysicalDeviceTimelineSemaphoreFeatures {
19366    #[inline]
19367    fn default() -> Self {
19368        Self {
19369            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
19370            next: ptr::null_mut(),
19371            timeline_semaphore: Bool32::default(),
19372        }
19373    }
19374}
19375
19376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>
19377#[repr(C)]
19378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19379pub struct PhysicalDeviceTimelineSemaphoreProperties {
19380    pub s_type: StructureType,
19381    pub next: *mut c_void,
19382    pub max_timeline_semaphore_value_difference: u64,
19383}
19384
19385impl Default for PhysicalDeviceTimelineSemaphoreProperties {
19386    #[inline]
19387    fn default() -> Self {
19388        Self {
19389            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
19390            next: ptr::null_mut(),
19391            max_timeline_semaphore_value_difference: u64::default(),
19392        }
19393    }
19394}
19395
19396/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html>
19397#[repr(C)]
19398#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19399pub struct PhysicalDeviceToolProperties {
19400    pub s_type: StructureType,
19401    pub next: *mut c_void,
19402    pub name: StringArray<MAX_EXTENSION_NAME_SIZE>,
19403    pub version: StringArray<MAX_EXTENSION_NAME_SIZE>,
19404    pub purposes: ToolPurposeFlags,
19405    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
19406    pub layer: StringArray<MAX_EXTENSION_NAME_SIZE>,
19407}
19408
19409impl Default for PhysicalDeviceToolProperties {
19410    #[inline]
19411    fn default() -> Self {
19412        Self {
19413            s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES,
19414            next: ptr::null_mut(),
19415            name: StringArray::default(),
19416            version: StringArray::default(),
19417            purposes: ToolPurposeFlags::default(),
19418            description: StringArray::default(),
19419            layer: StringArray::default(),
19420        }
19421    }
19422}
19423
19424/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>
19425#[repr(C)]
19426#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19427pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
19428    pub s_type: StructureType,
19429    pub next: *mut c_void,
19430    pub transform_feedback: Bool32,
19431    pub geometry_streams: Bool32,
19432}
19433
19434impl Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
19435    #[inline]
19436    fn default() -> Self {
19437        Self {
19438            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
19439            next: ptr::null_mut(),
19440            transform_feedback: Bool32::default(),
19441            geometry_streams: Bool32::default(),
19442        }
19443    }
19444}
19445
19446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>
19447#[repr(C)]
19448#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19449pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
19450    pub s_type: StructureType,
19451    pub next: *mut c_void,
19452    pub max_transform_feedback_streams: u32,
19453    pub max_transform_feedback_buffers: u32,
19454    pub max_transform_feedback_buffer_size: DeviceSize,
19455    pub max_transform_feedback_stream_data_size: u32,
19456    pub max_transform_feedback_buffer_data_size: u32,
19457    pub max_transform_feedback_buffer_data_stride: u32,
19458    pub transform_feedback_queries: Bool32,
19459    pub transform_feedback_streams_lines_triangles: Bool32,
19460    pub transform_feedback_rasterization_stream_select: Bool32,
19461    pub transform_feedback_draw: Bool32,
19462}
19463
19464impl Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
19465    #[inline]
19466    fn default() -> Self {
19467        Self {
19468            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
19469            next: ptr::null_mut(),
19470            max_transform_feedback_streams: u32::default(),
19471            max_transform_feedback_buffers: u32::default(),
19472            max_transform_feedback_buffer_size: DeviceSize::default(),
19473            max_transform_feedback_stream_data_size: u32::default(),
19474            max_transform_feedback_buffer_data_size: u32::default(),
19475            max_transform_feedback_buffer_data_stride: u32::default(),
19476            transform_feedback_queries: Bool32::default(),
19477            transform_feedback_streams_lines_triangles: Bool32::default(),
19478            transform_feedback_rasterization_stream_select: Bool32::default(),
19479            transform_feedback_draw: Bool32::default(),
19480        }
19481    }
19482}
19483
19484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR.html>
19485#[repr(C)]
19486#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19487pub struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
19488    pub s_type: StructureType,
19489    pub next: *mut c_void,
19490    pub unified_image_layouts: Bool32,
19491    pub unified_image_layouts_video: Bool32,
19492}
19493
19494impl Default for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
19495    #[inline]
19496    fn default() -> Self {
19497        Self {
19498            s_type: StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR,
19499            next: ptr::null_mut(),
19500            unified_image_layouts: Bool32::default(),
19501            unified_image_layouts_video: Bool32::default(),
19502        }
19503    }
19504}
19505
19506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>
19507#[repr(C)]
19508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19509pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
19510    pub s_type: StructureType,
19511    pub next: *mut c_void,
19512    pub uniform_buffer_standard_layout: Bool32,
19513}
19514
19515impl Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
19516    #[inline]
19517    fn default() -> Self {
19518        Self {
19519            s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
19520            next: ptr::null_mut(),
19521            uniform_buffer_standard_layout: Bool32::default(),
19522        }
19523    }
19524}
19525
19526/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html>
19527#[repr(C)]
19528#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19529pub struct PhysicalDeviceVariablePointersFeatures {
19530    pub s_type: StructureType,
19531    pub next: *mut c_void,
19532    pub variable_pointers_storage_buffer: Bool32,
19533    pub variable_pointers: Bool32,
19534}
19535
19536impl Default for PhysicalDeviceVariablePointersFeatures {
19537    #[inline]
19538    fn default() -> Self {
19539        Self {
19540            s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
19541            next: ptr::null_mut(),
19542            variable_pointers_storage_buffer: Bool32::default(),
19543            variable_pointers: Bool32::default(),
19544        }
19545    }
19546}
19547
19548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html>
19549#[repr(C)]
19550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19551pub struct PhysicalDeviceVertexAttributeDivisorFeatures {
19552    pub s_type: StructureType,
19553    pub next: *mut c_void,
19554    pub vertex_attribute_instance_rate_divisor: Bool32,
19555    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
19556}
19557
19558impl Default for PhysicalDeviceVertexAttributeDivisorFeatures {
19559    #[inline]
19560    fn default() -> Self {
19561        Self {
19562            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,
19563            next: ptr::null_mut(),
19564            vertex_attribute_instance_rate_divisor: Bool32::default(),
19565            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
19566        }
19567    }
19568}
19569
19570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html>
19571#[repr(C)]
19572#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19573pub struct PhysicalDeviceVertexAttributeDivisorProperties {
19574    pub s_type: StructureType,
19575    pub next: *mut c_void,
19576    pub max_vertex_attrib_divisor: u32,
19577    pub supports_non_zero_first_instance: Bool32,
19578}
19579
19580impl Default for PhysicalDeviceVertexAttributeDivisorProperties {
19581    #[inline]
19582    fn default() -> Self {
19583        Self {
19584            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,
19585            next: ptr::null_mut(),
19586            max_vertex_attrib_divisor: u32::default(),
19587            supports_non_zero_first_instance: Bool32::default(),
19588        }
19589    }
19590}
19591
19592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>
19593#[repr(C)]
19594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19595pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
19596    pub s_type: StructureType,
19597    pub next: *mut c_void,
19598    pub max_vertex_attrib_divisor: u32,
19599}
19600
19601impl Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
19602    #[inline]
19603    fn default() -> Self {
19604        Self {
19605            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
19606            next: ptr::null_mut(),
19607            max_vertex_attrib_divisor: u32::default(),
19608        }
19609    }
19610}
19611
19612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html>
19613#[repr(C)]
19614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19615pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
19616    pub s_type: StructureType,
19617    pub next: *mut c_void,
19618    pub vertex_attribute_robustness: Bool32,
19619}
19620
19621impl Default for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
19622    #[inline]
19623    fn default() -> Self {
19624        Self {
19625            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT,
19626            next: ptr::null_mut(),
19627            vertex_attribute_robustness: Bool32::default(),
19628        }
19629    }
19630}
19631
19632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>
19633#[repr(C)]
19634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19635pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
19636    pub s_type: StructureType,
19637    pub next: *mut c_void,
19638    pub vertex_input_dynamic_state: Bool32,
19639}
19640
19641impl Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
19642    #[inline]
19643    fn default() -> Self {
19644        Self {
19645            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
19646            next: ptr::null_mut(),
19647            vertex_input_dynamic_state: Bool32::default(),
19648        }
19649    }
19650}
19651
19652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoDecodeVP9FeaturesKHR.html>
19653#[repr(C)]
19654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19655pub struct PhysicalDeviceVideoDecodeVP9FeaturesKHR {
19656    pub s_type: StructureType,
19657    pub next: *mut c_void,
19658    pub video_decode_vp9: Bool32,
19659}
19660
19661impl Default for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
19662    #[inline]
19663    fn default() -> Self {
19664        Self {
19665            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR,
19666            next: ptr::null_mut(),
19667            video_decode_vp9: Bool32::default(),
19668        }
19669    }
19670}
19671
19672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html>
19673#[repr(C)]
19674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19675pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHR {
19676    pub s_type: StructureType,
19677    pub next: *mut c_void,
19678    pub video_encode_av1: Bool32,
19679}
19680
19681impl Default for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
19682    #[inline]
19683    fn default() -> Self {
19684        Self {
19685            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR,
19686            next: ptr::null_mut(),
19687            video_encode_av1: Bool32::default(),
19688        }
19689    }
19690}
19691
19692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.html>
19693#[repr(C)]
19694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19695pub struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
19696    pub s_type: StructureType,
19697    pub next: *mut c_void,
19698    pub video_encode_intra_refresh: Bool32,
19699}
19700
19701impl Default for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
19702    #[inline]
19703    fn default() -> Self {
19704        Self {
19705            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR,
19706            next: ptr::null_mut(),
19707            video_encode_intra_refresh: Bool32::default(),
19708        }
19709    }
19710}
19711
19712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html>
19713#[repr(C)]
19714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19715pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
19716    pub s_type: StructureType,
19717    pub next: *const c_void,
19718    pub video_profile: *const VideoProfileInfoKHR,
19719    pub quality_level: u32,
19720}
19721
19722impl Default for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
19723    #[inline]
19724    fn default() -> Self {
19725        Self {
19726            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
19727            next: ptr::null(),
19728            video_profile: ptr::null(),
19729            quality_level: u32::default(),
19730        }
19731    }
19732}
19733
19734/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html>
19735#[repr(C)]
19736#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19737pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
19738    pub s_type: StructureType,
19739    pub next: *mut c_void,
19740    pub video_encode_quantization_map: Bool32,
19741}
19742
19743impl Default for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
19744    #[inline]
19745    fn default() -> Self {
19746        Self {
19747            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR,
19748            next: ptr::null_mut(),
19749            video_encode_quantization_map: Bool32::default(),
19750        }
19751    }
19752}
19753
19754/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>
19755#[repr(C)]
19756#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19757pub struct PhysicalDeviceVideoFormatInfoKHR {
19758    pub s_type: StructureType,
19759    pub next: *const c_void,
19760    pub image_usage: ImageUsageFlags,
19761}
19762
19763impl Default for PhysicalDeviceVideoFormatInfoKHR {
19764    #[inline]
19765    fn default() -> Self {
19766        Self {
19767            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
19768            next: ptr::null(),
19769            image_usage: ImageUsageFlags::default(),
19770        }
19771    }
19772}
19773
19774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html>
19775#[repr(C)]
19776#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19777pub struct PhysicalDeviceVideoMaintenance1FeaturesKHR {
19778    pub s_type: StructureType,
19779    pub next: *mut c_void,
19780    pub video_maintenance1: Bool32,
19781}
19782
19783impl Default for PhysicalDeviceVideoMaintenance1FeaturesKHR {
19784    #[inline]
19785    fn default() -> Self {
19786        Self {
19787            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR,
19788            next: ptr::null_mut(),
19789            video_maintenance1: Bool32::default(),
19790        }
19791    }
19792}
19793
19794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html>
19795#[repr(C)]
19796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19797pub struct PhysicalDeviceVideoMaintenance2FeaturesKHR {
19798    pub s_type: StructureType,
19799    pub next: *mut c_void,
19800    pub video_maintenance2: Bool32,
19801}
19802
19803impl Default for PhysicalDeviceVideoMaintenance2FeaturesKHR {
19804    #[inline]
19805    fn default() -> Self {
19806        Self {
19807            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR,
19808            next: ptr::null_mut(),
19809            video_maintenance2: Bool32::default(),
19810        }
19811    }
19812}
19813
19814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html>
19815#[repr(C)]
19816#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19817pub struct PhysicalDeviceVulkan11Features {
19818    pub s_type: StructureType,
19819    pub next: *mut c_void,
19820    pub storage_buffer_16bit_access: Bool32,
19821    pub uniform_and_storage_buffer_16bit_access: Bool32,
19822    pub storage_push_constant16: Bool32,
19823    pub storage_input_output16: Bool32,
19824    pub multiview: Bool32,
19825    pub multiview_geometry_shader: Bool32,
19826    pub multiview_tessellation_shader: Bool32,
19827    pub variable_pointers_storage_buffer: Bool32,
19828    pub variable_pointers: Bool32,
19829    pub protected_memory: Bool32,
19830    pub sampler_ycbcr_conversion: Bool32,
19831    pub shader_draw_parameters: Bool32,
19832}
19833
19834impl Default for PhysicalDeviceVulkan11Features {
19835    #[inline]
19836    fn default() -> Self {
19837        Self {
19838            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
19839            next: ptr::null_mut(),
19840            storage_buffer_16bit_access: Bool32::default(),
19841            uniform_and_storage_buffer_16bit_access: Bool32::default(),
19842            storage_push_constant16: Bool32::default(),
19843            storage_input_output16: Bool32::default(),
19844            multiview: Bool32::default(),
19845            multiview_geometry_shader: Bool32::default(),
19846            multiview_tessellation_shader: Bool32::default(),
19847            variable_pointers_storage_buffer: Bool32::default(),
19848            variable_pointers: Bool32::default(),
19849            protected_memory: Bool32::default(),
19850            sampler_ycbcr_conversion: Bool32::default(),
19851            shader_draw_parameters: Bool32::default(),
19852        }
19853    }
19854}
19855
19856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html>
19857#[repr(C)]
19858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19859pub struct PhysicalDeviceVulkan11Properties {
19860    pub s_type: StructureType,
19861    pub next: *mut c_void,
19862    pub device_uuid: ByteArray<UUID_SIZE>,
19863    pub driver_uuid: ByteArray<UUID_SIZE>,
19864    pub device_luid: ByteArray<LUID_SIZE>,
19865    pub device_node_mask: u32,
19866    pub device_luid_valid: Bool32,
19867    pub subgroup_size: u32,
19868    pub subgroup_supported_stages: ShaderStageFlags,
19869    pub subgroup_supported_operations: SubgroupFeatureFlags,
19870    pub subgroup_quad_operations_in_all_stages: Bool32,
19871    pub point_clipping_behavior: PointClippingBehavior,
19872    pub max_multiview_view_count: u32,
19873    pub max_multiview_instance_index: u32,
19874    pub protected_no_fault: Bool32,
19875    pub max_per_set_descriptors: u32,
19876    pub max_memory_allocation_size: DeviceSize,
19877}
19878
19879impl Default for PhysicalDeviceVulkan11Properties {
19880    #[inline]
19881    fn default() -> Self {
19882        Self {
19883            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
19884            next: ptr::null_mut(),
19885            device_uuid: ByteArray::default(),
19886            driver_uuid: ByteArray::default(),
19887            device_luid: ByteArray::default(),
19888            device_node_mask: u32::default(),
19889            device_luid_valid: Bool32::default(),
19890            subgroup_size: u32::default(),
19891            subgroup_supported_stages: ShaderStageFlags::default(),
19892            subgroup_supported_operations: SubgroupFeatureFlags::default(),
19893            subgroup_quad_operations_in_all_stages: Bool32::default(),
19894            point_clipping_behavior: PointClippingBehavior::default(),
19895            max_multiview_view_count: u32::default(),
19896            max_multiview_instance_index: u32::default(),
19897            protected_no_fault: Bool32::default(),
19898            max_per_set_descriptors: u32::default(),
19899            max_memory_allocation_size: DeviceSize::default(),
19900        }
19901    }
19902}
19903
19904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html>
19905#[repr(C)]
19906#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19907pub struct PhysicalDeviceVulkan12Features {
19908    pub s_type: StructureType,
19909    pub next: *mut c_void,
19910    pub sampler_mirror_clamp_to_edge: Bool32,
19911    pub draw_indirect_count: Bool32,
19912    pub storage_buffer_8bit_access: Bool32,
19913    pub uniform_and_storage_buffer_8bit_access: Bool32,
19914    pub storage_push_constant8: Bool32,
19915    pub shader_buffer_int64_atomics: Bool32,
19916    pub shader_shared_int64_atomics: Bool32,
19917    pub shader_float16: Bool32,
19918    pub shader_int8: Bool32,
19919    pub descriptor_indexing: Bool32,
19920    pub shader_input_attachment_array_dynamic_indexing: Bool32,
19921    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
19922    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
19923    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
19924    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
19925    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
19926    pub shader_storage_image_array_non_uniform_indexing: Bool32,
19927    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
19928    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
19929    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
19930    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
19931    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
19932    pub descriptor_binding_storage_image_update_after_bind: Bool32,
19933    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
19934    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
19935    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
19936    pub descriptor_binding_update_unused_while_pending: Bool32,
19937    pub descriptor_binding_partially_bound: Bool32,
19938    pub descriptor_binding_variable_descriptor_count: Bool32,
19939    pub runtime_descriptor_array: Bool32,
19940    pub sampler_filter_minmax: Bool32,
19941    pub scalar_block_layout: Bool32,
19942    pub imageless_framebuffer: Bool32,
19943    pub uniform_buffer_standard_layout: Bool32,
19944    pub shader_subgroup_extended_types: Bool32,
19945    pub separate_depth_stencil_layouts: Bool32,
19946    pub host_query_reset: Bool32,
19947    pub timeline_semaphore: Bool32,
19948    pub buffer_device_address: Bool32,
19949    pub buffer_device_address_capture_replay: Bool32,
19950    pub buffer_device_address_multi_device: Bool32,
19951    pub vulkan_memory_model: Bool32,
19952    pub vulkan_memory_model_device_scope: Bool32,
19953    pub vulkan_memory_model_availability_visibility_chains: Bool32,
19954    pub shader_output_viewport_index: Bool32,
19955    pub shader_output_layer: Bool32,
19956    pub subgroup_broadcast_dynamic_id: Bool32,
19957}
19958
19959impl Default for PhysicalDeviceVulkan12Features {
19960    #[inline]
19961    fn default() -> Self {
19962        Self {
19963            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
19964            next: ptr::null_mut(),
19965            sampler_mirror_clamp_to_edge: Bool32::default(),
19966            draw_indirect_count: Bool32::default(),
19967            storage_buffer_8bit_access: Bool32::default(),
19968            uniform_and_storage_buffer_8bit_access: Bool32::default(),
19969            storage_push_constant8: Bool32::default(),
19970            shader_buffer_int64_atomics: Bool32::default(),
19971            shader_shared_int64_atomics: Bool32::default(),
19972            shader_float16: Bool32::default(),
19973            shader_int8: Bool32::default(),
19974            descriptor_indexing: Bool32::default(),
19975            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
19976            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
19977            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
19978            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
19979            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
19980            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
19981            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
19982            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
19983            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
19984            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
19985            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
19986            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
19987            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
19988            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
19989            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
19990            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
19991            descriptor_binding_update_unused_while_pending: Bool32::default(),
19992            descriptor_binding_partially_bound: Bool32::default(),
19993            descriptor_binding_variable_descriptor_count: Bool32::default(),
19994            runtime_descriptor_array: Bool32::default(),
19995            sampler_filter_minmax: Bool32::default(),
19996            scalar_block_layout: Bool32::default(),
19997            imageless_framebuffer: Bool32::default(),
19998            uniform_buffer_standard_layout: Bool32::default(),
19999            shader_subgroup_extended_types: Bool32::default(),
20000            separate_depth_stencil_layouts: Bool32::default(),
20001            host_query_reset: Bool32::default(),
20002            timeline_semaphore: Bool32::default(),
20003            buffer_device_address: Bool32::default(),
20004            buffer_device_address_capture_replay: Bool32::default(),
20005            buffer_device_address_multi_device: Bool32::default(),
20006            vulkan_memory_model: Bool32::default(),
20007            vulkan_memory_model_device_scope: Bool32::default(),
20008            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
20009            shader_output_viewport_index: Bool32::default(),
20010            shader_output_layer: Bool32::default(),
20011            subgroup_broadcast_dynamic_id: Bool32::default(),
20012        }
20013    }
20014}
20015
20016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html>
20017#[repr(C)]
20018#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20019pub struct PhysicalDeviceVulkan12Properties {
20020    pub s_type: StructureType,
20021    pub next: *mut c_void,
20022    pub driver_id: DriverId,
20023    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
20024    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
20025    pub conformance_version: ConformanceVersion,
20026    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
20027    pub rounding_mode_independence: ShaderFloatControlsIndependence,
20028    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
20029    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
20030    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
20031    pub shader_denorm_preserve_float16: Bool32,
20032    pub shader_denorm_preserve_float32: Bool32,
20033    pub shader_denorm_preserve_float64: Bool32,
20034    pub shader_denorm_flush_to_zero_float16: Bool32,
20035    pub shader_denorm_flush_to_zero_float32: Bool32,
20036    pub shader_denorm_flush_to_zero_float64: Bool32,
20037    pub shader_rounding_mode_rte_float16: Bool32,
20038    pub shader_rounding_mode_rte_float32: Bool32,
20039    pub shader_rounding_mode_rte_float64: Bool32,
20040    pub shader_rounding_mode_rtz_float16: Bool32,
20041    pub shader_rounding_mode_rtz_float32: Bool32,
20042    pub shader_rounding_mode_rtz_float64: Bool32,
20043    pub max_update_after_bind_descriptors_in_all_pools: u32,
20044    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
20045    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
20046    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
20047    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
20048    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
20049    pub robust_buffer_access_update_after_bind: Bool32,
20050    pub quad_divergent_implicit_lod: Bool32,
20051    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
20052    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
20053    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
20054    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
20055    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
20056    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
20057    pub max_per_stage_update_after_bind_resources: u32,
20058    pub max_descriptor_set_update_after_bind_samplers: u32,
20059    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
20060    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
20061    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
20062    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
20063    pub max_descriptor_set_update_after_bind_sampled_images: u32,
20064    pub max_descriptor_set_update_after_bind_storage_images: u32,
20065    pub max_descriptor_set_update_after_bind_input_attachments: u32,
20066    pub supported_depth_resolve_modes: ResolveModeFlags,
20067    pub supported_stencil_resolve_modes: ResolveModeFlags,
20068    pub independent_resolve_none: Bool32,
20069    pub independent_resolve: Bool32,
20070    pub filter_minmax_single_component_formats: Bool32,
20071    pub filter_minmax_image_component_mapping: Bool32,
20072    pub max_timeline_semaphore_value_difference: u64,
20073    pub framebuffer_integer_color_sample_counts: SampleCountFlags,
20074}
20075
20076impl Default for PhysicalDeviceVulkan12Properties {
20077    #[inline]
20078    fn default() -> Self {
20079        Self {
20080            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
20081            next: ptr::null_mut(),
20082            driver_id: DriverId::default(),
20083            driver_name: StringArray::default(),
20084            driver_info: StringArray::default(),
20085            conformance_version: ConformanceVersion::default(),
20086            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
20087            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
20088            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
20089            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
20090            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
20091            shader_denorm_preserve_float16: Bool32::default(),
20092            shader_denorm_preserve_float32: Bool32::default(),
20093            shader_denorm_preserve_float64: Bool32::default(),
20094            shader_denorm_flush_to_zero_float16: Bool32::default(),
20095            shader_denorm_flush_to_zero_float32: Bool32::default(),
20096            shader_denorm_flush_to_zero_float64: Bool32::default(),
20097            shader_rounding_mode_rte_float16: Bool32::default(),
20098            shader_rounding_mode_rte_float32: Bool32::default(),
20099            shader_rounding_mode_rte_float64: Bool32::default(),
20100            shader_rounding_mode_rtz_float16: Bool32::default(),
20101            shader_rounding_mode_rtz_float32: Bool32::default(),
20102            shader_rounding_mode_rtz_float64: Bool32::default(),
20103            max_update_after_bind_descriptors_in_all_pools: u32::default(),
20104            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
20105            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
20106            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
20107            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
20108            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
20109            robust_buffer_access_update_after_bind: Bool32::default(),
20110            quad_divergent_implicit_lod: Bool32::default(),
20111            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
20112            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
20113            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
20114            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
20115            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
20116            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
20117            max_per_stage_update_after_bind_resources: u32::default(),
20118            max_descriptor_set_update_after_bind_samplers: u32::default(),
20119            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
20120            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
20121            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
20122            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
20123            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
20124            max_descriptor_set_update_after_bind_storage_images: u32::default(),
20125            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
20126            supported_depth_resolve_modes: ResolveModeFlags::default(),
20127            supported_stencil_resolve_modes: ResolveModeFlags::default(),
20128            independent_resolve_none: Bool32::default(),
20129            independent_resolve: Bool32::default(),
20130            filter_minmax_single_component_formats: Bool32::default(),
20131            filter_minmax_image_component_mapping: Bool32::default(),
20132            max_timeline_semaphore_value_difference: u64::default(),
20133            framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
20134        }
20135    }
20136}
20137
20138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html>
20139#[repr(C)]
20140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20141pub struct PhysicalDeviceVulkan13Features {
20142    pub s_type: StructureType,
20143    pub next: *mut c_void,
20144    pub robust_image_access: Bool32,
20145    pub inline_uniform_block: Bool32,
20146    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
20147    pub pipeline_creation_cache_control: Bool32,
20148    pub private_data: Bool32,
20149    pub shader_demote_to_helper_invocation: Bool32,
20150    pub shader_terminate_invocation: Bool32,
20151    pub subgroup_size_control: Bool32,
20152    pub compute_full_subgroups: Bool32,
20153    pub synchronization2: Bool32,
20154    pub texture_compression_astc_hdr: Bool32,
20155    pub shader_zero_initialize_workgroup_memory: Bool32,
20156    pub dynamic_rendering: Bool32,
20157    pub shader_integer_dot_product: Bool32,
20158    pub maintenance4: Bool32,
20159}
20160
20161impl Default for PhysicalDeviceVulkan13Features {
20162    #[inline]
20163    fn default() -> Self {
20164        Self {
20165            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
20166            next: ptr::null_mut(),
20167            robust_image_access: Bool32::default(),
20168            inline_uniform_block: Bool32::default(),
20169            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
20170            pipeline_creation_cache_control: Bool32::default(),
20171            private_data: Bool32::default(),
20172            shader_demote_to_helper_invocation: Bool32::default(),
20173            shader_terminate_invocation: Bool32::default(),
20174            subgroup_size_control: Bool32::default(),
20175            compute_full_subgroups: Bool32::default(),
20176            synchronization2: Bool32::default(),
20177            texture_compression_astc_hdr: Bool32::default(),
20178            shader_zero_initialize_workgroup_memory: Bool32::default(),
20179            dynamic_rendering: Bool32::default(),
20180            shader_integer_dot_product: Bool32::default(),
20181            maintenance4: Bool32::default(),
20182        }
20183    }
20184}
20185
20186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html>
20187#[repr(C)]
20188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20189pub struct PhysicalDeviceVulkan13Properties {
20190    pub s_type: StructureType,
20191    pub next: *mut c_void,
20192    pub min_subgroup_size: u32,
20193    pub max_subgroup_size: u32,
20194    pub max_compute_workgroup_subgroups: u32,
20195    pub required_subgroup_size_stages: ShaderStageFlags,
20196    pub max_inline_uniform_block_size: u32,
20197    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
20198    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
20199    pub max_descriptor_set_inline_uniform_blocks: u32,
20200    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
20201    pub max_inline_uniform_total_size: u32,
20202    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
20203    pub integer_dot_product_8bit_signed_accelerated: Bool32,
20204    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
20205    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
20206    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
20207    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
20208    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
20209    pub integer_dot_product_16bit_signed_accelerated: Bool32,
20210    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
20211    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
20212    pub integer_dot_product_32bit_signed_accelerated: Bool32,
20213    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
20214    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
20215    pub integer_dot_product_64bit_signed_accelerated: Bool32,
20216    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
20217    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
20218    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
20219    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
20220    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
20221    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
20222    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
20223        Bool32,
20224    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
20225    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
20226    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
20227    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
20228    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
20229    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
20230    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
20231    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
20232    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
20233    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
20234    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
20235    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
20236    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
20237    pub max_buffer_size: DeviceSize,
20238}
20239
20240impl Default for PhysicalDeviceVulkan13Properties {
20241    #[inline]
20242    fn default() -> Self {
20243        Self { s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES, next: ptr::null_mut(), min_subgroup_size: u32::default(), max_subgroup_size: u32::default(), max_compute_workgroup_subgroups: u32::default(), required_subgroup_size_stages: ShaderStageFlags::default(), max_inline_uniform_block_size: u32::default(), max_per_stage_descriptor_inline_uniform_blocks: u32::default(), max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(), max_descriptor_set_inline_uniform_blocks: u32::default(), max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(), max_inline_uniform_total_size: u32::default(), integer_dot_product_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_8bit_signed_accelerated: Bool32::default(), integer_dot_product_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_16bit_signed_accelerated: Bool32::default(), integer_dot_product_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_32bit_signed_accelerated: Bool32::default(), integer_dot_product_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_64bit_signed_accelerated: Bool32::default(), integer_dot_product_64bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32::default(), integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32::default(), storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(), storage_texel_buffer_offset_single_texel_alignment: Bool32::default(), uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(), uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(), max_buffer_size: DeviceSize::default() }
20244    }
20245}
20246
20247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html>
20248#[repr(C)]
20249#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20250pub struct PhysicalDeviceVulkan14Features {
20251    pub s_type: StructureType,
20252    pub next: *mut c_void,
20253    pub global_priority_query: Bool32,
20254    pub shader_subgroup_rotate: Bool32,
20255    pub shader_subgroup_rotate_clustered: Bool32,
20256    pub shader_float_controls2: Bool32,
20257    pub shader_expect_assume: Bool32,
20258    pub rectangular_lines: Bool32,
20259    pub bresenham_lines: Bool32,
20260    pub smooth_lines: Bool32,
20261    pub stippled_rectangular_lines: Bool32,
20262    pub stippled_bresenham_lines: Bool32,
20263    pub stippled_smooth_lines: Bool32,
20264    pub vertex_attribute_instance_rate_divisor: Bool32,
20265    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
20266    pub index_type_uint8: Bool32,
20267    pub dynamic_rendering_local_read: Bool32,
20268    pub maintenance5: Bool32,
20269    pub maintenance6: Bool32,
20270    pub pipeline_protected_access: Bool32,
20271    pub pipeline_robustness: Bool32,
20272    pub host_image_copy: Bool32,
20273    pub push_descriptor: Bool32,
20274}
20275
20276impl Default for PhysicalDeviceVulkan14Features {
20277    #[inline]
20278    fn default() -> Self {
20279        Self {
20280            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES,
20281            next: ptr::null_mut(),
20282            global_priority_query: Bool32::default(),
20283            shader_subgroup_rotate: Bool32::default(),
20284            shader_subgroup_rotate_clustered: Bool32::default(),
20285            shader_float_controls2: Bool32::default(),
20286            shader_expect_assume: Bool32::default(),
20287            rectangular_lines: Bool32::default(),
20288            bresenham_lines: Bool32::default(),
20289            smooth_lines: Bool32::default(),
20290            stippled_rectangular_lines: Bool32::default(),
20291            stippled_bresenham_lines: Bool32::default(),
20292            stippled_smooth_lines: Bool32::default(),
20293            vertex_attribute_instance_rate_divisor: Bool32::default(),
20294            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
20295            index_type_uint8: Bool32::default(),
20296            dynamic_rendering_local_read: Bool32::default(),
20297            maintenance5: Bool32::default(),
20298            maintenance6: Bool32::default(),
20299            pipeline_protected_access: Bool32::default(),
20300            pipeline_robustness: Bool32::default(),
20301            host_image_copy: Bool32::default(),
20302            push_descriptor: Bool32::default(),
20303        }
20304    }
20305}
20306
20307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html>
20308#[repr(C)]
20309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20310pub struct PhysicalDeviceVulkan14Properties {
20311    pub s_type: StructureType,
20312    pub next: *mut c_void,
20313    pub line_sub_pixel_precision_bits: u32,
20314    pub max_vertex_attrib_divisor: u32,
20315    pub supports_non_zero_first_instance: Bool32,
20316    pub max_push_descriptors: u32,
20317    pub dynamic_rendering_local_read_depth_stencil_attachments: Bool32,
20318    pub dynamic_rendering_local_read_multisampled_attachments: Bool32,
20319    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
20320    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
20321    pub depth_stencil_swizzle_one_support: Bool32,
20322    pub polygon_mode_point_size: Bool32,
20323    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
20324    pub non_strict_wide_lines_use_parallelogram: Bool32,
20325    pub block_texel_view_compatible_multiple_layers: Bool32,
20326    pub max_combined_image_sampler_descriptor_count: u32,
20327    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
20328    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
20329    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
20330    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
20331    pub default_robustness_images: PipelineRobustnessImageBehavior,
20332    pub copy_src_layout_count: u32,
20333    pub copy_src_layouts: *mut ImageLayout,
20334    pub copy_dst_layout_count: u32,
20335    pub copy_dst_layouts: *mut ImageLayout,
20336    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
20337    pub identical_memory_type_requirements: Bool32,
20338}
20339
20340impl Default for PhysicalDeviceVulkan14Properties {
20341    #[inline]
20342    fn default() -> Self {
20343        Self {
20344            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES,
20345            next: ptr::null_mut(),
20346            line_sub_pixel_precision_bits: u32::default(),
20347            max_vertex_attrib_divisor: u32::default(),
20348            supports_non_zero_first_instance: Bool32::default(),
20349            max_push_descriptors: u32::default(),
20350            dynamic_rendering_local_read_depth_stencil_attachments: Bool32::default(),
20351            dynamic_rendering_local_read_multisampled_attachments: Bool32::default(),
20352            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
20353            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
20354            depth_stencil_swizzle_one_support: Bool32::default(),
20355            polygon_mode_point_size: Bool32::default(),
20356            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
20357            non_strict_wide_lines_use_parallelogram: Bool32::default(),
20358            block_texel_view_compatible_multiple_layers: Bool32::default(),
20359            max_combined_image_sampler_descriptor_count: u32::default(),
20360            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
20361            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
20362            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
20363            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
20364            default_robustness_images: PipelineRobustnessImageBehavior::default(),
20365            copy_src_layout_count: u32::default(),
20366            copy_src_layouts: ptr::null_mut(),
20367            copy_dst_layout_count: u32::default(),
20368            copy_dst_layouts: ptr::null_mut(),
20369            optimal_tiling_layout_uuid: ByteArray::default(),
20370            identical_memory_type_requirements: Bool32::default(),
20371        }
20372    }
20373}
20374
20375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>
20376#[repr(C)]
20377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20378pub struct PhysicalDeviceVulkanMemoryModelFeatures {
20379    pub s_type: StructureType,
20380    pub next: *mut c_void,
20381    pub vulkan_memory_model: Bool32,
20382    pub vulkan_memory_model_device_scope: Bool32,
20383    pub vulkan_memory_model_availability_visibility_chains: Bool32,
20384}
20385
20386impl Default for PhysicalDeviceVulkanMemoryModelFeatures {
20387    #[inline]
20388    fn default() -> Self {
20389        Self {
20390            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
20391            next: ptr::null_mut(),
20392            vulkan_memory_model: Bool32::default(),
20393            vulkan_memory_model_device_scope: Bool32::default(),
20394            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
20395        }
20396    }
20397}
20398
20399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>
20400#[repr(C)]
20401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20402pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
20403    pub s_type: StructureType,
20404    pub next: *mut c_void,
20405    pub workgroup_memory_explicit_layout: Bool32,
20406    pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
20407    pub workgroup_memory_explicit_layout_8bit_access: Bool32,
20408    pub workgroup_memory_explicit_layout_16bit_access: Bool32,
20409}
20410
20411impl Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
20412    #[inline]
20413    fn default() -> Self {
20414        Self {
20415            s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
20416            next: ptr::null_mut(),
20417            workgroup_memory_explicit_layout: Bool32::default(),
20418            workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
20419            workgroup_memory_explicit_layout_8bit_access: Bool32::default(),
20420            workgroup_memory_explicit_layout_16bit_access: Bool32::default(),
20421        }
20422    }
20423}
20424
20425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>
20426#[repr(C)]
20427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20428pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
20429    pub s_type: StructureType,
20430    pub next: *mut c_void,
20431    pub ycbcr2plane444_formats: Bool32,
20432}
20433
20434impl Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
20435    #[inline]
20436    fn default() -> Self {
20437        Self {
20438            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
20439            next: ptr::null_mut(),
20440            ycbcr2plane444_formats: Bool32::default(),
20441        }
20442    }
20443}
20444
20445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html>
20446#[repr(C)]
20447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20448pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOM {
20449    pub s_type: StructureType,
20450    pub next: *mut c_void,
20451    pub ycbcr_degamma: Bool32,
20452}
20453
20454impl Default for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
20455    #[inline]
20456    fn default() -> Self {
20457        Self {
20458            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM,
20459            next: ptr::null_mut(),
20460            ycbcr_degamma: Bool32::default(),
20461        }
20462    }
20463}
20464
20465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>
20466#[repr(C)]
20467#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20468pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
20469    pub s_type: StructureType,
20470    pub next: *mut c_void,
20471    pub ycbcr_image_arrays: Bool32,
20472}
20473
20474impl Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
20475    #[inline]
20476    fn default() -> Self {
20477        Self {
20478            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
20479            next: ptr::null_mut(),
20480            ycbcr_image_arrays: Bool32::default(),
20481        }
20482    }
20483}
20484
20485/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.html>
20486#[repr(C)]
20487#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20488pub struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
20489    pub s_type: StructureType,
20490    pub next: *mut c_void,
20491    pub zero_initialize_device_memory: Bool32,
20492}
20493
20494impl Default for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
20495    #[inline]
20496    fn default() -> Self {
20497        Self {
20498            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT,
20499            next: ptr::null_mut(),
20500            zero_initialize_device_memory: Bool32::default(),
20501        }
20502    }
20503}
20504
20505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html>
20506#[repr(C)]
20507#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20508pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
20509    pub s_type: StructureType,
20510    pub next: *mut c_void,
20511    pub shader_zero_initialize_workgroup_memory: Bool32,
20512}
20513
20514impl Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
20515    #[inline]
20516    fn default() -> Self {
20517        Self {
20518            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
20519            next: ptr::null_mut(),
20520            shader_zero_initialize_workgroup_memory: Bool32::default(),
20521        }
20522    }
20523}
20524
20525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html>
20526#[repr(C)]
20527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20528pub struct PipelineBinaryCreateInfoKHR {
20529    pub s_type: StructureType,
20530    pub next: *const c_void,
20531    pub keys_and_data_info: *const PipelineBinaryKeysAndDataKHR,
20532    pub pipeline: Pipeline,
20533    pub pipeline_create_info: *const PipelineCreateInfoKHR,
20534}
20535
20536impl Default for PipelineBinaryCreateInfoKHR {
20537    #[inline]
20538    fn default() -> Self {
20539        Self {
20540            s_type: StructureType::PIPELINE_BINARY_CREATE_INFO_KHR,
20541            next: ptr::null(),
20542            keys_and_data_info: ptr::null(),
20543            pipeline: Pipeline::default(),
20544            pipeline_create_info: ptr::null(),
20545        }
20546    }
20547}
20548
20549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html>
20550#[repr(C)]
20551#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20552pub struct PipelineBinaryDataInfoKHR {
20553    pub s_type: StructureType,
20554    pub next: *mut c_void,
20555    pub pipeline_binary: PipelineBinaryKHR,
20556}
20557
20558impl Default for PipelineBinaryDataInfoKHR {
20559    #[inline]
20560    fn default() -> Self {
20561        Self {
20562            s_type: StructureType::PIPELINE_BINARY_DATA_INFO_KHR,
20563            next: ptr::null_mut(),
20564            pipeline_binary: PipelineBinaryKHR::default(),
20565        }
20566    }
20567}
20568
20569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html>
20570#[repr(C)]
20571#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20572pub struct PipelineBinaryDataKHR {
20573    pub data_size: usize,
20574    pub data: *mut c_void,
20575}
20576
20577impl Default for PipelineBinaryDataKHR {
20578    #[inline]
20579    fn default() -> Self {
20580        Self {
20581            data_size: usize::default(),
20582            data: ptr::null_mut(),
20583        }
20584    }
20585}
20586
20587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html>
20588#[repr(C)]
20589#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20590pub struct PipelineBinaryHandlesInfoKHR {
20591    pub s_type: StructureType,
20592    pub next: *const c_void,
20593    pub pipeline_binary_count: u32,
20594    pub pipeline_binaries: *mut PipelineBinaryKHR,
20595}
20596
20597impl Default for PipelineBinaryHandlesInfoKHR {
20598    #[inline]
20599    fn default() -> Self {
20600        Self {
20601            s_type: StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR,
20602            next: ptr::null(),
20603            pipeline_binary_count: u32::default(),
20604            pipeline_binaries: ptr::null_mut(),
20605        }
20606    }
20607}
20608
20609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html>
20610#[repr(C)]
20611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20612pub struct PipelineBinaryInfoKHR {
20613    pub s_type: StructureType,
20614    pub next: *const c_void,
20615    pub binary_count: u32,
20616    pub pipeline_binaries: *const PipelineBinaryKHR,
20617}
20618
20619impl Default for PipelineBinaryInfoKHR {
20620    #[inline]
20621    fn default() -> Self {
20622        Self {
20623            s_type: StructureType::PIPELINE_BINARY_INFO_KHR,
20624            next: ptr::null(),
20625            binary_count: u32::default(),
20626            pipeline_binaries: ptr::null(),
20627        }
20628    }
20629}
20630
20631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html>
20632#[repr(C)]
20633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20634pub struct PipelineBinaryKeyKHR {
20635    pub s_type: StructureType,
20636    pub next: *mut c_void,
20637    pub key_size: u32,
20638    pub key: ByteArray<MAX_PIPELINE_BINARY_KEY_SIZE_KHR>,
20639}
20640
20641impl Default for PipelineBinaryKeyKHR {
20642    #[inline]
20643    fn default() -> Self {
20644        Self {
20645            s_type: StructureType::PIPELINE_BINARY_KEY_KHR,
20646            next: ptr::null_mut(),
20647            key_size: u32::default(),
20648            key: ByteArray::default(),
20649        }
20650    }
20651}
20652
20653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html>
20654#[repr(C)]
20655#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20656pub struct PipelineBinaryKeysAndDataKHR {
20657    pub binary_count: u32,
20658    pub pipeline_binary_keys: *const PipelineBinaryKeyKHR,
20659    pub pipeline_binary_data: *const PipelineBinaryDataKHR,
20660}
20661
20662impl Default for PipelineBinaryKeysAndDataKHR {
20663    #[inline]
20664    fn default() -> Self {
20665        Self {
20666            binary_count: u32::default(),
20667            pipeline_binary_keys: ptr::null(),
20668            pipeline_binary_data: ptr::null(),
20669        }
20670    }
20671}
20672
20673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html>
20674#[repr(C)]
20675#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20676pub struct PipelineCacheCreateInfo {
20677    pub s_type: StructureType,
20678    pub next: *const c_void,
20679    pub flags: PipelineCacheCreateFlags,
20680    pub initial_data_size: usize,
20681    pub initial_data: *const c_void,
20682}
20683
20684impl Default for PipelineCacheCreateInfo {
20685    #[inline]
20686    fn default() -> Self {
20687        Self {
20688            s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
20689            next: ptr::null(),
20690            flags: PipelineCacheCreateFlags::default(),
20691            initial_data_size: usize::default(),
20692            initial_data: ptr::null(),
20693        }
20694    }
20695}
20696
20697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html>
20698#[repr(C)]
20699#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
20700pub struct PipelineCacheHeaderVersionOne {
20701    pub header_size: u32,
20702    pub header_version: PipelineCacheHeaderVersion,
20703    pub vendor_id: u32,
20704    pub device_id: u32,
20705    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
20706}
20707
20708/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>
20709#[repr(C)]
20710#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20711pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
20712    pub s_type: StructureType,
20713    pub next: *const c_void,
20714    pub src_premultiplied: Bool32,
20715    pub dst_premultiplied: Bool32,
20716    pub blend_overlap: BlendOverlapEXT,
20717}
20718
20719impl Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
20720    #[inline]
20721    fn default() -> Self {
20722        Self {
20723            s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
20724            next: ptr::null(),
20725            src_premultiplied: Bool32::default(),
20726            dst_premultiplied: Bool32::default(),
20727            blend_overlap: BlendOverlapEXT::default(),
20728        }
20729    }
20730}
20731
20732/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html>
20733#[repr(C)]
20734#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
20735pub struct PipelineColorBlendAttachmentState {
20736    pub blend_enable: Bool32,
20737    pub src_color_blend_factor: BlendFactor,
20738    pub dst_color_blend_factor: BlendFactor,
20739    pub color_blend_op: BlendOp,
20740    pub src_alpha_blend_factor: BlendFactor,
20741    pub dst_alpha_blend_factor: BlendFactor,
20742    pub alpha_blend_op: BlendOp,
20743    pub color_write_mask: ColorComponentFlags,
20744}
20745
20746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html>
20747#[repr(C)]
20748#[derive(Copy, Clone, Debug, PartialEq)]
20749pub struct PipelineColorBlendStateCreateInfo {
20750    pub s_type: StructureType,
20751    pub next: *const c_void,
20752    pub flags: PipelineColorBlendStateCreateFlags,
20753    pub logic_op_enable: Bool32,
20754    pub logic_op: LogicOp,
20755    pub attachment_count: u32,
20756    pub attachments: *const PipelineColorBlendAttachmentState,
20757    pub blend_constants: [f32; 4],
20758}
20759
20760impl Default for PipelineColorBlendStateCreateInfo {
20761    #[inline]
20762    fn default() -> Self {
20763        Self {
20764            s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
20765            next: ptr::null(),
20766            flags: PipelineColorBlendStateCreateFlags::default(),
20767            logic_op_enable: Bool32::default(),
20768            logic_op: LogicOp::default(),
20769            attachment_count: u32::default(),
20770            attachments: ptr::null(),
20771            blend_constants: [f32::default(); 4],
20772        }
20773    }
20774}
20775
20776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html>
20777#[repr(C)]
20778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20779pub struct PipelineColorWriteCreateInfoEXT {
20780    pub s_type: StructureType,
20781    pub next: *const c_void,
20782    pub attachment_count: u32,
20783    pub color_write_enables: *const Bool32,
20784}
20785
20786impl Default for PipelineColorWriteCreateInfoEXT {
20787    #[inline]
20788    fn default() -> Self {
20789        Self {
20790            s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
20791            next: ptr::null(),
20792            attachment_count: u32::default(),
20793            color_write_enables: ptr::null(),
20794        }
20795    }
20796}
20797
20798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html>
20799#[repr(C)]
20800#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20801pub struct PipelineCompilerControlCreateInfoAMD {
20802    pub s_type: StructureType,
20803    pub next: *const c_void,
20804    pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
20805}
20806
20807impl Default for PipelineCompilerControlCreateInfoAMD {
20808    #[inline]
20809    fn default() -> Self {
20810        Self {
20811            s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
20812            next: ptr::null(),
20813            compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
20814        }
20815    }
20816}
20817
20818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>
20819#[repr(C)]
20820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20821pub struct PipelineCoverageModulationStateCreateInfoNV {
20822    pub s_type: StructureType,
20823    pub next: *const c_void,
20824    pub flags: PipelineCoverageModulationStateCreateFlagsNV,
20825    pub coverage_modulation_mode: CoverageModulationModeNV,
20826    pub coverage_modulation_table_enable: Bool32,
20827    pub coverage_modulation_table_count: u32,
20828    pub coverage_modulation_table: *const f32,
20829}
20830
20831impl Default for PipelineCoverageModulationStateCreateInfoNV {
20832    #[inline]
20833    fn default() -> Self {
20834        Self {
20835            s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
20836            next: ptr::null(),
20837            flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
20838            coverage_modulation_mode: CoverageModulationModeNV::default(),
20839            coverage_modulation_table_enable: Bool32::default(),
20840            coverage_modulation_table_count: u32::default(),
20841            coverage_modulation_table: ptr::null(),
20842        }
20843    }
20844}
20845
20846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>
20847#[repr(C)]
20848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20849pub struct PipelineCoverageReductionStateCreateInfoNV {
20850    pub s_type: StructureType,
20851    pub next: *const c_void,
20852    pub flags: PipelineCoverageReductionStateCreateFlagsNV,
20853    pub coverage_reduction_mode: CoverageReductionModeNV,
20854}
20855
20856impl Default for PipelineCoverageReductionStateCreateInfoNV {
20857    #[inline]
20858    fn default() -> Self {
20859        Self {
20860            s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
20861            next: ptr::null(),
20862            flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
20863            coverage_reduction_mode: CoverageReductionModeNV::default(),
20864        }
20865    }
20866}
20867
20868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>
20869#[repr(C)]
20870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20871pub struct PipelineCoverageToColorStateCreateInfoNV {
20872    pub s_type: StructureType,
20873    pub next: *const c_void,
20874    pub flags: PipelineCoverageToColorStateCreateFlagsNV,
20875    pub coverage_to_color_enable: Bool32,
20876    pub coverage_to_color_location: u32,
20877}
20878
20879impl Default for PipelineCoverageToColorStateCreateInfoNV {
20880    #[inline]
20881    fn default() -> Self {
20882        Self {
20883            s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
20884            next: ptr::null(),
20885            flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
20886            coverage_to_color_enable: Bool32::default(),
20887            coverage_to_color_location: u32::default(),
20888        }
20889    }
20890}
20891
20892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html>
20893#[repr(C)]
20894#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20895pub struct PipelineCreateFlags2CreateInfo {
20896    pub s_type: StructureType,
20897    pub next: *const c_void,
20898    pub flags: PipelineCreateFlags2,
20899}
20900
20901impl Default for PipelineCreateFlags2CreateInfo {
20902    #[inline]
20903    fn default() -> Self {
20904        Self {
20905            s_type: StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO,
20906            next: ptr::null(),
20907            flags: PipelineCreateFlags2::default(),
20908        }
20909    }
20910}
20911
20912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html>
20913#[repr(C)]
20914#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20915pub struct PipelineCreateInfoKHR {
20916    pub s_type: StructureType,
20917    pub next: *mut c_void,
20918}
20919
20920impl Default for PipelineCreateInfoKHR {
20921    #[inline]
20922    fn default() -> Self {
20923        Self {
20924            s_type: StructureType::PIPELINE_CREATE_INFO_KHR,
20925            next: ptr::null_mut(),
20926        }
20927    }
20928}
20929
20930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html>
20931#[repr(C)]
20932#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
20933pub struct PipelineCreationFeedback {
20934    pub flags: PipelineCreationFeedbackFlags,
20935    pub duration: u64,
20936}
20937
20938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html>
20939#[repr(C)]
20940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20941pub struct PipelineCreationFeedbackCreateInfo {
20942    pub s_type: StructureType,
20943    pub next: *const c_void,
20944    pub pipeline_creation_feedback: *mut PipelineCreationFeedback,
20945    pub pipeline_stage_creation_feedback_count: u32,
20946    pub pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedback,
20947}
20948
20949impl Default for PipelineCreationFeedbackCreateInfo {
20950    #[inline]
20951    fn default() -> Self {
20952        Self {
20953            s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
20954            next: ptr::null(),
20955            pipeline_creation_feedback: ptr::null_mut(),
20956            pipeline_stage_creation_feedback_count: u32::default(),
20957            pipeline_stage_creation_feedbacks: ptr::null_mut(),
20958        }
20959    }
20960}
20961
20962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html>
20963#[repr(C)]
20964#[derive(Copy, Clone, Debug, PartialEq)]
20965pub struct PipelineDepthStencilStateCreateInfo {
20966    pub s_type: StructureType,
20967    pub next: *const c_void,
20968    pub flags: PipelineDepthStencilStateCreateFlags,
20969    pub depth_test_enable: Bool32,
20970    pub depth_write_enable: Bool32,
20971    pub depth_compare_op: CompareOp,
20972    pub depth_bounds_test_enable: Bool32,
20973    pub stencil_test_enable: Bool32,
20974    pub front: StencilOpState,
20975    pub back: StencilOpState,
20976    pub min_depth_bounds: f32,
20977    pub max_depth_bounds: f32,
20978}
20979
20980impl Default for PipelineDepthStencilStateCreateInfo {
20981    #[inline]
20982    fn default() -> Self {
20983        Self {
20984            s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
20985            next: ptr::null(),
20986            flags: PipelineDepthStencilStateCreateFlags::default(),
20987            depth_test_enable: Bool32::default(),
20988            depth_write_enable: Bool32::default(),
20989            depth_compare_op: CompareOp::default(),
20990            depth_bounds_test_enable: Bool32::default(),
20991            stencil_test_enable: Bool32::default(),
20992            front: StencilOpState::default(),
20993            back: StencilOpState::default(),
20994            min_depth_bounds: f32::default(),
20995            max_depth_bounds: f32::default(),
20996        }
20997    }
20998}
20999
21000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>
21001#[repr(C)]
21002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21003pub struct PipelineDiscardRectangleStateCreateInfoEXT {
21004    pub s_type: StructureType,
21005    pub next: *const c_void,
21006    pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
21007    pub discard_rectangle_mode: DiscardRectangleModeEXT,
21008    pub discard_rectangle_count: u32,
21009    pub discard_rectangles: *const Rect2D,
21010}
21011
21012impl Default for PipelineDiscardRectangleStateCreateInfoEXT {
21013    #[inline]
21014    fn default() -> Self {
21015        Self {
21016            s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
21017            next: ptr::null(),
21018            flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
21019            discard_rectangle_mode: DiscardRectangleModeEXT::default(),
21020            discard_rectangle_count: u32::default(),
21021            discard_rectangles: ptr::null(),
21022        }
21023    }
21024}
21025
21026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html>
21027#[repr(C)]
21028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21029pub struct PipelineDynamicStateCreateInfo {
21030    pub s_type: StructureType,
21031    pub next: *const c_void,
21032    pub flags: PipelineDynamicStateCreateFlags,
21033    pub dynamic_state_count: u32,
21034    pub dynamic_states: *const DynamicState,
21035}
21036
21037impl Default for PipelineDynamicStateCreateInfo {
21038    #[inline]
21039    fn default() -> Self {
21040        Self {
21041            s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
21042            next: ptr::null(),
21043            flags: PipelineDynamicStateCreateFlags::default(),
21044            dynamic_state_count: u32::default(),
21045            dynamic_states: ptr::null(),
21046        }
21047    }
21048}
21049
21050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html>
21051#[repr(C)]
21052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21053pub struct PipelineExecutableInfoKHR {
21054    pub s_type: StructureType,
21055    pub next: *const c_void,
21056    pub pipeline: Pipeline,
21057    pub executable_index: u32,
21058}
21059
21060impl Default for PipelineExecutableInfoKHR {
21061    #[inline]
21062    fn default() -> Self {
21063        Self {
21064            s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
21065            next: ptr::null(),
21066            pipeline: Pipeline::default(),
21067            executable_index: u32::default(),
21068        }
21069    }
21070}
21071
21072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html>
21073#[repr(C)]
21074#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21075pub struct PipelineExecutableInternalRepresentationKHR {
21076    pub s_type: StructureType,
21077    pub next: *mut c_void,
21078    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
21079    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
21080    pub is_text: Bool32,
21081    pub data_size: usize,
21082    pub data: *mut c_void,
21083}
21084
21085impl Default for PipelineExecutableInternalRepresentationKHR {
21086    #[inline]
21087    fn default() -> Self {
21088        Self {
21089            s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
21090            next: ptr::null_mut(),
21091            name: StringArray::default(),
21092            description: StringArray::default(),
21093            is_text: Bool32::default(),
21094            data_size: usize::default(),
21095            data: ptr::null_mut(),
21096        }
21097    }
21098}
21099
21100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html>
21101#[repr(C)]
21102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21103pub struct PipelineExecutablePropertiesKHR {
21104    pub s_type: StructureType,
21105    pub next: *mut c_void,
21106    pub stages: ShaderStageFlags,
21107    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
21108    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
21109    pub subgroup_size: u32,
21110}
21111
21112impl Default for PipelineExecutablePropertiesKHR {
21113    #[inline]
21114    fn default() -> Self {
21115        Self {
21116            s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
21117            next: ptr::null_mut(),
21118            stages: ShaderStageFlags::default(),
21119            name: StringArray::default(),
21120            description: StringArray::default(),
21121            subgroup_size: u32::default(),
21122        }
21123    }
21124}
21125
21126/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html>
21127#[repr(C)]
21128#[derive(Copy, Clone, Debug)]
21129pub struct PipelineExecutableStatisticKHR {
21130    pub s_type: StructureType,
21131    pub next: *mut c_void,
21132    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
21133    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
21134    pub format: PipelineExecutableStatisticFormatKHR,
21135    pub value: PipelineExecutableStatisticValueKHR,
21136}
21137
21138impl Default for PipelineExecutableStatisticKHR {
21139    #[inline]
21140    fn default() -> Self {
21141        Self {
21142            s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
21143            next: ptr::null_mut(),
21144            name: StringArray::default(),
21145            description: StringArray::default(),
21146            format: PipelineExecutableStatisticFormatKHR::default(),
21147            value: PipelineExecutableStatisticValueKHR::default(),
21148        }
21149    }
21150}
21151
21152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentDensityMapLayeredCreateInfoVALVE.html>
21153#[repr(C)]
21154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21155pub struct PipelineFragmentDensityMapLayeredCreateInfoVALVE {
21156    pub s_type: StructureType,
21157    pub next: *const c_void,
21158    pub max_fragment_density_map_layers: u32,
21159}
21160
21161impl Default for PipelineFragmentDensityMapLayeredCreateInfoVALVE {
21162    #[inline]
21163    fn default() -> Self {
21164        Self {
21165            s_type: StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE,
21166            next: ptr::null(),
21167            max_fragment_density_map_layers: u32::default(),
21168        }
21169    }
21170}
21171
21172/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>
21173#[repr(C)]
21174#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21175pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
21176    pub s_type: StructureType,
21177    pub next: *const c_void,
21178    pub shading_rate_type: FragmentShadingRateTypeNV,
21179    pub shading_rate: FragmentShadingRateNV,
21180    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
21181}
21182
21183impl Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
21184    #[inline]
21185    fn default() -> Self {
21186        Self {
21187            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
21188            next: ptr::null(),
21189            shading_rate_type: FragmentShadingRateTypeNV::default(),
21190            shading_rate: FragmentShadingRateNV::default(),
21191            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
21192        }
21193    }
21194}
21195
21196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>
21197#[repr(C)]
21198#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21199pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
21200    pub s_type: StructureType,
21201    pub next: *const c_void,
21202    pub fragment_size: Extent2D,
21203    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
21204}
21205
21206impl Default for PipelineFragmentShadingRateStateCreateInfoKHR {
21207    #[inline]
21208    fn default() -> Self {
21209        Self {
21210            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
21211            next: ptr::null(),
21212            fragment_size: Extent2D::default(),
21213            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
21214        }
21215    }
21216}
21217
21218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html>
21219#[repr(C)]
21220#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21221pub struct PipelineIndirectDeviceAddressInfoNV {
21222    pub s_type: StructureType,
21223    pub next: *const c_void,
21224    pub pipeline_bind_point: PipelineBindPoint,
21225    pub pipeline: Pipeline,
21226}
21227
21228impl Default for PipelineIndirectDeviceAddressInfoNV {
21229    #[inline]
21230    fn default() -> Self {
21231        Self {
21232            s_type: StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV,
21233            next: ptr::null(),
21234            pipeline_bind_point: PipelineBindPoint::default(),
21235            pipeline: Pipeline::default(),
21236        }
21237    }
21238}
21239
21240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html>
21241#[repr(C)]
21242#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21243pub struct PipelineInfoKHR {
21244    pub s_type: StructureType,
21245    pub next: *const c_void,
21246    pub pipeline: Pipeline,
21247}
21248
21249impl Default for PipelineInfoKHR {
21250    #[inline]
21251    fn default() -> Self {
21252        Self {
21253            s_type: StructureType::PIPELINE_INFO_KHR,
21254            next: ptr::null(),
21255            pipeline: Pipeline::default(),
21256        }
21257    }
21258}
21259
21260/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html>
21261#[repr(C)]
21262#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21263pub struct PipelineInputAssemblyStateCreateInfo {
21264    pub s_type: StructureType,
21265    pub next: *const c_void,
21266    pub flags: PipelineInputAssemblyStateCreateFlags,
21267    pub topology: PrimitiveTopology,
21268    pub primitive_restart_enable: Bool32,
21269}
21270
21271impl Default for PipelineInputAssemblyStateCreateInfo {
21272    #[inline]
21273    fn default() -> Self {
21274        Self {
21275            s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
21276            next: ptr::null(),
21277            flags: PipelineInputAssemblyStateCreateFlags::default(),
21278            topology: PrimitiveTopology::default(),
21279            primitive_restart_enable: Bool32::default(),
21280        }
21281    }
21282}
21283
21284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html>
21285#[repr(C)]
21286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21287pub struct PipelineLayoutCreateInfo {
21288    pub s_type: StructureType,
21289    pub next: *const c_void,
21290    pub flags: PipelineLayoutCreateFlags,
21291    pub set_layout_count: u32,
21292    pub set_layouts: *const DescriptorSetLayout,
21293    pub push_constant_range_count: u32,
21294    pub push_constant_ranges: *const PushConstantRange,
21295}
21296
21297impl Default for PipelineLayoutCreateInfo {
21298    #[inline]
21299    fn default() -> Self {
21300        Self {
21301            s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
21302            next: ptr::null(),
21303            flags: PipelineLayoutCreateFlags::default(),
21304            set_layout_count: u32::default(),
21305            set_layouts: ptr::null(),
21306            push_constant_range_count: u32::default(),
21307            push_constant_ranges: ptr::null(),
21308        }
21309    }
21310}
21311
21312/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html>
21313#[repr(C)]
21314#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21315pub struct PipelineLibraryCreateInfoKHR {
21316    pub s_type: StructureType,
21317    pub next: *const c_void,
21318    pub library_count: u32,
21319    pub libraries: *const Pipeline,
21320}
21321
21322impl Default for PipelineLibraryCreateInfoKHR {
21323    #[inline]
21324    fn default() -> Self {
21325        Self {
21326            s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
21327            next: ptr::null(),
21328            library_count: u32::default(),
21329            libraries: ptr::null(),
21330        }
21331    }
21332}
21333
21334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html>
21335#[repr(C)]
21336#[derive(Copy, Clone, Debug, PartialEq)]
21337pub struct PipelineMultisampleStateCreateInfo {
21338    pub s_type: StructureType,
21339    pub next: *const c_void,
21340    pub flags: PipelineMultisampleStateCreateFlags,
21341    pub rasterization_samples: SampleCountFlags,
21342    pub sample_shading_enable: Bool32,
21343    pub min_sample_shading: f32,
21344    pub sample_mask: *const SampleMask,
21345    pub alpha_to_coverage_enable: Bool32,
21346    pub alpha_to_one_enable: Bool32,
21347}
21348
21349impl Default for PipelineMultisampleStateCreateInfo {
21350    #[inline]
21351    fn default() -> Self {
21352        Self {
21353            s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
21354            next: ptr::null(),
21355            flags: PipelineMultisampleStateCreateFlags::default(),
21356            rasterization_samples: SampleCountFlags::default(),
21357            sample_shading_enable: Bool32::default(),
21358            min_sample_shading: f32::default(),
21359            sample_mask: ptr::null(),
21360            alpha_to_coverage_enable: Bool32::default(),
21361            alpha_to_one_enable: Bool32::default(),
21362        }
21363    }
21364}
21365
21366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html>
21367#[repr(C)]
21368#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21369pub struct PipelinePropertiesIdentifierEXT {
21370    pub s_type: StructureType,
21371    pub next: *mut c_void,
21372    pub pipeline_identifier: ByteArray<UUID_SIZE>,
21373}
21374
21375impl Default for PipelinePropertiesIdentifierEXT {
21376    #[inline]
21377    fn default() -> Self {
21378        Self {
21379            s_type: StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT,
21380            next: ptr::null_mut(),
21381            pipeline_identifier: ByteArray::default(),
21382        }
21383    }
21384}
21385
21386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>
21387#[repr(C)]
21388#[derive(Copy, Clone, Debug, PartialEq)]
21389pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
21390    pub s_type: StructureType,
21391    pub next: *const c_void,
21392    pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
21393    pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
21394    pub extra_primitive_overestimation_size: f32,
21395}
21396
21397impl Default for PipelineRasterizationConservativeStateCreateInfoEXT {
21398    #[inline]
21399    fn default() -> Self {
21400        Self {
21401            s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
21402            next: ptr::null(),
21403            flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
21404            conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
21405            extra_primitive_overestimation_size: f32::default(),
21406        }
21407    }
21408}
21409
21410/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>
21411#[repr(C)]
21412#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21413pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
21414    pub s_type: StructureType,
21415    pub next: *const c_void,
21416    pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
21417    pub depth_clip_enable: Bool32,
21418}
21419
21420impl Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
21421    #[inline]
21422    fn default() -> Self {
21423        Self {
21424            s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
21425            next: ptr::null(),
21426            flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
21427            depth_clip_enable: Bool32::default(),
21428        }
21429    }
21430}
21431
21432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html>
21433#[repr(C)]
21434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21435pub struct PipelineRasterizationLineStateCreateInfo {
21436    pub s_type: StructureType,
21437    pub next: *const c_void,
21438    pub line_rasterization_mode: LineRasterizationMode,
21439    pub stippled_line_enable: Bool32,
21440    pub line_stipple_factor: u32,
21441    pub line_stipple_pattern: u16,
21442}
21443
21444impl Default for PipelineRasterizationLineStateCreateInfo {
21445    #[inline]
21446    fn default() -> Self {
21447        Self {
21448            s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,
21449            next: ptr::null(),
21450            line_rasterization_mode: LineRasterizationMode::default(),
21451            stippled_line_enable: Bool32::default(),
21452            line_stipple_factor: u32::default(),
21453            line_stipple_pattern: u16::default(),
21454        }
21455    }
21456}
21457
21458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>
21459#[repr(C)]
21460#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21461pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
21462    pub s_type: StructureType,
21463    pub next: *const c_void,
21464    pub provoking_vertex_mode: ProvokingVertexModeEXT,
21465}
21466
21467impl Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
21468    #[inline]
21469    fn default() -> Self {
21470        Self {
21471            s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
21472            next: ptr::null(),
21473            provoking_vertex_mode: ProvokingVertexModeEXT::default(),
21474        }
21475    }
21476}
21477
21478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html>
21479#[repr(C)]
21480#[derive(Copy, Clone, Debug, PartialEq)]
21481pub struct PipelineRasterizationStateCreateInfo {
21482    pub s_type: StructureType,
21483    pub next: *const c_void,
21484    pub flags: PipelineRasterizationStateCreateFlags,
21485    pub depth_clamp_enable: Bool32,
21486    pub rasterizer_discard_enable: Bool32,
21487    pub polygon_mode: PolygonMode,
21488    pub cull_mode: CullModeFlags,
21489    pub front_face: FrontFace,
21490    pub depth_bias_enable: Bool32,
21491    pub depth_bias_constant_factor: f32,
21492    pub depth_bias_clamp: f32,
21493    pub depth_bias_slope_factor: f32,
21494    pub line_width: f32,
21495}
21496
21497impl Default for PipelineRasterizationStateCreateInfo {
21498    #[inline]
21499    fn default() -> Self {
21500        Self {
21501            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
21502            next: ptr::null(),
21503            flags: PipelineRasterizationStateCreateFlags::default(),
21504            depth_clamp_enable: Bool32::default(),
21505            rasterizer_discard_enable: Bool32::default(),
21506            polygon_mode: PolygonMode::default(),
21507            cull_mode: CullModeFlags::default(),
21508            front_face: FrontFace::default(),
21509            depth_bias_enable: Bool32::default(),
21510            depth_bias_constant_factor: f32::default(),
21511            depth_bias_clamp: f32::default(),
21512            depth_bias_slope_factor: f32::default(),
21513            line_width: f32::default(),
21514        }
21515    }
21516}
21517
21518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>
21519#[repr(C)]
21520#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21521pub struct PipelineRasterizationStateRasterizationOrderAMD {
21522    pub s_type: StructureType,
21523    pub next: *const c_void,
21524    pub rasterization_order: RasterizationOrderAMD,
21525}
21526
21527impl Default for PipelineRasterizationStateRasterizationOrderAMD {
21528    #[inline]
21529    fn default() -> Self {
21530        Self {
21531            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
21532            next: ptr::null(),
21533            rasterization_order: RasterizationOrderAMD::default(),
21534        }
21535    }
21536}
21537
21538/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>
21539#[repr(C)]
21540#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21541pub struct PipelineRasterizationStateStreamCreateInfoEXT {
21542    pub s_type: StructureType,
21543    pub next: *const c_void,
21544    pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
21545    pub rasterization_stream: u32,
21546}
21547
21548impl Default for PipelineRasterizationStateStreamCreateInfoEXT {
21549    #[inline]
21550    fn default() -> Self {
21551        Self {
21552            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
21553            next: ptr::null(),
21554            flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
21555            rasterization_stream: u32::default(),
21556        }
21557    }
21558}
21559
21560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html>
21561#[repr(C)]
21562#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21563pub struct PipelineRenderingCreateInfo {
21564    pub s_type: StructureType,
21565    pub next: *const c_void,
21566    pub view_mask: u32,
21567    pub color_attachment_count: u32,
21568    pub color_attachment_formats: *const Format,
21569    pub depth_attachment_format: Format,
21570    pub stencil_attachment_format: Format,
21571}
21572
21573impl Default for PipelineRenderingCreateInfo {
21574    #[inline]
21575    fn default() -> Self {
21576        Self {
21577            s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO,
21578            next: ptr::null(),
21579            view_mask: u32::default(),
21580            color_attachment_count: u32::default(),
21581            color_attachment_formats: ptr::null(),
21582            depth_attachment_format: Format::default(),
21583            stencil_attachment_format: Format::default(),
21584        }
21585    }
21586}
21587
21588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>
21589#[repr(C)]
21590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21591pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
21592    pub s_type: StructureType,
21593    pub next: *const c_void,
21594    pub representative_fragment_test_enable: Bool32,
21595}
21596
21597impl Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
21598    #[inline]
21599    fn default() -> Self {
21600        Self {
21601            s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
21602            next: ptr::null(),
21603            representative_fragment_test_enable: Bool32::default(),
21604        }
21605    }
21606}
21607
21608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html>
21609#[repr(C)]
21610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21611pub struct PipelineRobustnessCreateInfo {
21612    pub s_type: StructureType,
21613    pub next: *const c_void,
21614    pub storage_buffers: PipelineRobustnessBufferBehavior,
21615    pub uniform_buffers: PipelineRobustnessBufferBehavior,
21616    pub vertex_inputs: PipelineRobustnessBufferBehavior,
21617    pub images: PipelineRobustnessImageBehavior,
21618}
21619
21620impl Default for PipelineRobustnessCreateInfo {
21621    #[inline]
21622    fn default() -> Self {
21623        Self {
21624            s_type: StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO,
21625            next: ptr::null(),
21626            storage_buffers: PipelineRobustnessBufferBehavior::default(),
21627            uniform_buffers: PipelineRobustnessBufferBehavior::default(),
21628            vertex_inputs: PipelineRobustnessBufferBehavior::default(),
21629            images: PipelineRobustnessImageBehavior::default(),
21630        }
21631    }
21632}
21633
21634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>
21635#[repr(C)]
21636#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21637pub struct PipelineSampleLocationsStateCreateInfoEXT {
21638    pub s_type: StructureType,
21639    pub next: *const c_void,
21640    pub sample_locations_enable: Bool32,
21641    pub sample_locations_info: SampleLocationsInfoEXT,
21642}
21643
21644impl Default for PipelineSampleLocationsStateCreateInfoEXT {
21645    #[inline]
21646    fn default() -> Self {
21647        Self {
21648            s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
21649            next: ptr::null(),
21650            sample_locations_enable: Bool32::default(),
21651            sample_locations_info: SampleLocationsInfoEXT::default(),
21652        }
21653    }
21654}
21655
21656/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html>
21657#[repr(C)]
21658#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21659pub struct PipelineShaderStageCreateInfo {
21660    pub s_type: StructureType,
21661    pub next: *const c_void,
21662    pub flags: PipelineShaderStageCreateFlags,
21663    pub stage: ShaderStageFlags,
21664    pub module: ShaderModule,
21665    pub name: *const c_char,
21666    pub specialization_info: *const SpecializationInfo,
21667}
21668
21669impl Default for PipelineShaderStageCreateInfo {
21670    #[inline]
21671    fn default() -> Self {
21672        Self {
21673            s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
21674            next: ptr::null(),
21675            flags: PipelineShaderStageCreateFlags::default(),
21676            stage: ShaderStageFlags::default(),
21677            module: ShaderModule::default(),
21678            name: ptr::null(),
21679            specialization_info: ptr::null(),
21680        }
21681    }
21682}
21683
21684/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html>
21685#[repr(C)]
21686#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21687pub struct PipelineShaderStageModuleIdentifierCreateInfoEXT {
21688    pub s_type: StructureType,
21689    pub next: *const c_void,
21690    pub identifier_size: u32,
21691    pub identifier: *const u8,
21692}
21693
21694impl Default for PipelineShaderStageModuleIdentifierCreateInfoEXT {
21695    #[inline]
21696    fn default() -> Self {
21697        Self {
21698            s_type: StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT,
21699            next: ptr::null(),
21700            identifier_size: u32::default(),
21701            identifier: ptr::null(),
21702        }
21703    }
21704}
21705
21706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html>
21707#[repr(C)]
21708#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21709pub struct PipelineShaderStageNodeCreateInfoAMDX {
21710    pub s_type: StructureType,
21711    pub next: *const c_void,
21712    pub name: *const c_char,
21713    pub index: u32,
21714}
21715
21716impl Default for PipelineShaderStageNodeCreateInfoAMDX {
21717    #[inline]
21718    fn default() -> Self {
21719        Self {
21720            s_type: StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX,
21721            next: ptr::null(),
21722            name: ptr::null(),
21723            index: u32::default(),
21724        }
21725    }
21726}
21727
21728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html>
21729#[repr(C)]
21730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21731pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfo {
21732    pub s_type: StructureType,
21733    pub next: *mut c_void,
21734    pub required_subgroup_size: u32,
21735}
21736
21737impl Default for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
21738    #[inline]
21739    fn default() -> Self {
21740        Self {
21741            s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
21742            next: ptr::null_mut(),
21743            required_subgroup_size: u32::default(),
21744        }
21745    }
21746}
21747
21748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>
21749#[repr(C)]
21750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21751pub struct PipelineTessellationDomainOriginStateCreateInfo {
21752    pub s_type: StructureType,
21753    pub next: *const c_void,
21754    pub domain_origin: TessellationDomainOrigin,
21755}
21756
21757impl Default for PipelineTessellationDomainOriginStateCreateInfo {
21758    #[inline]
21759    fn default() -> Self {
21760        Self {
21761            s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
21762            next: ptr::null(),
21763            domain_origin: TessellationDomainOrigin::default(),
21764        }
21765    }
21766}
21767
21768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html>
21769#[repr(C)]
21770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21771pub struct PipelineTessellationStateCreateInfo {
21772    pub s_type: StructureType,
21773    pub next: *const c_void,
21774    pub flags: PipelineTessellationStateCreateFlags,
21775    pub patch_control_points: u32,
21776}
21777
21778impl Default for PipelineTessellationStateCreateInfo {
21779    #[inline]
21780    fn default() -> Self {
21781        Self {
21782            s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
21783            next: ptr::null(),
21784            flags: PipelineTessellationStateCreateFlags::default(),
21785            patch_control_points: u32::default(),
21786        }
21787    }
21788}
21789
21790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html>
21791#[repr(C)]
21792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21793pub struct PipelineVertexInputDivisorStateCreateInfo {
21794    pub s_type: StructureType,
21795    pub next: *const c_void,
21796    pub vertex_binding_divisor_count: u32,
21797    pub vertex_binding_divisors: *const VertexInputBindingDivisorDescription,
21798}
21799
21800impl Default for PipelineVertexInputDivisorStateCreateInfo {
21801    #[inline]
21802    fn default() -> Self {
21803        Self {
21804            s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,
21805            next: ptr::null(),
21806            vertex_binding_divisor_count: u32::default(),
21807            vertex_binding_divisors: ptr::null(),
21808        }
21809    }
21810}
21811
21812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html>
21813#[repr(C)]
21814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21815pub struct PipelineVertexInputStateCreateInfo {
21816    pub s_type: StructureType,
21817    pub next: *const c_void,
21818    pub flags: PipelineVertexInputStateCreateFlags,
21819    pub vertex_binding_description_count: u32,
21820    pub vertex_binding_descriptions: *const VertexInputBindingDescription,
21821    pub vertex_attribute_description_count: u32,
21822    pub vertex_attribute_descriptions: *const VertexInputAttributeDescription,
21823}
21824
21825impl Default for PipelineVertexInputStateCreateInfo {
21826    #[inline]
21827    fn default() -> Self {
21828        Self {
21829            s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
21830            next: ptr::null(),
21831            flags: PipelineVertexInputStateCreateFlags::default(),
21832            vertex_binding_description_count: u32::default(),
21833            vertex_binding_descriptions: ptr::null(),
21834            vertex_attribute_description_count: u32::default(),
21835            vertex_attribute_descriptions: ptr::null(),
21836        }
21837    }
21838}
21839
21840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>
21841#[repr(C)]
21842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21843pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
21844    pub s_type: StructureType,
21845    pub next: *const c_void,
21846    pub sample_order_type: CoarseSampleOrderTypeNV,
21847    pub custom_sample_order_count: u32,
21848    pub custom_sample_orders: *const CoarseSampleOrderCustomNV,
21849}
21850
21851impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
21852    #[inline]
21853    fn default() -> Self {
21854        Self {
21855            s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
21856            next: ptr::null(),
21857            sample_order_type: CoarseSampleOrderTypeNV::default(),
21858            custom_sample_order_count: u32::default(),
21859            custom_sample_orders: ptr::null(),
21860        }
21861    }
21862}
21863
21864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html>
21865#[repr(C)]
21866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21867pub struct PipelineViewportDepthClampControlCreateInfoEXT {
21868    pub s_type: StructureType,
21869    pub next: *const c_void,
21870    pub depth_clamp_mode: DepthClampModeEXT,
21871    pub depth_clamp_range: *const DepthClampRangeEXT,
21872}
21873
21874impl Default for PipelineViewportDepthClampControlCreateInfoEXT {
21875    #[inline]
21876    fn default() -> Self {
21877        Self {
21878            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT,
21879            next: ptr::null(),
21880            depth_clamp_mode: DepthClampModeEXT::default(),
21881            depth_clamp_range: ptr::null(),
21882        }
21883    }
21884}
21885
21886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>
21887#[repr(C)]
21888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21889pub struct PipelineViewportDepthClipControlCreateInfoEXT {
21890    pub s_type: StructureType,
21891    pub next: *const c_void,
21892    pub negative_one_to_one: Bool32,
21893}
21894
21895impl Default for PipelineViewportDepthClipControlCreateInfoEXT {
21896    #[inline]
21897    fn default() -> Self {
21898        Self {
21899            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
21900            next: ptr::null(),
21901            negative_one_to_one: Bool32::default(),
21902        }
21903    }
21904}
21905
21906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>
21907#[repr(C)]
21908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21909pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
21910    pub s_type: StructureType,
21911    pub next: *const c_void,
21912    pub exclusive_scissor_count: u32,
21913    pub exclusive_scissors: *const Rect2D,
21914}
21915
21916impl Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
21917    #[inline]
21918    fn default() -> Self {
21919        Self {
21920            s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
21921            next: ptr::null(),
21922            exclusive_scissor_count: u32::default(),
21923            exclusive_scissors: ptr::null(),
21924        }
21925    }
21926}
21927
21928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>
21929#[repr(C)]
21930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21931pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
21932    pub s_type: StructureType,
21933    pub next: *const c_void,
21934    pub shading_rate_image_enable: Bool32,
21935    pub viewport_count: u32,
21936    pub shading_rate_palettes: *const ShadingRatePaletteNV,
21937}
21938
21939impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
21940    #[inline]
21941    fn default() -> Self {
21942        Self {
21943            s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
21944            next: ptr::null(),
21945            shading_rate_image_enable: Bool32::default(),
21946            viewport_count: u32::default(),
21947            shading_rate_palettes: ptr::null(),
21948        }
21949    }
21950}
21951
21952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html>
21953#[repr(C)]
21954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21955pub struct PipelineViewportStateCreateInfo {
21956    pub s_type: StructureType,
21957    pub next: *const c_void,
21958    pub flags: PipelineViewportStateCreateFlags,
21959    pub viewport_count: u32,
21960    pub viewports: *const Viewport,
21961    pub scissor_count: u32,
21962    pub scissors: *const Rect2D,
21963}
21964
21965impl Default for PipelineViewportStateCreateInfo {
21966    #[inline]
21967    fn default() -> Self {
21968        Self {
21969            s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
21970            next: ptr::null(),
21971            flags: PipelineViewportStateCreateFlags::default(),
21972            viewport_count: u32::default(),
21973            viewports: ptr::null(),
21974            scissor_count: u32::default(),
21975            scissors: ptr::null(),
21976        }
21977    }
21978}
21979
21980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>
21981#[repr(C)]
21982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21983pub struct PipelineViewportSwizzleStateCreateInfoNV {
21984    pub s_type: StructureType,
21985    pub next: *const c_void,
21986    pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
21987    pub viewport_count: u32,
21988    pub viewport_swizzles: *const ViewportSwizzleNV,
21989}
21990
21991impl Default for PipelineViewportSwizzleStateCreateInfoNV {
21992    #[inline]
21993    fn default() -> Self {
21994        Self {
21995            s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
21996            next: ptr::null(),
21997            flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
21998            viewport_count: u32::default(),
21999            viewport_swizzles: ptr::null(),
22000        }
22001    }
22002}
22003
22004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>
22005#[repr(C)]
22006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22007pub struct PipelineViewportWScalingStateCreateInfoNV {
22008    pub s_type: StructureType,
22009    pub next: *const c_void,
22010    pub viewport_w_scaling_enable: Bool32,
22011    pub viewport_count: u32,
22012    pub viewport_w_scalings: *const ViewportWScalingNV,
22013}
22014
22015impl Default for PipelineViewportWScalingStateCreateInfoNV {
22016    #[inline]
22017    fn default() -> Self {
22018        Self {
22019            s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
22020            next: ptr::null(),
22021            viewport_w_scaling_enable: Bool32::default(),
22022            viewport_count: u32::default(),
22023            viewport_w_scalings: ptr::null(),
22024        }
22025    }
22026}
22027
22028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html>
22029#[repr(C)]
22030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22031pub struct PresentFrameTokenGGP {
22032    pub s_type: StructureType,
22033    pub next: *const c_void,
22034    pub frame_token: GgpFrameToken,
22035}
22036
22037impl Default for PresentFrameTokenGGP {
22038    #[inline]
22039    fn default() -> Self {
22040        Self {
22041            s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
22042            next: ptr::null(),
22043            frame_token: GgpFrameToken::default(),
22044        }
22045    }
22046}
22047
22048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentId2KHR.html>
22049#[repr(C)]
22050#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22051pub struct PresentId2KHR {
22052    pub s_type: StructureType,
22053    pub next: *const c_void,
22054    pub swapchain_count: u32,
22055    pub present_ids: *const u64,
22056}
22057
22058impl Default for PresentId2KHR {
22059    #[inline]
22060    fn default() -> Self {
22061        Self {
22062            s_type: StructureType::PRESENT_ID_2_KHR,
22063            next: ptr::null(),
22064            swapchain_count: u32::default(),
22065            present_ids: ptr::null(),
22066        }
22067    }
22068}
22069
22070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentIdKHR.html>
22071#[repr(C)]
22072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22073pub struct PresentIdKHR {
22074    pub s_type: StructureType,
22075    pub next: *const c_void,
22076    pub swapchain_count: u32,
22077    pub present_ids: *const u64,
22078}
22079
22080impl Default for PresentIdKHR {
22081    #[inline]
22082    fn default() -> Self {
22083        Self {
22084            s_type: StructureType::PRESENT_ID_KHR,
22085            next: ptr::null(),
22086            swapchain_count: u32::default(),
22087            present_ids: ptr::null(),
22088        }
22089    }
22090}
22091
22092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentInfoKHR.html>
22093#[repr(C)]
22094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22095pub struct PresentInfoKHR {
22096    pub s_type: StructureType,
22097    pub next: *const c_void,
22098    pub wait_semaphore_count: u32,
22099    pub wait_semaphores: *const Semaphore,
22100    pub swapchain_count: u32,
22101    pub swapchains: *const SwapchainKHR,
22102    pub image_indices: *const u32,
22103    pub results: *mut Result,
22104}
22105
22106impl Default for PresentInfoKHR {
22107    #[inline]
22108    fn default() -> Self {
22109        Self {
22110            s_type: StructureType::PRESENT_INFO_KHR,
22111            next: ptr::null(),
22112            wait_semaphore_count: u32::default(),
22113            wait_semaphores: ptr::null(),
22114            swapchain_count: u32::default(),
22115            swapchains: ptr::null(),
22116            image_indices: ptr::null(),
22117            results: ptr::null_mut(),
22118        }
22119    }
22120}
22121
22122/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionKHR.html>
22123#[repr(C)]
22124#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22125pub struct PresentRegionKHR {
22126    pub rectangle_count: u32,
22127    pub rectangles: *const RectLayerKHR,
22128}
22129
22130impl Default for PresentRegionKHR {
22131    #[inline]
22132    fn default() -> Self {
22133        Self {
22134            rectangle_count: u32::default(),
22135            rectangles: ptr::null(),
22136        }
22137    }
22138}
22139
22140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html>
22141#[repr(C)]
22142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22143pub struct PresentRegionsKHR {
22144    pub s_type: StructureType,
22145    pub next: *const c_void,
22146    pub swapchain_count: u32,
22147    pub regions: *const PresentRegionKHR,
22148}
22149
22150impl Default for PresentRegionsKHR {
22151    #[inline]
22152    fn default() -> Self {
22153        Self {
22154            s_type: StructureType::PRESENT_REGIONS_KHR,
22155            next: ptr::null(),
22156            swapchain_count: u32::default(),
22157            regions: ptr::null(),
22158        }
22159    }
22160}
22161
22162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html>
22163#[repr(C)]
22164#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22165pub struct PresentTimeGOOGLE {
22166    pub present_id: u32,
22167    pub desired_present_time: u64,
22168}
22169
22170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html>
22171#[repr(C)]
22172#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22173pub struct PresentTimesInfoGOOGLE {
22174    pub s_type: StructureType,
22175    pub next: *const c_void,
22176    pub swapchain_count: u32,
22177    pub times: *const PresentTimeGOOGLE,
22178}
22179
22180impl Default for PresentTimesInfoGOOGLE {
22181    #[inline]
22182    fn default() -> Self {
22183        Self {
22184            s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
22185            next: ptr::null(),
22186            swapchain_count: u32::default(),
22187            times: ptr::null(),
22188        }
22189    }
22190}
22191
22192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentWait2InfoKHR.html>
22193#[repr(C)]
22194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22195pub struct PresentWait2InfoKHR {
22196    pub s_type: StructureType,
22197    pub next: *const c_void,
22198    pub present_id: u64,
22199    pub timeout: u64,
22200}
22201
22202impl Default for PresentWait2InfoKHR {
22203    #[inline]
22204    fn default() -> Self {
22205        Self {
22206            s_type: StructureType::PRESENT_WAIT_2_INFO_KHR,
22207            next: ptr::null(),
22208            present_id: u64::default(),
22209            timeout: u64::default(),
22210        }
22211    }
22212}
22213
22214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html>
22215#[repr(C)]
22216#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22217pub struct PrivateDataSlotCreateInfo {
22218    pub s_type: StructureType,
22219    pub next: *const c_void,
22220    pub flags: PrivateDataSlotCreateFlags,
22221}
22222
22223impl Default for PrivateDataSlotCreateInfo {
22224    #[inline]
22225    fn default() -> Self {
22226        Self {
22227            s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO,
22228            next: ptr::null(),
22229            flags: PrivateDataSlotCreateFlags::default(),
22230        }
22231    }
22232}
22233
22234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html>
22235#[repr(C)]
22236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22237pub struct ProtectedSubmitInfo {
22238    pub s_type: StructureType,
22239    pub next: *const c_void,
22240    pub protected_submit: Bool32,
22241}
22242
22243impl Default for ProtectedSubmitInfo {
22244    #[inline]
22245    fn default() -> Self {
22246        Self {
22247            s_type: StructureType::PROTECTED_SUBMIT_INFO,
22248            next: ptr::null(),
22249            protected_submit: Bool32::default(),
22250        }
22251    }
22252}
22253
22254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantRange.html>
22255#[repr(C)]
22256#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22257pub struct PushConstantRange {
22258    pub stage_flags: ShaderStageFlags,
22259    pub offset: u32,
22260    pub size: u32,
22261}
22262
22263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfo.html>
22264#[repr(C)]
22265#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22266pub struct PushConstantsInfo {
22267    pub s_type: StructureType,
22268    pub next: *const c_void,
22269    pub layout: PipelineLayout,
22270    pub stage_flags: ShaderStageFlags,
22271    pub offset: u32,
22272    pub size: u32,
22273    pub values: *const c_void,
22274}
22275
22276impl Default for PushConstantsInfo {
22277    #[inline]
22278    fn default() -> Self {
22279        Self {
22280            s_type: StructureType::PUSH_CONSTANTS_INFO,
22281            next: ptr::null(),
22282            layout: PipelineLayout::default(),
22283            stage_flags: ShaderStageFlags::default(),
22284            offset: u32::default(),
22285            size: u32::default(),
22286            values: ptr::null(),
22287        }
22288    }
22289}
22290
22291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html>
22292#[repr(C)]
22293#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22294pub struct PushDescriptorSetInfo {
22295    pub s_type: StructureType,
22296    pub next: *const c_void,
22297    pub stage_flags: ShaderStageFlags,
22298    pub layout: PipelineLayout,
22299    pub set: u32,
22300    pub descriptor_write_count: u32,
22301    pub descriptor_writes: *const WriteDescriptorSet,
22302}
22303
22304impl Default for PushDescriptorSetInfo {
22305    #[inline]
22306    fn default() -> Self {
22307        Self {
22308            s_type: StructureType::PUSH_DESCRIPTOR_SET_INFO,
22309            next: ptr::null(),
22310            stage_flags: ShaderStageFlags::default(),
22311            layout: PipelineLayout::default(),
22312            set: u32::default(),
22313            descriptor_write_count: u32::default(),
22314            descriptor_writes: ptr::null(),
22315        }
22316    }
22317}
22318
22319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html>
22320#[repr(C)]
22321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22322pub struct PushDescriptorSetWithTemplateInfo {
22323    pub s_type: StructureType,
22324    pub next: *const c_void,
22325    pub descriptor_update_template: DescriptorUpdateTemplate,
22326    pub layout: PipelineLayout,
22327    pub set: u32,
22328    pub data: *const c_void,
22329}
22330
22331impl Default for PushDescriptorSetWithTemplateInfo {
22332    #[inline]
22333    fn default() -> Self {
22334        Self {
22335            s_type: StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,
22336            next: ptr::null(),
22337            descriptor_update_template: DescriptorUpdateTemplate::default(),
22338            layout: PipelineLayout::default(),
22339            set: u32::default(),
22340            data: ptr::null(),
22341        }
22342    }
22343}
22344
22345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html>
22346#[repr(C)]
22347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22348pub struct QueryLowLatencySupportNV {
22349    pub s_type: StructureType,
22350    pub next: *const c_void,
22351    pub queried_low_latency_data: *mut c_void,
22352}
22353
22354impl Default for QueryLowLatencySupportNV {
22355    #[inline]
22356    fn default() -> Self {
22357        Self {
22358            s_type: StructureType::QUERY_LOW_LATENCY_SUPPORT_NV,
22359            next: ptr::null(),
22360            queried_low_latency_data: ptr::null_mut(),
22361        }
22362    }
22363}
22364
22365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html>
22366#[repr(C)]
22367#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22368pub struct QueryPoolCreateInfo {
22369    pub s_type: StructureType,
22370    pub next: *const c_void,
22371    pub flags: QueryPoolCreateFlags,
22372    pub query_type: QueryType,
22373    pub query_count: u32,
22374    pub pipeline_statistics: QueryPipelineStatisticFlags,
22375}
22376
22377impl Default for QueryPoolCreateInfo {
22378    #[inline]
22379    fn default() -> Self {
22380        Self {
22381            s_type: StructureType::QUERY_POOL_CREATE_INFO,
22382            next: ptr::null(),
22383            flags: QueryPoolCreateFlags::default(),
22384            query_type: QueryType::default(),
22385            query_count: u32::default(),
22386            pipeline_statistics: QueryPipelineStatisticFlags::default(),
22387        }
22388    }
22389}
22390
22391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>
22392#[repr(C)]
22393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22394pub struct QueryPoolPerformanceCreateInfoKHR {
22395    pub s_type: StructureType,
22396    pub next: *const c_void,
22397    pub queue_family_index: u32,
22398    pub counter_index_count: u32,
22399    pub counter_indices: *const u32,
22400}
22401
22402impl Default for QueryPoolPerformanceCreateInfoKHR {
22403    #[inline]
22404    fn default() -> Self {
22405        Self {
22406            s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
22407            next: ptr::null(),
22408            queue_family_index: u32::default(),
22409            counter_index_count: u32::default(),
22410            counter_indices: ptr::null(),
22411        }
22412    }
22413}
22414
22415/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>
22416#[repr(C)]
22417#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22418pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
22419    pub s_type: StructureType,
22420    pub next: *const c_void,
22421    pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
22422}
22423
22424impl Default for QueryPoolPerformanceQueryCreateInfoINTEL {
22425    #[inline]
22426    fn default() -> Self {
22427        Self {
22428            s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
22429            next: ptr::null(),
22430            performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
22431        }
22432    }
22433}
22434
22435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html>
22436#[repr(C)]
22437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22438pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHR {
22439    pub s_type: StructureType,
22440    pub next: *const c_void,
22441    pub encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
22442}
22443
22444impl Default for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
22445    #[inline]
22446    fn default() -> Self {
22447        Self {
22448            s_type: StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR,
22449            next: ptr::null(),
22450            encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
22451        }
22452    }
22453}
22454
22455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html>
22456#[repr(C)]
22457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22458pub struct QueueFamilyCheckpointProperties2NV {
22459    pub s_type: StructureType,
22460    pub next: *mut c_void,
22461    pub checkpoint_execution_stage_mask: PipelineStageFlags2,
22462}
22463
22464impl Default for QueueFamilyCheckpointProperties2NV {
22465    #[inline]
22466    fn default() -> Self {
22467        Self {
22468            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
22469            next: ptr::null_mut(),
22470            checkpoint_execution_stage_mask: PipelineStageFlags2::default(),
22471        }
22472    }
22473}
22474
22475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html>
22476#[repr(C)]
22477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22478pub struct QueueFamilyCheckpointPropertiesNV {
22479    pub s_type: StructureType,
22480    pub next: *mut c_void,
22481    pub checkpoint_execution_stage_mask: PipelineStageFlags,
22482}
22483
22484impl Default for QueueFamilyCheckpointPropertiesNV {
22485    #[inline]
22486    fn default() -> Self {
22487        Self {
22488            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
22489            next: ptr::null_mut(),
22490            checkpoint_execution_stage_mask: PipelineStageFlags::default(),
22491        }
22492    }
22493}
22494
22495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphProcessingEnginePropertiesARM.html>
22496#[repr(C)]
22497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22498pub struct QueueFamilyDataGraphProcessingEnginePropertiesARM {
22499    pub s_type: StructureType,
22500    pub next: *const c_void,
22501    pub foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags,
22502    pub foreign_memory_handle_types: ExternalMemoryHandleTypeFlags,
22503}
22504
22505impl Default for QueueFamilyDataGraphProcessingEnginePropertiesARM {
22506    #[inline]
22507    fn default() -> Self {
22508        Self {
22509            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM,
22510            next: ptr::null(),
22511            foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
22512            foreign_memory_handle_types: ExternalMemoryHandleTypeFlags::default(),
22513        }
22514    }
22515}
22516
22517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphPropertiesARM.html>
22518#[repr(C)]
22519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22520pub struct QueueFamilyDataGraphPropertiesARM {
22521    pub s_type: StructureType,
22522    pub next: *const c_void,
22523    pub engine: PhysicalDeviceDataGraphProcessingEngineARM,
22524    pub operation: PhysicalDeviceDataGraphOperationSupportARM,
22525}
22526
22527impl Default for QueueFamilyDataGraphPropertiesARM {
22528    #[inline]
22529    fn default() -> Self {
22530        Self {
22531            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM,
22532            next: ptr::null(),
22533            engine: PhysicalDeviceDataGraphProcessingEngineARM::default(),
22534            operation: PhysicalDeviceDataGraphOperationSupportARM::default(),
22535        }
22536    }
22537}
22538
22539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html>
22540#[repr(C)]
22541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22542pub struct QueueFamilyGlobalPriorityProperties {
22543    pub s_type: StructureType,
22544    pub next: *mut c_void,
22545    pub priority_count: u32,
22546    pub priorities: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE],
22547}
22548
22549impl Default for QueueFamilyGlobalPriorityProperties {
22550    #[inline]
22551    fn default() -> Self {
22552        Self {
22553            s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,
22554            next: ptr::null_mut(),
22555            priority_count: u32::default(),
22556            priorities: [QueueGlobalPriority::default(); MAX_GLOBAL_PRIORITY_SIZE],
22557        }
22558    }
22559}
22560
22561/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyOwnershipTransferPropertiesKHR.html>
22562#[repr(C)]
22563#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22564pub struct QueueFamilyOwnershipTransferPropertiesKHR {
22565    pub s_type: StructureType,
22566    pub next: *mut c_void,
22567    pub optimal_image_transfer_to_queue_families: u32,
22568}
22569
22570impl Default for QueueFamilyOwnershipTransferPropertiesKHR {
22571    #[inline]
22572    fn default() -> Self {
22573        Self {
22574            s_type: StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR,
22575            next: ptr::null_mut(),
22576            optimal_image_transfer_to_queue_families: u32::default(),
22577        }
22578    }
22579}
22580
22581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html>
22582#[repr(C)]
22583#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22584pub struct QueueFamilyProperties {
22585    pub queue_flags: QueueFlags,
22586    pub queue_count: u32,
22587    pub timestamp_valid_bits: u32,
22588    pub min_image_transfer_granularity: Extent3D,
22589}
22590
22591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html>
22592#[repr(C)]
22593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22594pub struct QueueFamilyProperties2 {
22595    pub s_type: StructureType,
22596    pub next: *mut c_void,
22597    pub queue_family_properties: QueueFamilyProperties,
22598}
22599
22600impl Default for QueueFamilyProperties2 {
22601    #[inline]
22602    fn default() -> Self {
22603        Self {
22604            s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
22605            next: ptr::null_mut(),
22606            queue_family_properties: QueueFamilyProperties::default(),
22607        }
22608    }
22609}
22610
22611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html>
22612#[repr(C)]
22613#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22614pub struct QueueFamilyQueryResultStatusPropertiesKHR {
22615    pub s_type: StructureType,
22616    pub next: *mut c_void,
22617    pub query_result_status_support: Bool32,
22618}
22619
22620impl Default for QueueFamilyQueryResultStatusPropertiesKHR {
22621    #[inline]
22622    fn default() -> Self {
22623        Self {
22624            s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR,
22625            next: ptr::null_mut(),
22626            query_result_status_support: Bool32::default(),
22627        }
22628    }
22629}
22630
22631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html>
22632#[repr(C)]
22633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22634pub struct QueueFamilyVideoPropertiesKHR {
22635    pub s_type: StructureType,
22636    pub next: *mut c_void,
22637    pub video_codec_operations: VideoCodecOperationFlagsKHR,
22638}
22639
22640impl Default for QueueFamilyVideoPropertiesKHR {
22641    #[inline]
22642    fn default() -> Self {
22643        Self {
22644            s_type: StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR,
22645            next: ptr::null_mut(),
22646            video_codec_operations: VideoCodecOperationFlagsKHR::default(),
22647        }
22648    }
22649}
22650
22651/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html>
22652#[repr(C)]
22653#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22654pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
22655    pub s_type: StructureType,
22656    pub next: *mut c_void,
22657    pub allow_cluster_acceleration_structure: Bool32,
22658}
22659
22660impl Default for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
22661    #[inline]
22662    fn default() -> Self {
22663        Self {
22664            s_type:
22665                StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
22666            next: ptr::null_mut(),
22667            allow_cluster_acceleration_structure: Bool32::default(),
22668        }
22669    }
22670}
22671
22672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html>
22673#[repr(C)]
22674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22675pub struct RayTracingPipelineCreateInfoKHR {
22676    pub s_type: StructureType,
22677    pub next: *const c_void,
22678    pub flags: PipelineCreateFlags,
22679    pub stage_count: u32,
22680    pub stages: *const PipelineShaderStageCreateInfo,
22681    pub group_count: u32,
22682    pub groups: *const RayTracingShaderGroupCreateInfoKHR,
22683    pub max_pipeline_ray_recursion_depth: u32,
22684    pub library_info: *const PipelineLibraryCreateInfoKHR,
22685    pub library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
22686    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
22687    pub layout: PipelineLayout,
22688    pub base_pipeline_handle: Pipeline,
22689    pub base_pipeline_index: i32,
22690}
22691
22692impl Default for RayTracingPipelineCreateInfoKHR {
22693    #[inline]
22694    fn default() -> Self {
22695        Self {
22696            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
22697            next: ptr::null(),
22698            flags: PipelineCreateFlags::default(),
22699            stage_count: u32::default(),
22700            stages: ptr::null(),
22701            group_count: u32::default(),
22702            groups: ptr::null(),
22703            max_pipeline_ray_recursion_depth: u32::default(),
22704            library_info: ptr::null(),
22705            library_interface: ptr::null(),
22706            dynamic_state: ptr::null(),
22707            layout: PipelineLayout::default(),
22708            base_pipeline_handle: Pipeline::default(),
22709            base_pipeline_index: i32::default(),
22710        }
22711    }
22712}
22713
22714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html>
22715#[repr(C)]
22716#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22717pub struct RayTracingPipelineCreateInfoNV {
22718    pub s_type: StructureType,
22719    pub next: *const c_void,
22720    pub flags: PipelineCreateFlags,
22721    pub stage_count: u32,
22722    pub stages: *const PipelineShaderStageCreateInfo,
22723    pub group_count: u32,
22724    pub groups: *const RayTracingShaderGroupCreateInfoNV,
22725    pub max_recursion_depth: u32,
22726    pub layout: PipelineLayout,
22727    pub base_pipeline_handle: Pipeline,
22728    pub base_pipeline_index: i32,
22729}
22730
22731impl Default for RayTracingPipelineCreateInfoNV {
22732    #[inline]
22733    fn default() -> Self {
22734        Self {
22735            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
22736            next: ptr::null(),
22737            flags: PipelineCreateFlags::default(),
22738            stage_count: u32::default(),
22739            stages: ptr::null(),
22740            group_count: u32::default(),
22741            groups: ptr::null(),
22742            max_recursion_depth: u32::default(),
22743            layout: PipelineLayout::default(),
22744            base_pipeline_handle: Pipeline::default(),
22745            base_pipeline_index: i32::default(),
22746        }
22747    }
22748}
22749
22750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>
22751#[repr(C)]
22752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22753pub struct RayTracingPipelineInterfaceCreateInfoKHR {
22754    pub s_type: StructureType,
22755    pub next: *const c_void,
22756    pub max_pipeline_ray_payload_size: u32,
22757    pub max_pipeline_ray_hit_attribute_size: u32,
22758}
22759
22760impl Default for RayTracingPipelineInterfaceCreateInfoKHR {
22761    #[inline]
22762    fn default() -> Self {
22763        Self {
22764            s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
22765            next: ptr::null(),
22766            max_pipeline_ray_payload_size: u32::default(),
22767            max_pipeline_ray_hit_attribute_size: u32::default(),
22768        }
22769    }
22770}
22771
22772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>
22773#[repr(C)]
22774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22775pub struct RayTracingShaderGroupCreateInfoKHR {
22776    pub s_type: StructureType,
22777    pub next: *const c_void,
22778    pub type_: RayTracingShaderGroupTypeKHR,
22779    pub general_shader: u32,
22780    pub closest_hit_shader: u32,
22781    pub any_hit_shader: u32,
22782    pub intersection_shader: u32,
22783    pub shader_group_capture_replay_handle: *const c_void,
22784}
22785
22786impl Default for RayTracingShaderGroupCreateInfoKHR {
22787    #[inline]
22788    fn default() -> Self {
22789        Self {
22790            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
22791            next: ptr::null(),
22792            type_: RayTracingShaderGroupTypeKHR::default(),
22793            general_shader: u32::default(),
22794            closest_hit_shader: u32::default(),
22795            any_hit_shader: u32::default(),
22796            intersection_shader: u32::default(),
22797            shader_group_capture_replay_handle: ptr::null(),
22798        }
22799    }
22800}
22801
22802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html>
22803#[repr(C)]
22804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22805pub struct RayTracingShaderGroupCreateInfoNV {
22806    pub s_type: StructureType,
22807    pub next: *const c_void,
22808    pub type_: RayTracingShaderGroupTypeKHR,
22809    pub general_shader: u32,
22810    pub closest_hit_shader: u32,
22811    pub any_hit_shader: u32,
22812    pub intersection_shader: u32,
22813}
22814
22815impl Default for RayTracingShaderGroupCreateInfoNV {
22816    #[inline]
22817    fn default() -> Self {
22818        Self {
22819            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
22820            next: ptr::null(),
22821            type_: RayTracingShaderGroupTypeKHR::default(),
22822            general_shader: u32::default(),
22823            closest_hit_shader: u32::default(),
22824            any_hit_shader: u32::default(),
22825            intersection_shader: u32::default(),
22826        }
22827    }
22828}
22829
22830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRect2D.html>
22831#[repr(C)]
22832#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22833pub struct Rect2D {
22834    pub offset: Offset2D,
22835    pub extent: Extent2D,
22836}
22837
22838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRectLayerKHR.html>
22839#[repr(C)]
22840#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22841pub struct RectLayerKHR {
22842    pub offset: Offset2D,
22843    pub extent: Extent2D,
22844    pub layer: u32,
22845}
22846
22847/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html>
22848#[repr(C)]
22849#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22850pub struct RefreshCycleDurationGOOGLE {
22851    pub refresh_duration: u64,
22852}
22853
22854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectKHR.html>
22855#[repr(C)]
22856#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22857pub struct RefreshObjectKHR {
22858    pub object_type: ObjectType,
22859    pub object_handle: u64,
22860    pub flags: RefreshObjectFlagsKHR,
22861}
22862
22863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectListKHR.html>
22864#[repr(C)]
22865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22866pub struct RefreshObjectListKHR {
22867    pub s_type: StructureType,
22868    pub next: *const c_void,
22869    pub object_count: u32,
22870    pub objects: *const RefreshObjectKHR,
22871}
22872
22873impl Default for RefreshObjectListKHR {
22874    #[inline]
22875    fn default() -> Self {
22876        Self {
22877            s_type: StructureType::REFRESH_OBJECT_LIST_KHR,
22878            next: ptr::null(),
22879            object_count: u32::default(),
22880            objects: ptr::null(),
22881        }
22882    }
22883}
22884
22885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html>
22886#[repr(C)]
22887#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22888pub struct ReleaseCapturedPipelineDataInfoKHR {
22889    pub s_type: StructureType,
22890    pub next: *mut c_void,
22891    pub pipeline: Pipeline,
22892}
22893
22894impl Default for ReleaseCapturedPipelineDataInfoKHR {
22895    #[inline]
22896    fn default() -> Self {
22897        Self {
22898            s_type: StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR,
22899            next: ptr::null_mut(),
22900            pipeline: Pipeline::default(),
22901        }
22902    }
22903}
22904
22905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoKHR.html>
22906#[repr(C)]
22907#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22908pub struct ReleaseSwapchainImagesInfoKHR {
22909    pub s_type: StructureType,
22910    pub next: *const c_void,
22911    pub swapchain: SwapchainKHR,
22912    pub image_index_count: u32,
22913    pub image_indices: *const u32,
22914}
22915
22916impl Default for ReleaseSwapchainImagesInfoKHR {
22917    #[inline]
22918    fn default() -> Self {
22919        Self {
22920            s_type: StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR,
22921            next: ptr::null(),
22922            swapchain: SwapchainKHR::default(),
22923            image_index_count: u32::default(),
22924            image_indices: ptr::null(),
22925        }
22926    }
22927}
22928
22929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html>
22930#[repr(C)]
22931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22932pub struct RenderPassAttachmentBeginInfo {
22933    pub s_type: StructureType,
22934    pub next: *const c_void,
22935    pub attachment_count: u32,
22936    pub attachments: *const ImageView,
22937}
22938
22939impl Default for RenderPassAttachmentBeginInfo {
22940    #[inline]
22941    fn default() -> Self {
22942        Self {
22943            s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
22944            next: ptr::null(),
22945            attachment_count: u32::default(),
22946            attachments: ptr::null(),
22947        }
22948    }
22949}
22950
22951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html>
22952#[repr(C)]
22953#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22954pub struct RenderPassBeginInfo {
22955    pub s_type: StructureType,
22956    pub next: *const c_void,
22957    pub render_pass: RenderPass,
22958    pub framebuffer: Framebuffer,
22959    pub render_area: Rect2D,
22960    pub clear_value_count: u32,
22961    pub clear_values: *const ClearValue,
22962}
22963
22964impl Default for RenderPassBeginInfo {
22965    #[inline]
22966    fn default() -> Self {
22967        Self {
22968            s_type: StructureType::RENDER_PASS_BEGIN_INFO,
22969            next: ptr::null(),
22970            render_pass: RenderPass::default(),
22971            framebuffer: Framebuffer::default(),
22972            render_area: Rect2D::default(),
22973            clear_value_count: u32::default(),
22974            clear_values: ptr::null(),
22975        }
22976    }
22977}
22978
22979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html>
22980#[repr(C)]
22981#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22982pub struct RenderPassCreateInfo {
22983    pub s_type: StructureType,
22984    pub next: *const c_void,
22985    pub flags: RenderPassCreateFlags,
22986    pub attachment_count: u32,
22987    pub attachments: *const AttachmentDescription,
22988    pub subpass_count: u32,
22989    pub subpasses: *const SubpassDescription,
22990    pub dependency_count: u32,
22991    pub dependencies: *const SubpassDependency,
22992}
22993
22994impl Default for RenderPassCreateInfo {
22995    #[inline]
22996    fn default() -> Self {
22997        Self {
22998            s_type: StructureType::RENDER_PASS_CREATE_INFO,
22999            next: ptr::null(),
23000            flags: RenderPassCreateFlags::default(),
23001            attachment_count: u32::default(),
23002            attachments: ptr::null(),
23003            subpass_count: u32::default(),
23004            subpasses: ptr::null(),
23005            dependency_count: u32::default(),
23006            dependencies: ptr::null(),
23007        }
23008    }
23009}
23010
23011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html>
23012#[repr(C)]
23013#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23014pub struct RenderPassCreateInfo2 {
23015    pub s_type: StructureType,
23016    pub next: *const c_void,
23017    pub flags: RenderPassCreateFlags,
23018    pub attachment_count: u32,
23019    pub attachments: *const AttachmentDescription2,
23020    pub subpass_count: u32,
23021    pub subpasses: *const SubpassDescription2,
23022    pub dependency_count: u32,
23023    pub dependencies: *const SubpassDependency2,
23024    pub correlated_view_mask_count: u32,
23025    pub correlated_view_masks: *const u32,
23026}
23027
23028impl Default for RenderPassCreateInfo2 {
23029    #[inline]
23030    fn default() -> Self {
23031        Self {
23032            s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
23033            next: ptr::null(),
23034            flags: RenderPassCreateFlags::default(),
23035            attachment_count: u32::default(),
23036            attachments: ptr::null(),
23037            subpass_count: u32::default(),
23038            subpasses: ptr::null(),
23039            dependency_count: u32::default(),
23040            dependencies: ptr::null(),
23041            correlated_view_mask_count: u32::default(),
23042            correlated_view_masks: ptr::null(),
23043        }
23044    }
23045}
23046
23047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html>
23048#[repr(C)]
23049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23050pub struct RenderPassCreationControlEXT {
23051    pub s_type: StructureType,
23052    pub next: *const c_void,
23053    pub disallow_merging: Bool32,
23054}
23055
23056impl Default for RenderPassCreationControlEXT {
23057    #[inline]
23058    fn default() -> Self {
23059        Self {
23060            s_type: StructureType::RENDER_PASS_CREATION_CONTROL_EXT,
23061            next: ptr::null(),
23062            disallow_merging: Bool32::default(),
23063        }
23064    }
23065}
23066
23067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html>
23068#[repr(C)]
23069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23070pub struct RenderPassCreationFeedbackCreateInfoEXT {
23071    pub s_type: StructureType,
23072    pub next: *const c_void,
23073    pub render_pass_feedback: *mut RenderPassCreationFeedbackInfoEXT,
23074}
23075
23076impl Default for RenderPassCreationFeedbackCreateInfoEXT {
23077    #[inline]
23078    fn default() -> Self {
23079        Self {
23080            s_type: StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT,
23081            next: ptr::null(),
23082            render_pass_feedback: ptr::null_mut(),
23083        }
23084    }
23085}
23086
23087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html>
23088#[repr(C)]
23089#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23090pub struct RenderPassCreationFeedbackInfoEXT {
23091    pub post_merge_subpass_count: u32,
23092}
23093
23094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>
23095#[repr(C)]
23096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23097pub struct RenderPassFragmentDensityMapCreateInfoEXT {
23098    pub s_type: StructureType,
23099    pub next: *const c_void,
23100    pub fragment_density_map_attachment: AttachmentReference,
23101}
23102
23103impl Default for RenderPassFragmentDensityMapCreateInfoEXT {
23104    #[inline]
23105    fn default() -> Self {
23106        Self {
23107            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
23108            next: ptr::null(),
23109            fragment_density_map_attachment: AttachmentReference::default(),
23110        }
23111    }
23112}
23113
23114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapOffsetEndInfoEXT.html>
23115#[repr(C)]
23116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23117pub struct RenderPassFragmentDensityMapOffsetEndInfoEXT {
23118    pub s_type: StructureType,
23119    pub next: *const c_void,
23120    pub fragment_density_offset_count: u32,
23121    pub fragment_density_offsets: *const Offset2D,
23122}
23123
23124impl Default for RenderPassFragmentDensityMapOffsetEndInfoEXT {
23125    #[inline]
23126    fn default() -> Self {
23127        Self {
23128            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,
23129            next: ptr::null(),
23130            fragment_density_offset_count: u32::default(),
23131            fragment_density_offsets: ptr::null(),
23132        }
23133    }
23134}
23135
23136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>
23137#[repr(C)]
23138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23139pub struct RenderPassInputAttachmentAspectCreateInfo {
23140    pub s_type: StructureType,
23141    pub next: *const c_void,
23142    pub aspect_reference_count: u32,
23143    pub aspect_references: *const InputAttachmentAspectReference,
23144}
23145
23146impl Default for RenderPassInputAttachmentAspectCreateInfo {
23147    #[inline]
23148    fn default() -> Self {
23149        Self {
23150            s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
23151            next: ptr::null(),
23152            aspect_reference_count: u32::default(),
23153            aspect_references: ptr::null(),
23154        }
23155    }
23156}
23157
23158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html>
23159#[repr(C)]
23160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23161pub struct RenderPassMultiviewCreateInfo {
23162    pub s_type: StructureType,
23163    pub next: *const c_void,
23164    pub subpass_count: u32,
23165    pub view_masks: *const u32,
23166    pub dependency_count: u32,
23167    pub view_offsets: *const i32,
23168    pub correlation_mask_count: u32,
23169    pub correlation_masks: *const u32,
23170}
23171
23172impl Default for RenderPassMultiviewCreateInfo {
23173    #[inline]
23174    fn default() -> Self {
23175        Self {
23176            s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
23177            next: ptr::null(),
23178            subpass_count: u32::default(),
23179            view_masks: ptr::null(),
23180            dependency_count: u32::default(),
23181            view_offsets: ptr::null(),
23182            correlation_mask_count: u32::default(),
23183            correlation_masks: ptr::null(),
23184        }
23185    }
23186}
23187
23188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>
23189#[repr(C)]
23190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23191pub struct RenderPassSampleLocationsBeginInfoEXT {
23192    pub s_type: StructureType,
23193    pub next: *const c_void,
23194    pub attachment_initial_sample_locations_count: u32,
23195    pub attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
23196    pub post_subpass_sample_locations_count: u32,
23197    pub post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
23198}
23199
23200impl Default for RenderPassSampleLocationsBeginInfoEXT {
23201    #[inline]
23202    fn default() -> Self {
23203        Self {
23204            s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
23205            next: ptr::null(),
23206            attachment_initial_sample_locations_count: u32::default(),
23207            attachment_initial_sample_locations: ptr::null(),
23208            post_subpass_sample_locations_count: u32::default(),
23209            post_subpass_sample_locations: ptr::null(),
23210        }
23211    }
23212}
23213
23214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html>
23215#[repr(C)]
23216#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23217pub struct RenderPassStripeBeginInfoARM {
23218    pub s_type: StructureType,
23219    pub next: *const c_void,
23220    pub stripe_info_count: u32,
23221    pub stripe_infos: *const RenderPassStripeInfoARM,
23222}
23223
23224impl Default for RenderPassStripeBeginInfoARM {
23225    #[inline]
23226    fn default() -> Self {
23227        Self {
23228            s_type: StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
23229            next: ptr::null(),
23230            stripe_info_count: u32::default(),
23231            stripe_infos: ptr::null(),
23232        }
23233    }
23234}
23235
23236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html>
23237#[repr(C)]
23238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23239pub struct RenderPassStripeInfoARM {
23240    pub s_type: StructureType,
23241    pub next: *const c_void,
23242    pub stripe_area: Rect2D,
23243}
23244
23245impl Default for RenderPassStripeInfoARM {
23246    #[inline]
23247    fn default() -> Self {
23248        Self {
23249            s_type: StructureType::RENDER_PASS_STRIPE_INFO_ARM,
23250            next: ptr::null(),
23251            stripe_area: Rect2D::default(),
23252        }
23253    }
23254}
23255
23256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html>
23257#[repr(C)]
23258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23259pub struct RenderPassStripeSubmitInfoARM {
23260    pub s_type: StructureType,
23261    pub next: *const c_void,
23262    pub stripe_semaphore_info_count: u32,
23263    pub stripe_semaphore_infos: *const SemaphoreSubmitInfo,
23264}
23265
23266impl Default for RenderPassStripeSubmitInfoARM {
23267    #[inline]
23268    fn default() -> Self {
23269        Self {
23270            s_type: StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
23271            next: ptr::null(),
23272            stripe_semaphore_info_count: u32::default(),
23273            stripe_semaphore_infos: ptr::null(),
23274        }
23275    }
23276}
23277
23278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html>
23279#[repr(C)]
23280#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23281pub struct RenderPassSubpassFeedbackCreateInfoEXT {
23282    pub s_type: StructureType,
23283    pub next: *const c_void,
23284    pub subpass_feedback: *mut RenderPassSubpassFeedbackInfoEXT,
23285}
23286
23287impl Default for RenderPassSubpassFeedbackCreateInfoEXT {
23288    #[inline]
23289    fn default() -> Self {
23290        Self {
23291            s_type: StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT,
23292            next: ptr::null(),
23293            subpass_feedback: ptr::null_mut(),
23294        }
23295    }
23296}
23297
23298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html>
23299#[repr(C)]
23300#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23301pub struct RenderPassSubpassFeedbackInfoEXT {
23302    pub subpass_merge_status: SubpassMergeStatusEXT,
23303    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
23304    pub post_merge_index: u32,
23305}
23306
23307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTileShadingCreateInfoQCOM.html>
23308#[repr(C)]
23309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23310pub struct RenderPassTileShadingCreateInfoQCOM {
23311    pub s_type: StructureType,
23312    pub next: *const c_void,
23313    pub flags: TileShadingRenderPassFlagsQCOM,
23314    pub tile_apron_size: Extent2D,
23315}
23316
23317impl Default for RenderPassTileShadingCreateInfoQCOM {
23318    #[inline]
23319    fn default() -> Self {
23320        Self {
23321            s_type: StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM,
23322            next: ptr::null(),
23323            flags: TileShadingRenderPassFlagsQCOM::default(),
23324            tile_apron_size: Extent2D::default(),
23325        }
23326    }
23327}
23328
23329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html>
23330#[repr(C)]
23331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23332pub struct RenderPassTransformBeginInfoQCOM {
23333    pub s_type: StructureType,
23334    pub next: *const c_void,
23335    pub transform: SurfaceTransformFlagsKHR,
23336}
23337
23338impl Default for RenderPassTransformBeginInfoQCOM {
23339    #[inline]
23340    fn default() -> Self {
23341        Self {
23342            s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
23343            next: ptr::null(),
23344            transform: SurfaceTransformFlagsKHR::default(),
23345        }
23346    }
23347}
23348
23349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html>
23350#[repr(C)]
23351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23352pub struct RenderingAreaInfo {
23353    pub s_type: StructureType,
23354    pub next: *const c_void,
23355    pub view_mask: u32,
23356    pub color_attachment_count: u32,
23357    pub color_attachment_formats: *const Format,
23358    pub depth_attachment_format: Format,
23359    pub stencil_attachment_format: Format,
23360}
23361
23362impl Default for RenderingAreaInfo {
23363    #[inline]
23364    fn default() -> Self {
23365        Self {
23366            s_type: StructureType::RENDERING_AREA_INFO,
23367            next: ptr::null(),
23368            view_mask: u32::default(),
23369            color_attachment_count: u32::default(),
23370            color_attachment_formats: ptr::null(),
23371            depth_attachment_format: Format::default(),
23372            stencil_attachment_format: Format::default(),
23373        }
23374    }
23375}
23376
23377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html>
23378#[repr(C)]
23379#[derive(Copy, Clone, Debug)]
23380pub struct RenderingAttachmentInfo {
23381    pub s_type: StructureType,
23382    pub next: *const c_void,
23383    pub image_view: ImageView,
23384    pub image_layout: ImageLayout,
23385    pub resolve_mode: ResolveModeFlags,
23386    pub resolve_image_view: ImageView,
23387    pub resolve_image_layout: ImageLayout,
23388    pub load_op: AttachmentLoadOp,
23389    pub store_op: AttachmentStoreOp,
23390    pub clear_value: ClearValue,
23391}
23392
23393impl Default for RenderingAttachmentInfo {
23394    #[inline]
23395    fn default() -> Self {
23396        Self {
23397            s_type: StructureType::RENDERING_ATTACHMENT_INFO,
23398            next: ptr::null(),
23399            image_view: ImageView::default(),
23400            image_layout: ImageLayout::default(),
23401            resolve_mode: ResolveModeFlags::default(),
23402            resolve_image_view: ImageView::default(),
23403            resolve_image_layout: ImageLayout::default(),
23404            load_op: AttachmentLoadOp::default(),
23405            store_op: AttachmentStoreOp::default(),
23406            clear_value: ClearValue::default(),
23407        }
23408    }
23409}
23410
23411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html>
23412#[repr(C)]
23413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23414pub struct RenderingAttachmentLocationInfo {
23415    pub s_type: StructureType,
23416    pub next: *const c_void,
23417    pub color_attachment_count: u32,
23418    pub color_attachment_locations: *const u32,
23419}
23420
23421impl Default for RenderingAttachmentLocationInfo {
23422    #[inline]
23423    fn default() -> Self {
23424        Self {
23425            s_type: StructureType::RENDERING_ATTACHMENT_LOCATION_INFO,
23426            next: ptr::null(),
23427            color_attachment_count: u32::default(),
23428            color_attachment_locations: ptr::null(),
23429        }
23430    }
23431}
23432
23433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoEXT.html>
23434#[repr(C)]
23435#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23436pub struct RenderingEndInfoEXT {
23437    pub s_type: StructureType,
23438    pub next: *const c_void,
23439}
23440
23441impl Default for RenderingEndInfoEXT {
23442    #[inline]
23443    fn default() -> Self {
23444        Self {
23445            s_type: StructureType::RENDERING_END_INFO_EXT,
23446            next: ptr::null(),
23447        }
23448    }
23449}
23450
23451/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>
23452#[repr(C)]
23453#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23454pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
23455    pub s_type: StructureType,
23456    pub next: *const c_void,
23457    pub image_view: ImageView,
23458    pub image_layout: ImageLayout,
23459}
23460
23461impl Default for RenderingFragmentDensityMapAttachmentInfoEXT {
23462    #[inline]
23463    fn default() -> Self {
23464        Self {
23465            s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
23466            next: ptr::null(),
23467            image_view: ImageView::default(),
23468            image_layout: ImageLayout::default(),
23469        }
23470    }
23471}
23472
23473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>
23474#[repr(C)]
23475#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23476pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
23477    pub s_type: StructureType,
23478    pub next: *const c_void,
23479    pub image_view: ImageView,
23480    pub image_layout: ImageLayout,
23481    pub shading_rate_attachment_texel_size: Extent2D,
23482}
23483
23484impl Default for RenderingFragmentShadingRateAttachmentInfoKHR {
23485    #[inline]
23486    fn default() -> Self {
23487        Self {
23488            s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
23489            next: ptr::null(),
23490            image_view: ImageView::default(),
23491            image_layout: ImageLayout::default(),
23492            shading_rate_attachment_texel_size: Extent2D::default(),
23493        }
23494    }
23495}
23496
23497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfo.html>
23498#[repr(C)]
23499#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23500pub struct RenderingInfo {
23501    pub s_type: StructureType,
23502    pub next: *const c_void,
23503    pub flags: RenderingFlags,
23504    pub render_area: Rect2D,
23505    pub layer_count: u32,
23506    pub view_mask: u32,
23507    pub color_attachment_count: u32,
23508    pub color_attachments: *const RenderingAttachmentInfo,
23509    pub depth_attachment: *const RenderingAttachmentInfo,
23510    pub stencil_attachment: *const RenderingAttachmentInfo,
23511}
23512
23513impl Default for RenderingInfo {
23514    #[inline]
23515    fn default() -> Self {
23516        Self {
23517            s_type: StructureType::RENDERING_INFO,
23518            next: ptr::null(),
23519            flags: RenderingFlags::default(),
23520            render_area: Rect2D::default(),
23521            layer_count: u32::default(),
23522            view_mask: u32::default(),
23523            color_attachment_count: u32::default(),
23524            color_attachments: ptr::null(),
23525            depth_attachment: ptr::null(),
23526            stencil_attachment: ptr::null(),
23527        }
23528    }
23529}
23530
23531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html>
23532#[repr(C)]
23533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23534pub struct RenderingInputAttachmentIndexInfo {
23535    pub s_type: StructureType,
23536    pub next: *const c_void,
23537    pub color_attachment_count: u32,
23538    pub color_attachment_input_indices: *const u32,
23539    pub depth_input_attachment_index: *const u32,
23540    pub stencil_input_attachment_index: *const u32,
23541}
23542
23543impl Default for RenderingInputAttachmentIndexInfo {
23544    #[inline]
23545    fn default() -> Self {
23546        Self {
23547            s_type: StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO,
23548            next: ptr::null(),
23549            color_attachment_count: u32::default(),
23550            color_attachment_input_indices: ptr::null(),
23551            depth_input_attachment_index: ptr::null(),
23552            stencil_input_attachment_index: ptr::null(),
23553        }
23554    }
23555}
23556
23557/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2.html>
23558#[repr(C)]
23559#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23560pub struct ResolveImageInfo2 {
23561    pub s_type: StructureType,
23562    pub next: *const c_void,
23563    pub src_image: Image,
23564    pub src_image_layout: ImageLayout,
23565    pub dst_image: Image,
23566    pub dst_image_layout: ImageLayout,
23567    pub region_count: u32,
23568    pub regions: *const ImageResolve2,
23569}
23570
23571impl Default for ResolveImageInfo2 {
23572    #[inline]
23573    fn default() -> Self {
23574        Self {
23575            s_type: StructureType::RESOLVE_IMAGE_INFO_2,
23576            next: ptr::null(),
23577            src_image: Image::default(),
23578            src_image_layout: ImageLayout::default(),
23579            dst_image: Image::default(),
23580            dst_image_layout: ImageLayout::default(),
23581            region_count: u32::default(),
23582            regions: ptr::null(),
23583        }
23584    }
23585}
23586
23587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSRTDataNV.html>
23588#[repr(C)]
23589#[derive(Copy, Clone, Default, Debug, PartialEq)]
23590pub struct SRTDataNV {
23591    pub sx: f32,
23592    pub a: f32,
23593    pub b: f32,
23594    pub pvx: f32,
23595    pub sy: f32,
23596    pub c: f32,
23597    pub pvy: f32,
23598    pub sz: f32,
23599    pub pvz: f32,
23600    pub qx: f32,
23601    pub qy: f32,
23602    pub qz: f32,
23603    pub qw: f32,
23604    pub tx: f32,
23605    pub ty: f32,
23606    pub tz: f32,
23607}
23608
23609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationEXT.html>
23610#[repr(C)]
23611#[derive(Copy, Clone, Default, Debug, PartialEq)]
23612pub struct SampleLocationEXT {
23613    pub x: f32,
23614    pub y: f32,
23615}
23616
23617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html>
23618#[repr(C)]
23619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23620pub struct SampleLocationsInfoEXT {
23621    pub s_type: StructureType,
23622    pub next: *const c_void,
23623    pub sample_locations_per_pixel: SampleCountFlags,
23624    pub sample_location_grid_size: Extent2D,
23625    pub sample_locations_count: u32,
23626    pub sample_locations: *const SampleLocationEXT,
23627}
23628
23629impl Default for SampleLocationsInfoEXT {
23630    #[inline]
23631    fn default() -> Self {
23632        Self {
23633            s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
23634            next: ptr::null(),
23635            sample_locations_per_pixel: SampleCountFlags::default(),
23636            sample_location_grid_size: Extent2D::default(),
23637            sample_locations_count: u32::default(),
23638            sample_locations: ptr::null(),
23639        }
23640    }
23641}
23642
23643/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html>
23644#[repr(C)]
23645#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23646pub struct SamplerBlockMatchWindowCreateInfoQCOM {
23647    pub s_type: StructureType,
23648    pub next: *const c_void,
23649    pub window_extent: Extent2D,
23650    pub window_compare_mode: BlockMatchWindowCompareModeQCOM,
23651}
23652
23653impl Default for SamplerBlockMatchWindowCreateInfoQCOM {
23654    #[inline]
23655    fn default() -> Self {
23656        Self {
23657            s_type: StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM,
23658            next: ptr::null(),
23659            window_extent: Extent2D::default(),
23660            window_compare_mode: BlockMatchWindowCompareModeQCOM::default(),
23661        }
23662    }
23663}
23664
23665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>
23666#[repr(C)]
23667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23668pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
23669    pub s_type: StructureType,
23670    pub next: *const c_void,
23671    pub components: ComponentMapping,
23672    pub srgb: Bool32,
23673}
23674
23675impl Default for SamplerBorderColorComponentMappingCreateInfoEXT {
23676    #[inline]
23677    fn default() -> Self {
23678        Self {
23679            s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
23680            next: ptr::null(),
23681            components: ComponentMapping::default(),
23682            srgb: Bool32::default(),
23683        }
23684    }
23685}
23686
23687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html>
23688#[repr(C)]
23689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23690pub struct SamplerCaptureDescriptorDataInfoEXT {
23691    pub s_type: StructureType,
23692    pub next: *const c_void,
23693    pub sampler: Sampler,
23694}
23695
23696impl Default for SamplerCaptureDescriptorDataInfoEXT {
23697    #[inline]
23698    fn default() -> Self {
23699        Self {
23700            s_type: StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
23701            next: ptr::null(),
23702            sampler: Sampler::default(),
23703        }
23704    }
23705}
23706
23707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html>
23708#[repr(C)]
23709#[derive(Copy, Clone, Debug, PartialEq)]
23710pub struct SamplerCreateInfo {
23711    pub s_type: StructureType,
23712    pub next: *const c_void,
23713    pub flags: SamplerCreateFlags,
23714    pub mag_filter: Filter,
23715    pub min_filter: Filter,
23716    pub mipmap_mode: SamplerMipmapMode,
23717    pub address_mode_u: SamplerAddressMode,
23718    pub address_mode_v: SamplerAddressMode,
23719    pub address_mode_w: SamplerAddressMode,
23720    pub mip_lod_bias: f32,
23721    pub anisotropy_enable: Bool32,
23722    pub max_anisotropy: f32,
23723    pub compare_enable: Bool32,
23724    pub compare_op: CompareOp,
23725    pub min_lod: f32,
23726    pub max_lod: f32,
23727    pub border_color: BorderColor,
23728    pub unnormalized_coordinates: Bool32,
23729}
23730
23731impl Default for SamplerCreateInfo {
23732    #[inline]
23733    fn default() -> Self {
23734        Self {
23735            s_type: StructureType::SAMPLER_CREATE_INFO,
23736            next: ptr::null(),
23737            flags: SamplerCreateFlags::default(),
23738            mag_filter: Filter::default(),
23739            min_filter: Filter::default(),
23740            mipmap_mode: SamplerMipmapMode::default(),
23741            address_mode_u: SamplerAddressMode::default(),
23742            address_mode_v: SamplerAddressMode::default(),
23743            address_mode_w: SamplerAddressMode::default(),
23744            mip_lod_bias: f32::default(),
23745            anisotropy_enable: Bool32::default(),
23746            max_anisotropy: f32::default(),
23747            compare_enable: Bool32::default(),
23748            compare_op: CompareOp::default(),
23749            min_lod: f32::default(),
23750            max_lod: f32::default(),
23751            border_color: BorderColor::default(),
23752            unnormalized_coordinates: Bool32::default(),
23753        }
23754    }
23755}
23756
23757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html>
23758#[repr(C)]
23759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23760pub struct SamplerCubicWeightsCreateInfoQCOM {
23761    pub s_type: StructureType,
23762    pub next: *const c_void,
23763    pub cubic_weights: CubicFilterWeightsQCOM,
23764}
23765
23766impl Default for SamplerCubicWeightsCreateInfoQCOM {
23767    #[inline]
23768    fn default() -> Self {
23769        Self {
23770            s_type: StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM,
23771            next: ptr::null(),
23772            cubic_weights: CubicFilterWeightsQCOM::default(),
23773        }
23774    }
23775}
23776
23777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>
23778#[repr(C)]
23779#[derive(Copy, Clone, Debug)]
23780pub struct SamplerCustomBorderColorCreateInfoEXT {
23781    pub s_type: StructureType,
23782    pub next: *const c_void,
23783    pub custom_border_color: ClearColorValue,
23784    pub format: Format,
23785}
23786
23787impl Default for SamplerCustomBorderColorCreateInfoEXT {
23788    #[inline]
23789    fn default() -> Self {
23790        Self {
23791            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
23792            next: ptr::null(),
23793            custom_border_color: ClearColorValue::default(),
23794            format: Format::default(),
23795        }
23796    }
23797}
23798
23799/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html>
23800#[repr(C)]
23801#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23802pub struct SamplerReductionModeCreateInfo {
23803    pub s_type: StructureType,
23804    pub next: *const c_void,
23805    pub reduction_mode: SamplerReductionMode,
23806}
23807
23808impl Default for SamplerReductionModeCreateInfo {
23809    #[inline]
23810    fn default() -> Self {
23811        Self {
23812            s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
23813            next: ptr::null(),
23814            reduction_mode: SamplerReductionMode::default(),
23815        }
23816    }
23817}
23818
23819/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html>
23820#[repr(C)]
23821#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23822pub struct SamplerYcbcrConversionCreateInfo {
23823    pub s_type: StructureType,
23824    pub next: *const c_void,
23825    pub format: Format,
23826    pub ycbcr_model: SamplerYcbcrModelConversion,
23827    pub ycbcr_range: SamplerYcbcrRange,
23828    pub components: ComponentMapping,
23829    pub x_chroma_offset: ChromaLocation,
23830    pub y_chroma_offset: ChromaLocation,
23831    pub chroma_filter: Filter,
23832    pub force_explicit_reconstruction: Bool32,
23833}
23834
23835impl Default for SamplerYcbcrConversionCreateInfo {
23836    #[inline]
23837    fn default() -> Self {
23838        Self {
23839            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
23840            next: ptr::null(),
23841            format: Format::default(),
23842            ycbcr_model: SamplerYcbcrModelConversion::default(),
23843            ycbcr_range: SamplerYcbcrRange::default(),
23844            components: ComponentMapping::default(),
23845            x_chroma_offset: ChromaLocation::default(),
23846            y_chroma_offset: ChromaLocation::default(),
23847            chroma_filter: Filter::default(),
23848            force_explicit_reconstruction: Bool32::default(),
23849        }
23850    }
23851}
23852
23853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>
23854#[repr(C)]
23855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23856pub struct SamplerYcbcrConversionImageFormatProperties {
23857    pub s_type: StructureType,
23858    pub next: *mut c_void,
23859    pub combined_image_sampler_descriptor_count: u32,
23860}
23861
23862impl Default for SamplerYcbcrConversionImageFormatProperties {
23863    #[inline]
23864    fn default() -> Self {
23865        Self {
23866            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
23867            next: ptr::null_mut(),
23868            combined_image_sampler_descriptor_count: u32::default(),
23869        }
23870    }
23871}
23872
23873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html>
23874#[repr(C)]
23875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23876pub struct SamplerYcbcrConversionInfo {
23877    pub s_type: StructureType,
23878    pub next: *const c_void,
23879    pub conversion: SamplerYcbcrConversion,
23880}
23881
23882impl Default for SamplerYcbcrConversionInfo {
23883    #[inline]
23884    fn default() -> Self {
23885        Self {
23886            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
23887            next: ptr::null(),
23888            conversion: SamplerYcbcrConversion::default(),
23889        }
23890    }
23891}
23892
23893/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html>
23894#[repr(C)]
23895#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23896pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
23897    pub s_type: StructureType,
23898    pub next: *mut c_void,
23899    pub enable_y_degamma: Bool32,
23900    pub enable_cb_cr_degamma: Bool32,
23901}
23902
23903impl Default for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
23904    #[inline]
23905    fn default() -> Self {
23906        Self {
23907            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM,
23908            next: ptr::null_mut(),
23909            enable_y_degamma: Bool32::default(),
23910            enable_cb_cr_degamma: Bool32::default(),
23911        }
23912    }
23913}
23914
23915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSciSyncAttributesInfoNV.html>
23916#[repr(C)]
23917#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23918pub struct SciSyncAttributesInfoNV {
23919    pub s_type: StructureType,
23920    pub next: *const c_void,
23921    pub client_type: SciSyncClientTypeNV,
23922    pub primitive_type: SciSyncPrimitiveTypeNV,
23923}
23924
23925impl Default for SciSyncAttributesInfoNV {
23926    #[inline]
23927    fn default() -> Self {
23928        Self {
23929            s_type: StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV,
23930            next: ptr::null(),
23931            client_type: SciSyncClientTypeNV::default(),
23932            primitive_type: SciSyncPrimitiveTypeNV::default(),
23933        }
23934    }
23935}
23936
23937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html>
23938#[repr(C)]
23939#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23940pub struct ScreenBufferFormatPropertiesQNX {
23941    pub s_type: StructureType,
23942    pub next: *mut c_void,
23943    pub format: Format,
23944    pub external_format: u64,
23945    pub screen_usage: u64,
23946    pub format_features: FormatFeatureFlags,
23947    pub sampler_ycbcr_conversion_components: ComponentMapping,
23948    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
23949    pub suggested_ycbcr_range: SamplerYcbcrRange,
23950    pub suggested_x_chroma_offset: ChromaLocation,
23951    pub suggested_y_chroma_offset: ChromaLocation,
23952}
23953
23954impl Default for ScreenBufferFormatPropertiesQNX {
23955    #[inline]
23956    fn default() -> Self {
23957        Self {
23958            s_type: StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX,
23959            next: ptr::null_mut(),
23960            format: Format::default(),
23961            external_format: u64::default(),
23962            screen_usage: u64::default(),
23963            format_features: FormatFeatureFlags::default(),
23964            sampler_ycbcr_conversion_components: ComponentMapping::default(),
23965            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
23966            suggested_ycbcr_range: SamplerYcbcrRange::default(),
23967            suggested_x_chroma_offset: ChromaLocation::default(),
23968            suggested_y_chroma_offset: ChromaLocation::default(),
23969        }
23970    }
23971}
23972
23973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html>
23974#[repr(C)]
23975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23976pub struct ScreenBufferPropertiesQNX {
23977    pub s_type: StructureType,
23978    pub next: *mut c_void,
23979    pub allocation_size: DeviceSize,
23980    pub memory_type_bits: u32,
23981}
23982
23983impl Default for ScreenBufferPropertiesQNX {
23984    #[inline]
23985    fn default() -> Self {
23986        Self {
23987            s_type: StructureType::SCREEN_BUFFER_PROPERTIES_QNX,
23988            next: ptr::null_mut(),
23989            allocation_size: DeviceSize::default(),
23990            memory_type_bits: u32::default(),
23991        }
23992    }
23993}
23994
23995/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html>
23996#[repr(C)]
23997#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23998pub struct ScreenSurfaceCreateInfoQNX {
23999    pub s_type: StructureType,
24000    pub next: *const c_void,
24001    pub flags: ScreenSurfaceCreateFlagsQNX,
24002    pub context: *mut _screen_context,
24003    pub window: *mut _screen_window,
24004}
24005
24006impl Default for ScreenSurfaceCreateInfoQNX {
24007    #[inline]
24008    fn default() -> Self {
24009        Self {
24010            s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
24011            next: ptr::null(),
24012            flags: ScreenSurfaceCreateFlagsQNX::default(),
24013            context: ptr::null_mut(),
24014            window: ptr::null_mut(),
24015        }
24016    }
24017}
24018
24019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html>
24020#[repr(C)]
24021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24022pub struct SemaphoreCreateInfo {
24023    pub s_type: StructureType,
24024    pub next: *const c_void,
24025    pub flags: SemaphoreCreateFlags,
24026}
24027
24028impl Default for SemaphoreCreateInfo {
24029    #[inline]
24030    fn default() -> Self {
24031        Self {
24032            s_type: StructureType::SEMAPHORE_CREATE_INFO,
24033            next: ptr::null(),
24034            flags: SemaphoreCreateFlags::default(),
24035        }
24036    }
24037}
24038
24039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html>
24040#[repr(C)]
24041#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24042pub struct SemaphoreGetFdInfoKHR {
24043    pub s_type: StructureType,
24044    pub next: *const c_void,
24045    pub semaphore: Semaphore,
24046    pub handle_type: ExternalSemaphoreHandleTypeFlags,
24047}
24048
24049impl Default for SemaphoreGetFdInfoKHR {
24050    #[inline]
24051    fn default() -> Self {
24052        Self {
24053            s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
24054            next: ptr::null(),
24055            semaphore: Semaphore::default(),
24056            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
24057        }
24058    }
24059}
24060
24061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetSciSyncInfoNV.html>
24062#[repr(C)]
24063#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24064pub struct SemaphoreGetSciSyncInfoNV {
24065    pub s_type: StructureType,
24066    pub next: *const c_void,
24067    pub semaphore: Semaphore,
24068    pub handle_type: ExternalSemaphoreHandleTypeFlags,
24069}
24070
24071impl Default for SemaphoreGetSciSyncInfoNV {
24072    #[inline]
24073    fn default() -> Self {
24074        Self {
24075            s_type: StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV,
24076            next: ptr::null(),
24077            semaphore: Semaphore::default(),
24078            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
24079        }
24080    }
24081}
24082
24083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>
24084#[repr(C)]
24085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24086pub struct SemaphoreGetWin32HandleInfoKHR {
24087    pub s_type: StructureType,
24088    pub next: *const c_void,
24089    pub semaphore: Semaphore,
24090    pub handle_type: ExternalSemaphoreHandleTypeFlags,
24091}
24092
24093impl Default for SemaphoreGetWin32HandleInfoKHR {
24094    #[inline]
24095    fn default() -> Self {
24096        Self {
24097            s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
24098            next: ptr::null(),
24099            semaphore: Semaphore::default(),
24100            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
24101        }
24102    }
24103}
24104
24105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>
24106#[repr(C)]
24107#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24108pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
24109    pub s_type: StructureType,
24110    pub next: *const c_void,
24111    pub semaphore: Semaphore,
24112    pub handle_type: ExternalSemaphoreHandleTypeFlags,
24113}
24114
24115impl Default for SemaphoreGetZirconHandleInfoFUCHSIA {
24116    #[inline]
24117    fn default() -> Self {
24118        Self {
24119            s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
24120            next: ptr::null(),
24121            semaphore: Semaphore::default(),
24122            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
24123        }
24124    }
24125}
24126
24127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncCreateInfoNV.html>
24128#[repr(C)]
24129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24130pub struct SemaphoreSciSyncCreateInfoNV {
24131    pub s_type: StructureType,
24132    pub next: *const c_void,
24133    pub semaphore_pool: SemaphoreSciSyncPoolNV,
24134    pub fence: *const NvSciSyncFence,
24135}
24136
24137impl Default for SemaphoreSciSyncCreateInfoNV {
24138    #[inline]
24139    fn default() -> Self {
24140        Self {
24141            s_type: StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV,
24142            next: ptr::null(),
24143            semaphore_pool: SemaphoreSciSyncPoolNV::default(),
24144            fence: ptr::null(),
24145        }
24146    }
24147}
24148
24149/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolCreateInfoNV.html>
24150#[repr(C)]
24151#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24152pub struct SemaphoreSciSyncPoolCreateInfoNV {
24153    pub s_type: StructureType,
24154    pub next: *const c_void,
24155    pub handle: NvSciSyncObj,
24156}
24157
24158impl Default for SemaphoreSciSyncPoolCreateInfoNV {
24159    #[inline]
24160    fn default() -> Self {
24161        Self {
24162            s_type: StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV,
24163            next: ptr::null(),
24164            handle: ptr::null_mut(),
24165        }
24166    }
24167}
24168
24169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html>
24170#[repr(C)]
24171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24172pub struct SemaphoreSignalInfo {
24173    pub s_type: StructureType,
24174    pub next: *const c_void,
24175    pub semaphore: Semaphore,
24176    pub value: u64,
24177}
24178
24179impl Default for SemaphoreSignalInfo {
24180    #[inline]
24181    fn default() -> Self {
24182        Self {
24183            s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
24184            next: ptr::null(),
24185            semaphore: Semaphore::default(),
24186            value: u64::default(),
24187        }
24188    }
24189}
24190
24191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html>
24192#[repr(C)]
24193#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24194pub struct SemaphoreSubmitInfo {
24195    pub s_type: StructureType,
24196    pub next: *const c_void,
24197    pub semaphore: Semaphore,
24198    pub value: u64,
24199    pub stage_mask: PipelineStageFlags2,
24200    pub device_index: u32,
24201}
24202
24203impl Default for SemaphoreSubmitInfo {
24204    #[inline]
24205    fn default() -> Self {
24206        Self {
24207            s_type: StructureType::SEMAPHORE_SUBMIT_INFO,
24208            next: ptr::null(),
24209            semaphore: Semaphore::default(),
24210            value: u64::default(),
24211            stage_mask: PipelineStageFlags2::default(),
24212            device_index: u32::default(),
24213        }
24214    }
24215}
24216
24217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html>
24218#[repr(C)]
24219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24220pub struct SemaphoreTypeCreateInfo {
24221    pub s_type: StructureType,
24222    pub next: *const c_void,
24223    pub semaphore_type: SemaphoreType,
24224    pub initial_value: u64,
24225}
24226
24227impl Default for SemaphoreTypeCreateInfo {
24228    #[inline]
24229    fn default() -> Self {
24230        Self {
24231            s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
24232            next: ptr::null(),
24233            semaphore_type: SemaphoreType::default(),
24234            initial_value: u64::default(),
24235        }
24236    }
24237}
24238
24239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html>
24240#[repr(C)]
24241#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24242pub struct SemaphoreWaitInfo {
24243    pub s_type: StructureType,
24244    pub next: *const c_void,
24245    pub flags: SemaphoreWaitFlags,
24246    pub semaphore_count: u32,
24247    pub semaphores: *const Semaphore,
24248    pub values: *const u64,
24249}
24250
24251impl Default for SemaphoreWaitInfo {
24252    #[inline]
24253    fn default() -> Self {
24254        Self {
24255            s_type: StructureType::SEMAPHORE_WAIT_INFO,
24256            next: ptr::null(),
24257            flags: SemaphoreWaitFlags::default(),
24258            semaphore_count: u32::default(),
24259            semaphores: ptr::null(),
24260            values: ptr::null(),
24261        }
24262    }
24263}
24264
24265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html>
24266#[repr(C)]
24267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24268pub struct SetDescriptorBufferOffsetsInfoEXT {
24269    pub s_type: StructureType,
24270    pub next: *const c_void,
24271    pub stage_flags: ShaderStageFlags,
24272    pub layout: PipelineLayout,
24273    pub first_set: u32,
24274    pub set_count: u32,
24275    pub buffer_indices: *const u32,
24276    pub offsets: *const DeviceSize,
24277}
24278
24279impl Default for SetDescriptorBufferOffsetsInfoEXT {
24280    #[inline]
24281    fn default() -> Self {
24282        Self {
24283            s_type: StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT,
24284            next: ptr::null(),
24285            stage_flags: ShaderStageFlags::default(),
24286            layout: PipelineLayout::default(),
24287            first_set: u32::default(),
24288            set_count: u32::default(),
24289            buffer_indices: ptr::null(),
24290            offsets: ptr::null(),
24291        }
24292    }
24293}
24294
24295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html>
24296#[repr(C)]
24297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24298pub struct SetLatencyMarkerInfoNV {
24299    pub s_type: StructureType,
24300    pub next: *const c_void,
24301    pub present_id: u64,
24302    pub marker: LatencyMarkerNV,
24303}
24304
24305impl Default for SetLatencyMarkerInfoNV {
24306    #[inline]
24307    fn default() -> Self {
24308        Self {
24309            s_type: StructureType::SET_LATENCY_MARKER_INFO_NV,
24310            next: ptr::null(),
24311            present_id: u64::default(),
24312            marker: LatencyMarkerNV::default(),
24313        }
24314    }
24315}
24316
24317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html>
24318#[repr(C)]
24319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24320pub struct SetPresentConfigNV {
24321    pub s_type: StructureType,
24322    pub next: *const c_void,
24323    pub num_frames_per_batch: u32,
24324    pub present_config_feedback: u32,
24325}
24326
24327impl Default for SetPresentConfigNV {
24328    #[inline]
24329    fn default() -> Self {
24330        Self {
24331            s_type: StructureType::SET_PRESENT_CONFIG_NV,
24332            next: ptr::null(),
24333            num_frames_per_batch: u32::default(),
24334            present_config_feedback: u32::default(),
24335        }
24336    }
24337}
24338
24339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html>
24340#[repr(C)]
24341#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24342pub struct SetStateFlagsIndirectCommandNV {
24343    pub data: u32,
24344}
24345
24346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html>
24347#[repr(C)]
24348#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24349pub struct ShaderCreateInfoEXT {
24350    pub s_type: StructureType,
24351    pub next: *const c_void,
24352    pub flags: ShaderCreateFlagsEXT,
24353    pub stage: ShaderStageFlags,
24354    pub next_stage: ShaderStageFlags,
24355    pub code_type: ShaderCodeTypeEXT,
24356    pub code_size: usize,
24357    pub code: *const c_void,
24358    pub name: *const c_char,
24359    pub set_layout_count: u32,
24360    pub set_layouts: *const DescriptorSetLayout,
24361    pub push_constant_range_count: u32,
24362    pub push_constant_ranges: *const PushConstantRange,
24363    pub specialization_info: *const SpecializationInfo,
24364}
24365
24366impl Default for ShaderCreateInfoEXT {
24367    #[inline]
24368    fn default() -> Self {
24369        Self {
24370            s_type: StructureType::SHADER_CREATE_INFO_EXT,
24371            next: ptr::null(),
24372            flags: ShaderCreateFlagsEXT::default(),
24373            stage: ShaderStageFlags::default(),
24374            next_stage: ShaderStageFlags::default(),
24375            code_type: ShaderCodeTypeEXT::default(),
24376            code_size: usize::default(),
24377            code: ptr::null(),
24378            name: ptr::null(),
24379            set_layout_count: u32::default(),
24380            set_layouts: ptr::null(),
24381            push_constant_range_count: u32::default(),
24382            push_constant_ranges: ptr::null(),
24383            specialization_info: ptr::null(),
24384        }
24385    }
24386}
24387
24388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html>
24389#[repr(C)]
24390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24391pub struct ShaderModuleCreateInfo {
24392    pub s_type: StructureType,
24393    pub next: *const c_void,
24394    pub flags: ShaderModuleCreateFlags,
24395    pub code_size: usize,
24396    pub code: *const u32,
24397}
24398
24399impl Default for ShaderModuleCreateInfo {
24400    #[inline]
24401    fn default() -> Self {
24402        Self {
24403            s_type: StructureType::SHADER_MODULE_CREATE_INFO,
24404            next: ptr::null(),
24405            flags: ShaderModuleCreateFlags::default(),
24406            code_size: usize::default(),
24407            code: ptr::null(),
24408        }
24409    }
24410}
24411
24412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html>
24413#[repr(C)]
24414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24415pub struct ShaderModuleIdentifierEXT {
24416    pub s_type: StructureType,
24417    pub next: *mut c_void,
24418    pub identifier_size: u32,
24419    pub identifier: ByteArray<MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT>,
24420}
24421
24422impl Default for ShaderModuleIdentifierEXT {
24423    #[inline]
24424    fn default() -> Self {
24425        Self {
24426            s_type: StructureType::SHADER_MODULE_IDENTIFIER_EXT,
24427            next: ptr::null_mut(),
24428            identifier_size: u32::default(),
24429            identifier: ByteArray::default(),
24430        }
24431    }
24432}
24433
24434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>
24435#[repr(C)]
24436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24437pub struct ShaderModuleValidationCacheCreateInfoEXT {
24438    pub s_type: StructureType,
24439    pub next: *const c_void,
24440    pub validation_cache: ValidationCacheEXT,
24441}
24442
24443impl Default for ShaderModuleValidationCacheCreateInfoEXT {
24444    #[inline]
24445    fn default() -> Self {
24446        Self {
24447            s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
24448            next: ptr::null(),
24449            validation_cache: ValidationCacheEXT::default(),
24450        }
24451    }
24452}
24453
24454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html>
24455#[repr(C)]
24456#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24457pub struct ShaderResourceUsageAMD {
24458    pub num_used_vgprs: u32,
24459    pub num_used_sgprs: u32,
24460    pub lds_size_per_local_work_group: u32,
24461    pub lds_usage_size_in_bytes: usize,
24462    pub scratch_mem_usage_in_bytes: usize,
24463}
24464
24465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html>
24466#[repr(C)]
24467#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24468pub struct ShaderStatisticsInfoAMD {
24469    pub shader_stage_mask: ShaderStageFlags,
24470    pub resource_usage: ShaderResourceUsageAMD,
24471    pub num_physical_vgprs: u32,
24472    pub num_physical_sgprs: u32,
24473    pub num_available_vgprs: u32,
24474    pub num_available_sgprs: u32,
24475    pub compute_work_group_size: [u32; 3],
24476}
24477
24478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html>
24479#[repr(C)]
24480#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24481pub struct ShadingRatePaletteNV {
24482    pub shading_rate_palette_entry_count: u32,
24483    pub shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
24484}
24485
24486impl Default for ShadingRatePaletteNV {
24487    #[inline]
24488    fn default() -> Self {
24489        Self {
24490            shading_rate_palette_entry_count: u32::default(),
24491            shading_rate_palette_entries: ptr::null(),
24492        }
24493    }
24494}
24495
24496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>
24497#[repr(C)]
24498#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24499pub struct SharedPresentSurfaceCapabilitiesKHR {
24500    pub s_type: StructureType,
24501    pub next: *mut c_void,
24502    pub shared_present_supported_usage_flags: ImageUsageFlags,
24503}
24504
24505impl Default for SharedPresentSurfaceCapabilitiesKHR {
24506    #[inline]
24507    fn default() -> Self {
24508        Self {
24509            s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
24510            next: ptr::null_mut(),
24511            shared_present_supported_usage_flags: ImageUsageFlags::default(),
24512        }
24513    }
24514}
24515
24516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html>
24517#[repr(C)]
24518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24519pub struct SparseBufferMemoryBindInfo {
24520    pub buffer: Buffer,
24521    pub bind_count: u32,
24522    pub binds: *const SparseMemoryBind,
24523}
24524
24525impl Default for SparseBufferMemoryBindInfo {
24526    #[inline]
24527    fn default() -> Self {
24528        Self {
24529            buffer: Buffer::default(),
24530            bind_count: u32::default(),
24531            binds: ptr::null(),
24532        }
24533    }
24534}
24535
24536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html>
24537#[repr(C)]
24538#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24539pub struct SparseImageFormatProperties {
24540    pub aspect_mask: ImageAspectFlags,
24541    pub image_granularity: Extent3D,
24542    pub flags: SparseImageFormatFlags,
24543}
24544
24545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html>
24546#[repr(C)]
24547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24548pub struct SparseImageFormatProperties2 {
24549    pub s_type: StructureType,
24550    pub next: *mut c_void,
24551    pub properties: SparseImageFormatProperties,
24552}
24553
24554impl Default for SparseImageFormatProperties2 {
24555    #[inline]
24556    fn default() -> Self {
24557        Self {
24558            s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
24559            next: ptr::null_mut(),
24560            properties: SparseImageFormatProperties::default(),
24561        }
24562    }
24563}
24564
24565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html>
24566#[repr(C)]
24567#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24568pub struct SparseImageMemoryBind {
24569    pub subresource: ImageSubresource,
24570    pub offset: Offset3D,
24571    pub extent: Extent3D,
24572    pub memory: DeviceMemory,
24573    pub memory_offset: DeviceSize,
24574    pub flags: SparseMemoryBindFlags,
24575}
24576
24577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html>
24578#[repr(C)]
24579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24580pub struct SparseImageMemoryBindInfo {
24581    pub image: Image,
24582    pub bind_count: u32,
24583    pub binds: *const SparseImageMemoryBind,
24584}
24585
24586impl Default for SparseImageMemoryBindInfo {
24587    #[inline]
24588    fn default() -> Self {
24589        Self {
24590            image: Image::default(),
24591            bind_count: u32::default(),
24592            binds: ptr::null(),
24593        }
24594    }
24595}
24596
24597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html>
24598#[repr(C)]
24599#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24600pub struct SparseImageMemoryRequirements {
24601    pub format_properties: SparseImageFormatProperties,
24602    pub image_mip_tail_first_lod: u32,
24603    pub image_mip_tail_size: DeviceSize,
24604    pub image_mip_tail_offset: DeviceSize,
24605    pub image_mip_tail_stride: DeviceSize,
24606}
24607
24608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html>
24609#[repr(C)]
24610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24611pub struct SparseImageMemoryRequirements2 {
24612    pub s_type: StructureType,
24613    pub next: *mut c_void,
24614    pub memory_requirements: SparseImageMemoryRequirements,
24615}
24616
24617impl Default for SparseImageMemoryRequirements2 {
24618    #[inline]
24619    fn default() -> Self {
24620        Self {
24621            s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
24622            next: ptr::null_mut(),
24623            memory_requirements: SparseImageMemoryRequirements::default(),
24624        }
24625    }
24626}
24627
24628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html>
24629#[repr(C)]
24630#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24631pub struct SparseImageOpaqueMemoryBindInfo {
24632    pub image: Image,
24633    pub bind_count: u32,
24634    pub binds: *const SparseMemoryBind,
24635}
24636
24637impl Default for SparseImageOpaqueMemoryBindInfo {
24638    #[inline]
24639    fn default() -> Self {
24640        Self {
24641            image: Image::default(),
24642            bind_count: u32::default(),
24643            binds: ptr::null(),
24644        }
24645    }
24646}
24647
24648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBind.html>
24649#[repr(C)]
24650#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24651pub struct SparseMemoryBind {
24652    pub resource_offset: DeviceSize,
24653    pub size: DeviceSize,
24654    pub memory: DeviceMemory,
24655    pub memory_offset: DeviceSize,
24656    pub flags: SparseMemoryBindFlags,
24657}
24658
24659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationInfo.html>
24660#[repr(C)]
24661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24662pub struct SpecializationInfo {
24663    pub map_entry_count: u32,
24664    pub map_entries: *const SpecializationMapEntry,
24665    pub data_size: usize,
24666    pub data: *const c_void,
24667}
24668
24669impl Default for SpecializationInfo {
24670    #[inline]
24671    fn default() -> Self {
24672        Self {
24673            map_entry_count: u32::default(),
24674            map_entries: ptr::null(),
24675            data_size: usize::default(),
24676            data: ptr::null(),
24677        }
24678    }
24679}
24680
24681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html>
24682#[repr(C)]
24683#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24684pub struct SpecializationMapEntry {
24685    pub constant_id: u32,
24686    pub offset: u32,
24687    pub size: usize,
24688}
24689
24690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilOpState.html>
24691#[repr(C)]
24692#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24693pub struct StencilOpState {
24694    pub fail_op: StencilOp,
24695    pub pass_op: StencilOp,
24696    pub depth_fail_op: StencilOp,
24697    pub compare_op: CompareOp,
24698    pub compare_mask: u32,
24699    pub write_mask: u32,
24700    pub reference: u32,
24701}
24702
24703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>
24704#[repr(C)]
24705#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24706pub struct StreamDescriptorSurfaceCreateInfoGGP {
24707    pub s_type: StructureType,
24708    pub next: *const c_void,
24709    pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
24710    pub stream_descriptor: GgpStreamDescriptor,
24711}
24712
24713impl Default for StreamDescriptorSurfaceCreateInfoGGP {
24714    #[inline]
24715    fn default() -> Self {
24716        Self {
24717            s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
24718            next: ptr::null(),
24719            flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
24720            stream_descriptor: GgpStreamDescriptor::default(),
24721        }
24722    }
24723}
24724
24725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html>
24726#[repr(C)]
24727#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24728pub struct StridedDeviceAddressNV {
24729    pub start_address: DeviceAddress,
24730    pub stride_in_bytes: DeviceSize,
24731}
24732
24733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html>
24734#[repr(C)]
24735#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24736pub struct StridedDeviceAddressRegionKHR {
24737    pub device_address: DeviceAddress,
24738    pub stride: DeviceSize,
24739    pub size: DeviceSize,
24740}
24741
24742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo.html>
24743#[repr(C)]
24744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24745pub struct SubmitInfo {
24746    pub s_type: StructureType,
24747    pub next: *const c_void,
24748    pub wait_semaphore_count: u32,
24749    pub wait_semaphores: *const Semaphore,
24750    pub wait_dst_stage_mask: *const PipelineStageFlags,
24751    pub command_buffer_count: u32,
24752    pub command_buffers: *const CommandBuffer,
24753    pub signal_semaphore_count: u32,
24754    pub signal_semaphores: *const Semaphore,
24755}
24756
24757impl Default for SubmitInfo {
24758    #[inline]
24759    fn default() -> Self {
24760        Self {
24761            s_type: StructureType::SUBMIT_INFO,
24762            next: ptr::null(),
24763            wait_semaphore_count: u32::default(),
24764            wait_semaphores: ptr::null(),
24765            wait_dst_stage_mask: ptr::null(),
24766            command_buffer_count: u32::default(),
24767            command_buffers: ptr::null(),
24768            signal_semaphore_count: u32::default(),
24769            signal_semaphores: ptr::null(),
24770        }
24771    }
24772}
24773
24774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2.html>
24775#[repr(C)]
24776#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24777pub struct SubmitInfo2 {
24778    pub s_type: StructureType,
24779    pub next: *const c_void,
24780    pub flags: SubmitFlags,
24781    pub wait_semaphore_info_count: u32,
24782    pub wait_semaphore_infos: *const SemaphoreSubmitInfo,
24783    pub command_buffer_info_count: u32,
24784    pub command_buffer_infos: *const CommandBufferSubmitInfo,
24785    pub signal_semaphore_info_count: u32,
24786    pub signal_semaphore_infos: *const SemaphoreSubmitInfo,
24787}
24788
24789impl Default for SubmitInfo2 {
24790    #[inline]
24791    fn default() -> Self {
24792        Self {
24793            s_type: StructureType::SUBMIT_INFO_2,
24794            next: ptr::null(),
24795            flags: SubmitFlags::default(),
24796            wait_semaphore_info_count: u32::default(),
24797            wait_semaphore_infos: ptr::null(),
24798            command_buffer_info_count: u32::default(),
24799            command_buffer_infos: ptr::null(),
24800            signal_semaphore_info_count: u32::default(),
24801            signal_semaphore_infos: ptr::null(),
24802        }
24803    }
24804}
24805
24806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html>
24807#[repr(C)]
24808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24809pub struct SubpassBeginInfo {
24810    pub s_type: StructureType,
24811    pub next: *const c_void,
24812    pub contents: SubpassContents,
24813}
24814
24815impl Default for SubpassBeginInfo {
24816    #[inline]
24817    fn default() -> Self {
24818        Self {
24819            s_type: StructureType::SUBPASS_BEGIN_INFO,
24820            next: ptr::null(),
24821            contents: SubpassContents::default(),
24822        }
24823    }
24824}
24825
24826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency.html>
24827#[repr(C)]
24828#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24829pub struct SubpassDependency {
24830    pub src_subpass: u32,
24831    pub dst_subpass: u32,
24832    pub src_stage_mask: PipelineStageFlags,
24833    pub dst_stage_mask: PipelineStageFlags,
24834    pub src_access_mask: AccessFlags,
24835    pub dst_access_mask: AccessFlags,
24836    pub dependency_flags: DependencyFlags,
24837}
24838
24839/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2.html>
24840#[repr(C)]
24841#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24842pub struct SubpassDependency2 {
24843    pub s_type: StructureType,
24844    pub next: *const c_void,
24845    pub src_subpass: u32,
24846    pub dst_subpass: u32,
24847    pub src_stage_mask: PipelineStageFlags,
24848    pub dst_stage_mask: PipelineStageFlags,
24849    pub src_access_mask: AccessFlags,
24850    pub dst_access_mask: AccessFlags,
24851    pub dependency_flags: DependencyFlags,
24852    pub view_offset: i32,
24853}
24854
24855impl Default for SubpassDependency2 {
24856    #[inline]
24857    fn default() -> Self {
24858        Self {
24859            s_type: StructureType::SUBPASS_DEPENDENCY_2,
24860            next: ptr::null(),
24861            src_subpass: u32::default(),
24862            dst_subpass: u32::default(),
24863            src_stage_mask: PipelineStageFlags::default(),
24864            dst_stage_mask: PipelineStageFlags::default(),
24865            src_access_mask: AccessFlags::default(),
24866            dst_access_mask: AccessFlags::default(),
24867            dependency_flags: DependencyFlags::default(),
24868            view_offset: i32::default(),
24869        }
24870    }
24871}
24872
24873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription.html>
24874#[repr(C)]
24875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24876pub struct SubpassDescription {
24877    pub flags: SubpassDescriptionFlags,
24878    pub pipeline_bind_point: PipelineBindPoint,
24879    pub input_attachment_count: u32,
24880    pub input_attachments: *const AttachmentReference,
24881    pub color_attachment_count: u32,
24882    pub color_attachments: *const AttachmentReference,
24883    pub resolve_attachments: *const AttachmentReference,
24884    pub depth_stencil_attachment: *const AttachmentReference,
24885    pub preserve_attachment_count: u32,
24886    pub preserve_attachments: *const u32,
24887}
24888
24889impl Default for SubpassDescription {
24890    #[inline]
24891    fn default() -> Self {
24892        Self {
24893            flags: SubpassDescriptionFlags::default(),
24894            pipeline_bind_point: PipelineBindPoint::default(),
24895            input_attachment_count: u32::default(),
24896            input_attachments: ptr::null(),
24897            color_attachment_count: u32::default(),
24898            color_attachments: ptr::null(),
24899            resolve_attachments: ptr::null(),
24900            depth_stencil_attachment: ptr::null(),
24901            preserve_attachment_count: u32::default(),
24902            preserve_attachments: ptr::null(),
24903        }
24904    }
24905}
24906
24907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2.html>
24908#[repr(C)]
24909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24910pub struct SubpassDescription2 {
24911    pub s_type: StructureType,
24912    pub next: *const c_void,
24913    pub flags: SubpassDescriptionFlags,
24914    pub pipeline_bind_point: PipelineBindPoint,
24915    pub view_mask: u32,
24916    pub input_attachment_count: u32,
24917    pub input_attachments: *const AttachmentReference2,
24918    pub color_attachment_count: u32,
24919    pub color_attachments: *const AttachmentReference2,
24920    pub resolve_attachments: *const AttachmentReference2,
24921    pub depth_stencil_attachment: *const AttachmentReference2,
24922    pub preserve_attachment_count: u32,
24923    pub preserve_attachments: *const u32,
24924}
24925
24926impl Default for SubpassDescription2 {
24927    #[inline]
24928    fn default() -> Self {
24929        Self {
24930            s_type: StructureType::SUBPASS_DESCRIPTION_2,
24931            next: ptr::null(),
24932            flags: SubpassDescriptionFlags::default(),
24933            pipeline_bind_point: PipelineBindPoint::default(),
24934            view_mask: u32::default(),
24935            input_attachment_count: u32::default(),
24936            input_attachments: ptr::null(),
24937            color_attachment_count: u32::default(),
24938            color_attachments: ptr::null(),
24939            resolve_attachments: ptr::null(),
24940            depth_stencil_attachment: ptr::null(),
24941            preserve_attachment_count: u32::default(),
24942            preserve_attachments: ptr::null(),
24943        }
24944    }
24945}
24946
24947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html>
24948#[repr(C)]
24949#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24950pub struct SubpassDescriptionDepthStencilResolve {
24951    pub s_type: StructureType,
24952    pub next: *const c_void,
24953    pub depth_resolve_mode: ResolveModeFlags,
24954    pub stencil_resolve_mode: ResolveModeFlags,
24955    pub depth_stencil_resolve_attachment: *const AttachmentReference2,
24956}
24957
24958impl Default for SubpassDescriptionDepthStencilResolve {
24959    #[inline]
24960    fn default() -> Self {
24961        Self {
24962            s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
24963            next: ptr::null(),
24964            depth_resolve_mode: ResolveModeFlags::default(),
24965            stencil_resolve_mode: ResolveModeFlags::default(),
24966            depth_stencil_resolve_attachment: ptr::null(),
24967        }
24968    }
24969}
24970
24971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfo.html>
24972#[repr(C)]
24973#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24974pub struct SubpassEndInfo {
24975    pub s_type: StructureType,
24976    pub next: *const c_void,
24977}
24978
24979impl Default for SubpassEndInfo {
24980    #[inline]
24981    fn default() -> Self {
24982        Self {
24983            s_type: StructureType::SUBPASS_END_INFO,
24984            next: ptr::null(),
24985        }
24986    }
24987}
24988
24989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html>
24990#[repr(C)]
24991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24992pub struct SubpassResolvePerformanceQueryEXT {
24993    pub s_type: StructureType,
24994    pub next: *mut c_void,
24995    pub optimal: Bool32,
24996}
24997
24998impl Default for SubpassResolvePerformanceQueryEXT {
24999    #[inline]
25000    fn default() -> Self {
25001        Self {
25002            s_type: StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT,
25003            next: ptr::null_mut(),
25004            optimal: Bool32::default(),
25005        }
25006    }
25007}
25008
25009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html>
25010#[repr(C)]
25011#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25012pub struct SubpassSampleLocationsEXT {
25013    pub subpass_index: u32,
25014    pub sample_locations_info: SampleLocationsInfoEXT,
25015}
25016
25017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>
25018#[repr(C)]
25019#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25020pub struct SubpassShadingPipelineCreateInfoHUAWEI {
25021    pub s_type: StructureType,
25022    pub next: *mut c_void,
25023    pub render_pass: RenderPass,
25024    pub subpass: u32,
25025}
25026
25027impl Default for SubpassShadingPipelineCreateInfoHUAWEI {
25028    #[inline]
25029    fn default() -> Self {
25030        Self {
25031            s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
25032            next: ptr::null_mut(),
25033            render_pass: RenderPass::default(),
25034            subpass: u32::default(),
25035        }
25036    }
25037}
25038
25039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html>
25040#[repr(C)]
25041#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25042pub struct SubresourceHostMemcpySize {
25043    pub s_type: StructureType,
25044    pub next: *mut c_void,
25045    pub size: DeviceSize,
25046}
25047
25048impl Default for SubresourceHostMemcpySize {
25049    #[inline]
25050    fn default() -> Self {
25051        Self {
25052            s_type: StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE,
25053            next: ptr::null_mut(),
25054            size: DeviceSize::default(),
25055        }
25056    }
25057}
25058
25059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout.html>
25060#[repr(C)]
25061#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25062pub struct SubresourceLayout {
25063    pub offset: DeviceSize,
25064    pub size: DeviceSize,
25065    pub row_pitch: DeviceSize,
25066    pub array_pitch: DeviceSize,
25067    pub depth_pitch: DeviceSize,
25068}
25069
25070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2.html>
25071#[repr(C)]
25072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25073pub struct SubresourceLayout2 {
25074    pub s_type: StructureType,
25075    pub next: *mut c_void,
25076    pub subresource_layout: SubresourceLayout,
25077}
25078
25079impl Default for SubresourceLayout2 {
25080    #[inline]
25081    fn default() -> Self {
25082        Self {
25083            s_type: StructureType::SUBRESOURCE_LAYOUT_2,
25084            next: ptr::null_mut(),
25085            subresource_layout: SubresourceLayout::default(),
25086        }
25087    }
25088}
25089
25090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html>
25091#[repr(C)]
25092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25093pub struct SurfaceCapabilities2EXT {
25094    pub s_type: StructureType,
25095    pub next: *mut c_void,
25096    pub min_image_count: u32,
25097    pub max_image_count: u32,
25098    pub current_extent: Extent2D,
25099    pub min_image_extent: Extent2D,
25100    pub max_image_extent: Extent2D,
25101    pub max_image_array_layers: u32,
25102    pub supported_transforms: SurfaceTransformFlagsKHR,
25103    pub current_transform: SurfaceTransformFlagsKHR,
25104    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
25105    pub supported_usage_flags: ImageUsageFlags,
25106    pub supported_surface_counters: SurfaceCounterFlagsEXT,
25107}
25108
25109impl Default for SurfaceCapabilities2EXT {
25110    #[inline]
25111    fn default() -> Self {
25112        Self {
25113            s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
25114            next: ptr::null_mut(),
25115            min_image_count: u32::default(),
25116            max_image_count: u32::default(),
25117            current_extent: Extent2D::default(),
25118            min_image_extent: Extent2D::default(),
25119            max_image_extent: Extent2D::default(),
25120            max_image_array_layers: u32::default(),
25121            supported_transforms: SurfaceTransformFlagsKHR::default(),
25122            current_transform: SurfaceTransformFlagsKHR::default(),
25123            supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
25124            supported_usage_flags: ImageUsageFlags::default(),
25125            supported_surface_counters: SurfaceCounterFlagsEXT::default(),
25126        }
25127    }
25128}
25129
25130/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html>
25131#[repr(C)]
25132#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25133pub struct SurfaceCapabilities2KHR {
25134    pub s_type: StructureType,
25135    pub next: *mut c_void,
25136    pub surface_capabilities: SurfaceCapabilitiesKHR,
25137}
25138
25139impl Default for SurfaceCapabilities2KHR {
25140    #[inline]
25141    fn default() -> Self {
25142        Self {
25143            s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
25144            next: ptr::null_mut(),
25145            surface_capabilities: SurfaceCapabilitiesKHR::default(),
25146        }
25147    }
25148}
25149
25150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>
25151#[repr(C)]
25152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25153pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
25154    pub s_type: StructureType,
25155    pub next: *mut c_void,
25156    pub full_screen_exclusive_supported: Bool32,
25157}
25158
25159impl Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
25160    #[inline]
25161    fn default() -> Self {
25162        Self {
25163            s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
25164            next: ptr::null_mut(),
25165            full_screen_exclusive_supported: Bool32::default(),
25166        }
25167    }
25168}
25169
25170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html>
25171#[repr(C)]
25172#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25173pub struct SurfaceCapabilitiesKHR {
25174    pub min_image_count: u32,
25175    pub max_image_count: u32,
25176    pub current_extent: Extent2D,
25177    pub min_image_extent: Extent2D,
25178    pub max_image_extent: Extent2D,
25179    pub max_image_array_layers: u32,
25180    pub supported_transforms: SurfaceTransformFlagsKHR,
25181    pub current_transform: SurfaceTransformFlagsKHR,
25182    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
25183    pub supported_usage_flags: ImageUsageFlags,
25184}
25185
25186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html>
25187#[repr(C)]
25188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25189pub struct SurfaceCapabilitiesPresentBarrierNV {
25190    pub s_type: StructureType,
25191    pub next: *mut c_void,
25192    pub present_barrier_supported: Bool32,
25193}
25194
25195impl Default for SurfaceCapabilitiesPresentBarrierNV {
25196    #[inline]
25197    fn default() -> Self {
25198        Self {
25199            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV,
25200            next: ptr::null_mut(),
25201            present_barrier_supported: Bool32::default(),
25202        }
25203    }
25204}
25205
25206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentId2KHR.html>
25207#[repr(C)]
25208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25209pub struct SurfaceCapabilitiesPresentId2KHR {
25210    pub s_type: StructureType,
25211    pub next: *mut c_void,
25212    pub present_id2_supported: Bool32,
25213}
25214
25215impl Default for SurfaceCapabilitiesPresentId2KHR {
25216    #[inline]
25217    fn default() -> Self {
25218        Self {
25219            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR,
25220            next: ptr::null_mut(),
25221            present_id2_supported: Bool32::default(),
25222        }
25223    }
25224}
25225
25226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentWait2KHR.html>
25227#[repr(C)]
25228#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25229pub struct SurfaceCapabilitiesPresentWait2KHR {
25230    pub s_type: StructureType,
25231    pub next: *mut c_void,
25232    pub present_wait2_supported: Bool32,
25233}
25234
25235impl Default for SurfaceCapabilitiesPresentWait2KHR {
25236    #[inline]
25237    fn default() -> Self {
25238        Self {
25239            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR,
25240            next: ptr::null_mut(),
25241            present_wait2_supported: Bool32::default(),
25242        }
25243    }
25244}
25245
25246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html>
25247#[repr(C)]
25248#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25249pub struct SurfaceFormat2KHR {
25250    pub s_type: StructureType,
25251    pub next: *mut c_void,
25252    pub surface_format: SurfaceFormatKHR,
25253}
25254
25255impl Default for SurfaceFormat2KHR {
25256    #[inline]
25257    fn default() -> Self {
25258        Self {
25259            s_type: StructureType::SURFACE_FORMAT_2_KHR,
25260            next: ptr::null_mut(),
25261            surface_format: SurfaceFormatKHR::default(),
25262        }
25263    }
25264}
25265
25266/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html>
25267#[repr(C)]
25268#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25269pub struct SurfaceFormatKHR {
25270    pub format: Format,
25271    pub color_space: ColorSpaceKHR,
25272}
25273
25274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>
25275#[repr(C)]
25276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25277pub struct SurfaceFullScreenExclusiveInfoEXT {
25278    pub s_type: StructureType,
25279    pub next: *mut c_void,
25280    pub full_screen_exclusive: FullScreenExclusiveEXT,
25281}
25282
25283impl Default for SurfaceFullScreenExclusiveInfoEXT {
25284    #[inline]
25285    fn default() -> Self {
25286        Self {
25287            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
25288            next: ptr::null_mut(),
25289            full_screen_exclusive: FullScreenExclusiveEXT::default(),
25290        }
25291    }
25292}
25293
25294/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>
25295#[repr(C)]
25296#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25297pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
25298    pub s_type: StructureType,
25299    pub next: *const c_void,
25300    pub hmonitor: HMONITOR,
25301}
25302
25303impl Default for SurfaceFullScreenExclusiveWin32InfoEXT {
25304    #[inline]
25305    fn default() -> Self {
25306        Self {
25307            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
25308            next: ptr::null(),
25309            hmonitor: ptr::null_mut(),
25310        }
25311    }
25312}
25313
25314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityKHR.html>
25315#[repr(C)]
25316#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25317pub struct SurfacePresentModeCompatibilityKHR {
25318    pub s_type: StructureType,
25319    pub next: *mut c_void,
25320    pub present_mode_count: u32,
25321    pub present_modes: *mut PresentModeKHR,
25322}
25323
25324impl Default for SurfacePresentModeCompatibilityKHR {
25325    #[inline]
25326    fn default() -> Self {
25327        Self {
25328            s_type: StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR,
25329            next: ptr::null_mut(),
25330            present_mode_count: u32::default(),
25331            present_modes: ptr::null_mut(),
25332        }
25333    }
25334}
25335
25336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeKHR.html>
25337#[repr(C)]
25338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25339pub struct SurfacePresentModeKHR {
25340    pub s_type: StructureType,
25341    pub next: *mut c_void,
25342    pub present_mode: PresentModeKHR,
25343}
25344
25345impl Default for SurfacePresentModeKHR {
25346    #[inline]
25347    fn default() -> Self {
25348        Self {
25349            s_type: StructureType::SURFACE_PRESENT_MODE_KHR,
25350            next: ptr::null_mut(),
25351            present_mode: PresentModeKHR::default(),
25352        }
25353    }
25354}
25355
25356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesKHR.html>
25357#[repr(C)]
25358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25359pub struct SurfacePresentScalingCapabilitiesKHR {
25360    pub s_type: StructureType,
25361    pub next: *mut c_void,
25362    pub supported_present_scaling: PresentScalingFlagsKHR,
25363    pub supported_present_gravity_x: PresentGravityFlagsKHR,
25364    pub supported_present_gravity_y: PresentGravityFlagsKHR,
25365    pub min_scaled_image_extent: Extent2D,
25366    pub max_scaled_image_extent: Extent2D,
25367}
25368
25369impl Default for SurfacePresentScalingCapabilitiesKHR {
25370    #[inline]
25371    fn default() -> Self {
25372        Self {
25373            s_type: StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR,
25374            next: ptr::null_mut(),
25375            supported_present_scaling: PresentScalingFlagsKHR::default(),
25376            supported_present_gravity_x: PresentGravityFlagsKHR::default(),
25377            supported_present_gravity_y: PresentGravityFlagsKHR::default(),
25378            min_scaled_image_extent: Extent2D::default(),
25379            max_scaled_image_extent: Extent2D::default(),
25380        }
25381    }
25382}
25383
25384/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html>
25385#[repr(C)]
25386#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25387pub struct SurfaceProtectedCapabilitiesKHR {
25388    pub s_type: StructureType,
25389    pub next: *const c_void,
25390    pub supports_protected: Bool32,
25391}
25392
25393impl Default for SurfaceProtectedCapabilitiesKHR {
25394    #[inline]
25395    fn default() -> Self {
25396        Self {
25397            s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
25398            next: ptr::null(),
25399            supports_protected: Bool32::default(),
25400        }
25401    }
25402}
25403
25404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html>
25405#[repr(C)]
25406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25407pub struct SwapchainCounterCreateInfoEXT {
25408    pub s_type: StructureType,
25409    pub next: *const c_void,
25410    pub surface_counters: SurfaceCounterFlagsEXT,
25411}
25412
25413impl Default for SwapchainCounterCreateInfoEXT {
25414    #[inline]
25415    fn default() -> Self {
25416        Self {
25417            s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
25418            next: ptr::null(),
25419            surface_counters: SurfaceCounterFlagsEXT::default(),
25420        }
25421    }
25422}
25423
25424/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html>
25425#[repr(C)]
25426#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25427pub struct SwapchainCreateInfoKHR {
25428    pub s_type: StructureType,
25429    pub next: *const c_void,
25430    pub flags: SwapchainCreateFlagsKHR,
25431    pub surface: SurfaceKHR,
25432    pub min_image_count: u32,
25433    pub image_format: Format,
25434    pub image_color_space: ColorSpaceKHR,
25435    pub image_extent: Extent2D,
25436    pub image_array_layers: u32,
25437    pub image_usage: ImageUsageFlags,
25438    pub image_sharing_mode: SharingMode,
25439    pub queue_family_index_count: u32,
25440    pub queue_family_indices: *const u32,
25441    pub pre_transform: SurfaceTransformFlagsKHR,
25442    pub composite_alpha: CompositeAlphaFlagsKHR,
25443    pub present_mode: PresentModeKHR,
25444    pub clipped: Bool32,
25445    pub old_swapchain: SwapchainKHR,
25446}
25447
25448impl Default for SwapchainCreateInfoKHR {
25449    #[inline]
25450    fn default() -> Self {
25451        Self {
25452            s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
25453            next: ptr::null(),
25454            flags: SwapchainCreateFlagsKHR::default(),
25455            surface: SurfaceKHR::default(),
25456            min_image_count: u32::default(),
25457            image_format: Format::default(),
25458            image_color_space: ColorSpaceKHR::default(),
25459            image_extent: Extent2D::default(),
25460            image_array_layers: u32::default(),
25461            image_usage: ImageUsageFlags::default(),
25462            image_sharing_mode: SharingMode::default(),
25463            queue_family_index_count: u32::default(),
25464            queue_family_indices: ptr::null(),
25465            pre_transform: SurfaceTransformFlagsKHR::default(),
25466            composite_alpha: CompositeAlphaFlagsKHR::default(),
25467            present_mode: PresentModeKHR::default(),
25468            clipped: Bool32::default(),
25469            old_swapchain: SwapchainKHR::default(),
25470        }
25471    }
25472}
25473
25474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>
25475#[repr(C)]
25476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25477pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
25478    pub s_type: StructureType,
25479    pub next: *const c_void,
25480    pub local_dimming_enable: Bool32,
25481}
25482
25483impl Default for SwapchainDisplayNativeHdrCreateInfoAMD {
25484    #[inline]
25485    fn default() -> Self {
25486        Self {
25487            s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
25488            next: ptr::null(),
25489            local_dimming_enable: Bool32::default(),
25490        }
25491    }
25492}
25493
25494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html>
25495#[repr(C)]
25496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25497pub struct SwapchainLatencyCreateInfoNV {
25498    pub s_type: StructureType,
25499    pub next: *const c_void,
25500    pub latency_mode_enable: Bool32,
25501}
25502
25503impl Default for SwapchainLatencyCreateInfoNV {
25504    #[inline]
25505    fn default() -> Self {
25506        Self {
25507            s_type: StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV,
25508            next: ptr::null(),
25509            latency_mode_enable: Bool32::default(),
25510        }
25511    }
25512}
25513
25514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html>
25515#[repr(C)]
25516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25517pub struct SwapchainPresentBarrierCreateInfoNV {
25518    pub s_type: StructureType,
25519    pub next: *mut c_void,
25520    pub present_barrier_enable: Bool32,
25521}
25522
25523impl Default for SwapchainPresentBarrierCreateInfoNV {
25524    #[inline]
25525    fn default() -> Self {
25526        Self {
25527            s_type: StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV,
25528            next: ptr::null_mut(),
25529            present_barrier_enable: Bool32::default(),
25530        }
25531    }
25532}
25533
25534/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoKHR.html>
25535#[repr(C)]
25536#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25537pub struct SwapchainPresentFenceInfoKHR {
25538    pub s_type: StructureType,
25539    pub next: *const c_void,
25540    pub swapchain_count: u32,
25541    pub fences: *const Fence,
25542}
25543
25544impl Default for SwapchainPresentFenceInfoKHR {
25545    #[inline]
25546    fn default() -> Self {
25547        Self {
25548            s_type: StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR,
25549            next: ptr::null(),
25550            swapchain_count: u32::default(),
25551            fences: ptr::null(),
25552        }
25553    }
25554}
25555
25556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoKHR.html>
25557#[repr(C)]
25558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25559pub struct SwapchainPresentModeInfoKHR {
25560    pub s_type: StructureType,
25561    pub next: *const c_void,
25562    pub swapchain_count: u32,
25563    pub present_modes: *const PresentModeKHR,
25564}
25565
25566impl Default for SwapchainPresentModeInfoKHR {
25567    #[inline]
25568    fn default() -> Self {
25569        Self {
25570            s_type: StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR,
25571            next: ptr::null(),
25572            swapchain_count: u32::default(),
25573            present_modes: ptr::null(),
25574        }
25575    }
25576}
25577
25578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoKHR.html>
25579#[repr(C)]
25580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25581pub struct SwapchainPresentModesCreateInfoKHR {
25582    pub s_type: StructureType,
25583    pub next: *const c_void,
25584    pub present_mode_count: u32,
25585    pub present_modes: *const PresentModeKHR,
25586}
25587
25588impl Default for SwapchainPresentModesCreateInfoKHR {
25589    #[inline]
25590    fn default() -> Self {
25591        Self {
25592            s_type: StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR,
25593            next: ptr::null(),
25594            present_mode_count: u32::default(),
25595            present_modes: ptr::null(),
25596        }
25597    }
25598}
25599
25600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoKHR.html>
25601#[repr(C)]
25602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25603pub struct SwapchainPresentScalingCreateInfoKHR {
25604    pub s_type: StructureType,
25605    pub next: *const c_void,
25606    pub scaling_behavior: PresentScalingFlagsKHR,
25607    pub present_gravity_x: PresentGravityFlagsKHR,
25608    pub present_gravity_y: PresentGravityFlagsKHR,
25609}
25610
25611impl Default for SwapchainPresentScalingCreateInfoKHR {
25612    #[inline]
25613    fn default() -> Self {
25614        Self {
25615            s_type: StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR,
25616            next: ptr::null(),
25617            scaling_behavior: PresentScalingFlagsKHR::default(),
25618            present_gravity_x: PresentGravityFlagsKHR::default(),
25619            present_gravity_y: PresentGravityFlagsKHR::default(),
25620        }
25621    }
25622}
25623
25624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html>
25625#[repr(C)]
25626#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25627pub struct SysmemColorSpaceFUCHSIA {
25628    pub s_type: StructureType,
25629    pub next: *const c_void,
25630    pub color_space: u32,
25631}
25632
25633impl Default for SysmemColorSpaceFUCHSIA {
25634    #[inline]
25635    fn default() -> Self {
25636        Self {
25637            s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
25638            next: ptr::null(),
25639            color_space: u32::default(),
25640        }
25641    }
25642}
25643
25644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCaptureDescriptorDataInfoARM.html>
25645#[repr(C)]
25646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25647pub struct TensorCaptureDescriptorDataInfoARM {
25648    pub s_type: StructureType,
25649    pub next: *const c_void,
25650    pub tensor: TensorARM,
25651}
25652
25653impl Default for TensorCaptureDescriptorDataInfoARM {
25654    #[inline]
25655    fn default() -> Self {
25656        Self {
25657            s_type: StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
25658            next: ptr::null(),
25659            tensor: TensorARM::default(),
25660        }
25661    }
25662}
25663
25664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCopyARM.html>
25665#[repr(C)]
25666#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25667pub struct TensorCopyARM {
25668    pub s_type: StructureType,
25669    pub next: *const c_void,
25670    pub dimension_count: u32,
25671    pub src_offset: *const u64,
25672    pub dst_offset: *const u64,
25673    pub extent: *const u64,
25674}
25675
25676impl Default for TensorCopyARM {
25677    #[inline]
25678    fn default() -> Self {
25679        Self {
25680            s_type: StructureType::TENSOR_COPY_ARM,
25681            next: ptr::null(),
25682            dimension_count: u32::default(),
25683            src_offset: ptr::null(),
25684            dst_offset: ptr::null(),
25685            extent: ptr::null(),
25686        }
25687    }
25688}
25689
25690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCreateInfoARM.html>
25691#[repr(C)]
25692#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25693pub struct TensorCreateInfoARM {
25694    pub s_type: StructureType,
25695    pub next: *const c_void,
25696    pub flags: TensorCreateFlagsARM,
25697    pub description: *const TensorDescriptionARM,
25698    pub sharing_mode: SharingMode,
25699    pub queue_family_index_count: u32,
25700    pub queue_family_indices: *const u32,
25701}
25702
25703impl Default for TensorCreateInfoARM {
25704    #[inline]
25705    fn default() -> Self {
25706        Self {
25707            s_type: StructureType::TENSOR_CREATE_INFO_ARM,
25708            next: ptr::null(),
25709            flags: TensorCreateFlagsARM::default(),
25710            description: ptr::null(),
25711            sharing_mode: SharingMode::default(),
25712            queue_family_index_count: u32::default(),
25713            queue_family_indices: ptr::null(),
25714        }
25715    }
25716}
25717
25718/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDependencyInfoARM.html>
25719#[repr(C)]
25720#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25721pub struct TensorDependencyInfoARM {
25722    pub s_type: StructureType,
25723    pub next: *const c_void,
25724    pub tensor_memory_barrier_count: u32,
25725    pub tensor_memory_barriers: *const TensorMemoryBarrierARM,
25726}
25727
25728impl Default for TensorDependencyInfoARM {
25729    #[inline]
25730    fn default() -> Self {
25731        Self {
25732            s_type: StructureType::TENSOR_DEPENDENCY_INFO_ARM,
25733            next: ptr::null(),
25734            tensor_memory_barrier_count: u32::default(),
25735            tensor_memory_barriers: ptr::null(),
25736        }
25737    }
25738}
25739
25740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDescriptionARM.html>
25741#[repr(C)]
25742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25743pub struct TensorDescriptionARM {
25744    pub s_type: StructureType,
25745    pub next: *const c_void,
25746    pub tiling: TensorTilingARM,
25747    pub format: Format,
25748    pub dimension_count: u32,
25749    pub dimensions: *const i64,
25750    pub strides: *const i64,
25751    pub usage: TensorUsageFlagsARM,
25752}
25753
25754impl Default for TensorDescriptionARM {
25755    #[inline]
25756    fn default() -> Self {
25757        Self {
25758            s_type: StructureType::TENSOR_DESCRIPTION_ARM,
25759            next: ptr::null(),
25760            tiling: TensorTilingARM::default(),
25761            format: Format::default(),
25762            dimension_count: u32::default(),
25763            dimensions: ptr::null(),
25764            strides: ptr::null(),
25765            usage: TensorUsageFlagsARM::default(),
25766        }
25767    }
25768}
25769
25770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorFormatPropertiesARM.html>
25771#[repr(C)]
25772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25773pub struct TensorFormatPropertiesARM {
25774    pub s_type: StructureType,
25775    pub next: *const c_void,
25776    pub optimal_tiling_tensor_features: FormatFeatureFlags2,
25777    pub linear_tiling_tensor_features: FormatFeatureFlags2,
25778}
25779
25780impl Default for TensorFormatPropertiesARM {
25781    #[inline]
25782    fn default() -> Self {
25783        Self {
25784            s_type: StructureType::TENSOR_FORMAT_PROPERTIES_ARM,
25785            next: ptr::null(),
25786            optimal_tiling_tensor_features: FormatFeatureFlags2::default(),
25787            linear_tiling_tensor_features: FormatFeatureFlags2::default(),
25788        }
25789    }
25790}
25791
25792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryBarrierARM.html>
25793#[repr(C)]
25794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25795pub struct TensorMemoryBarrierARM {
25796    pub s_type: StructureType,
25797    pub next: *const c_void,
25798    pub src_stage_mask: PipelineStageFlags2,
25799    pub src_access_mask: AccessFlags2,
25800    pub dst_stage_mask: PipelineStageFlags2,
25801    pub dst_access_mask: AccessFlags2,
25802    pub src_queue_family_index: u32,
25803    pub dst_queue_family_index: u32,
25804    pub tensor: TensorARM,
25805}
25806
25807impl Default for TensorMemoryBarrierARM {
25808    #[inline]
25809    fn default() -> Self {
25810        Self {
25811            s_type: StructureType::TENSOR_MEMORY_BARRIER_ARM,
25812            next: ptr::null(),
25813            src_stage_mask: PipelineStageFlags2::default(),
25814            src_access_mask: AccessFlags2::default(),
25815            dst_stage_mask: PipelineStageFlags2::default(),
25816            dst_access_mask: AccessFlags2::default(),
25817            src_queue_family_index: u32::default(),
25818            dst_queue_family_index: u32::default(),
25819            tensor: TensorARM::default(),
25820        }
25821    }
25822}
25823
25824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryRequirementsInfoARM.html>
25825#[repr(C)]
25826#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25827pub struct TensorMemoryRequirementsInfoARM {
25828    pub s_type: StructureType,
25829    pub next: *const c_void,
25830    pub tensor: TensorARM,
25831}
25832
25833impl Default for TensorMemoryRequirementsInfoARM {
25834    #[inline]
25835    fn default() -> Self {
25836        Self {
25837            s_type: StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM,
25838            next: ptr::null(),
25839            tensor: TensorARM::default(),
25840        }
25841    }
25842}
25843
25844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCaptureDescriptorDataInfoARM.html>
25845#[repr(C)]
25846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25847pub struct TensorViewCaptureDescriptorDataInfoARM {
25848    pub s_type: StructureType,
25849    pub next: *const c_void,
25850    pub tensor_view: TensorViewARM,
25851}
25852
25853impl Default for TensorViewCaptureDescriptorDataInfoARM {
25854    #[inline]
25855    fn default() -> Self {
25856        Self {
25857            s_type: StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
25858            next: ptr::null(),
25859            tensor_view: TensorViewARM::default(),
25860        }
25861    }
25862}
25863
25864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCreateInfoARM.html>
25865#[repr(C)]
25866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25867pub struct TensorViewCreateInfoARM {
25868    pub s_type: StructureType,
25869    pub next: *const c_void,
25870    pub flags: TensorViewCreateFlagsARM,
25871    pub tensor: TensorARM,
25872    pub format: Format,
25873}
25874
25875impl Default for TensorViewCreateInfoARM {
25876    #[inline]
25877    fn default() -> Self {
25878        Self {
25879            s_type: StructureType::TENSOR_VIEW_CREATE_INFO_ARM,
25880            next: ptr::null(),
25881            flags: TensorViewCreateFlagsARM::default(),
25882            tensor: TensorARM::default(),
25883            format: Format::default(),
25884        }
25885    }
25886}
25887
25888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html>
25889#[repr(C)]
25890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25891pub struct TextureLODGatherFormatPropertiesAMD {
25892    pub s_type: StructureType,
25893    pub next: *mut c_void,
25894    pub supports_texture_gather_lod_bias_amd: Bool32,
25895}
25896
25897impl Default for TextureLODGatherFormatPropertiesAMD {
25898    #[inline]
25899    fn default() -> Self {
25900        Self {
25901            s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
25902            next: ptr::null_mut(),
25903            supports_texture_gather_lod_bias_amd: Bool32::default(),
25904        }
25905    }
25906}
25907
25908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryBindInfoQCOM.html>
25909#[repr(C)]
25910#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25911pub struct TileMemoryBindInfoQCOM {
25912    pub s_type: StructureType,
25913    pub next: *const c_void,
25914    pub memory: DeviceMemory,
25915}
25916
25917impl Default for TileMemoryBindInfoQCOM {
25918    #[inline]
25919    fn default() -> Self {
25920        Self {
25921            s_type: StructureType::TILE_MEMORY_BIND_INFO_QCOM,
25922            next: ptr::null(),
25923            memory: DeviceMemory::default(),
25924        }
25925    }
25926}
25927
25928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryRequirementsQCOM.html>
25929#[repr(C)]
25930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25931pub struct TileMemoryRequirementsQCOM {
25932    pub s_type: StructureType,
25933    pub next: *mut c_void,
25934    pub size: DeviceSize,
25935    pub alignment: DeviceSize,
25936}
25937
25938impl Default for TileMemoryRequirementsQCOM {
25939    #[inline]
25940    fn default() -> Self {
25941        Self {
25942            s_type: StructureType::TILE_MEMORY_REQUIREMENTS_QCOM,
25943            next: ptr::null_mut(),
25944            size: DeviceSize::default(),
25945            alignment: DeviceSize::default(),
25946        }
25947    }
25948}
25949
25950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemorySizeInfoQCOM.html>
25951#[repr(C)]
25952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25953pub struct TileMemorySizeInfoQCOM {
25954    pub s_type: StructureType,
25955    pub next: *const c_void,
25956    pub size: DeviceSize,
25957}
25958
25959impl Default for TileMemorySizeInfoQCOM {
25960    #[inline]
25961    fn default() -> Self {
25962        Self {
25963            s_type: StructureType::TILE_MEMORY_SIZE_INFO_QCOM,
25964            next: ptr::null(),
25965            size: DeviceSize::default(),
25966        }
25967    }
25968}
25969
25970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html>
25971#[repr(C)]
25972#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25973pub struct TilePropertiesQCOM {
25974    pub s_type: StructureType,
25975    pub next: *mut c_void,
25976    pub tile_size: Extent3D,
25977    pub apron_size: Extent2D,
25978    pub origin: Offset2D,
25979}
25980
25981impl Default for TilePropertiesQCOM {
25982    #[inline]
25983    fn default() -> Self {
25984        Self {
25985            s_type: StructureType::TILE_PROPERTIES_QCOM,
25986            next: ptr::null_mut(),
25987            tile_size: Extent3D::default(),
25988            apron_size: Extent2D::default(),
25989            origin: Offset2D::default(),
25990        }
25991    }
25992}
25993
25994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html>
25995#[repr(C)]
25996#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25997pub struct TimelineSemaphoreSubmitInfo {
25998    pub s_type: StructureType,
25999    pub next: *const c_void,
26000    pub wait_semaphore_value_count: u32,
26001    pub wait_semaphore_values: *const u64,
26002    pub signal_semaphore_value_count: u32,
26003    pub signal_semaphore_values: *const u64,
26004}
26005
26006impl Default for TimelineSemaphoreSubmitInfo {
26007    #[inline]
26008    fn default() -> Self {
26009        Self {
26010            s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
26011            next: ptr::null(),
26012            wait_semaphore_value_count: u32::default(),
26013            wait_semaphore_values: ptr::null(),
26014            signal_semaphore_value_count: u32::default(),
26015            signal_semaphore_values: ptr::null(),
26016        }
26017    }
26018}
26019
26020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html>
26021#[repr(C)]
26022#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26023pub struct TraceRaysIndirectCommand2KHR {
26024    pub raygen_shader_record_address: DeviceAddress,
26025    pub raygen_shader_record_size: DeviceSize,
26026    pub miss_shader_binding_table_address: DeviceAddress,
26027    pub miss_shader_binding_table_size: DeviceSize,
26028    pub miss_shader_binding_table_stride: DeviceSize,
26029    pub hit_shader_binding_table_address: DeviceAddress,
26030    pub hit_shader_binding_table_size: DeviceSize,
26031    pub hit_shader_binding_table_stride: DeviceSize,
26032    pub callable_shader_binding_table_address: DeviceAddress,
26033    pub callable_shader_binding_table_size: DeviceSize,
26034    pub callable_shader_binding_table_stride: DeviceSize,
26035    pub width: u32,
26036    pub height: u32,
26037    pub depth: u32,
26038}
26039
26040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html>
26041#[repr(C)]
26042#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26043pub struct TraceRaysIndirectCommandKHR {
26044    pub width: u32,
26045    pub height: u32,
26046    pub depth: u32,
26047}
26048
26049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html>
26050#[repr(C)]
26051#[derive(Copy, Clone, Default, Debug, PartialEq)]
26052pub struct TransformMatrixKHR {
26053    pub matrix: [[f32; 4]; 3],
26054}
26055
26056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html>
26057#[repr(C)]
26058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26059pub struct ValidationCacheCreateInfoEXT {
26060    pub s_type: StructureType,
26061    pub next: *const c_void,
26062    pub flags: ValidationCacheCreateFlagsEXT,
26063    pub initial_data_size: usize,
26064    pub initial_data: *const c_void,
26065}
26066
26067impl Default for ValidationCacheCreateInfoEXT {
26068    #[inline]
26069    fn default() -> Self {
26070        Self {
26071            s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
26072            next: ptr::null(),
26073            flags: ValidationCacheCreateFlagsEXT::default(),
26074            initial_data_size: usize::default(),
26075            initial_data: ptr::null(),
26076        }
26077    }
26078}
26079
26080/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html>
26081#[repr(C)]
26082#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26083pub struct ValidationFeaturesEXT {
26084    pub s_type: StructureType,
26085    pub next: *const c_void,
26086    pub enabled_validation_feature_count: u32,
26087    pub enabled_validation_features: *const ValidationFeatureEnableEXT,
26088    pub disabled_validation_feature_count: u32,
26089    pub disabled_validation_features: *const ValidationFeatureDisableEXT,
26090}
26091
26092impl Default for ValidationFeaturesEXT {
26093    #[inline]
26094    fn default() -> Self {
26095        Self {
26096            s_type: StructureType::VALIDATION_FEATURES_EXT,
26097            next: ptr::null(),
26098            enabled_validation_feature_count: u32::default(),
26099            enabled_validation_features: ptr::null(),
26100            disabled_validation_feature_count: u32::default(),
26101            disabled_validation_features: ptr::null(),
26102        }
26103    }
26104}
26105
26106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html>
26107#[repr(C)]
26108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26109pub struct ValidationFlagsEXT {
26110    pub s_type: StructureType,
26111    pub next: *const c_void,
26112    pub disabled_validation_check_count: u32,
26113    pub disabled_validation_checks: *const ValidationCheckEXT,
26114}
26115
26116impl Default for ValidationFlagsEXT {
26117    #[inline]
26118    fn default() -> Self {
26119        Self {
26120            s_type: StructureType::VALIDATION_FLAGS_EXT,
26121            next: ptr::null(),
26122            disabled_validation_check_count: u32::default(),
26123            disabled_validation_checks: ptr::null(),
26124        }
26125    }
26126}
26127
26128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html>
26129#[repr(C)]
26130#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26131pub struct VertexInputAttributeDescription {
26132    pub location: u32,
26133    pub binding: u32,
26134    pub format: Format,
26135    pub offset: u32,
26136}
26137
26138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html>
26139#[repr(C)]
26140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26141pub struct VertexInputAttributeDescription2EXT {
26142    pub s_type: StructureType,
26143    pub next: *mut c_void,
26144    pub location: u32,
26145    pub binding: u32,
26146    pub format: Format,
26147    pub offset: u32,
26148}
26149
26150impl Default for VertexInputAttributeDescription2EXT {
26151    #[inline]
26152    fn default() -> Self {
26153        Self {
26154            s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
26155            next: ptr::null_mut(),
26156            location: u32::default(),
26157            binding: u32::default(),
26158            format: Format::default(),
26159            offset: u32::default(),
26160        }
26161    }
26162}
26163
26164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html>
26165#[repr(C)]
26166#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26167pub struct VertexInputBindingDescription {
26168    pub binding: u32,
26169    pub stride: u32,
26170    pub input_rate: VertexInputRate,
26171}
26172
26173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html>
26174#[repr(C)]
26175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26176pub struct VertexInputBindingDescription2EXT {
26177    pub s_type: StructureType,
26178    pub next: *mut c_void,
26179    pub binding: u32,
26180    pub stride: u32,
26181    pub input_rate: VertexInputRate,
26182    pub divisor: u32,
26183}
26184
26185impl Default for VertexInputBindingDescription2EXT {
26186    #[inline]
26187    fn default() -> Self {
26188        Self {
26189            s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
26190            next: ptr::null_mut(),
26191            binding: u32::default(),
26192            stride: u32::default(),
26193            input_rate: VertexInputRate::default(),
26194            divisor: u32::default(),
26195        }
26196    }
26197}
26198
26199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html>
26200#[repr(C)]
26201#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26202pub struct VertexInputBindingDivisorDescription {
26203    pub binding: u32,
26204    pub divisor: u32,
26205}
26206
26207/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html>
26208#[repr(C)]
26209#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26210pub struct ViSurfaceCreateInfoNN {
26211    pub s_type: StructureType,
26212    pub next: *const c_void,
26213    pub flags: ViSurfaceCreateFlagsNN,
26214    pub window: *mut c_void,
26215}
26216
26217impl Default for ViSurfaceCreateInfoNN {
26218    #[inline]
26219    fn default() -> Self {
26220        Self {
26221            s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
26222            next: ptr::null(),
26223            flags: ViSurfaceCreateFlagsNN::default(),
26224            window: ptr::null_mut(),
26225        }
26226    }
26227}
26228
26229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html>
26230#[repr(C)]
26231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26232pub struct VideoBeginCodingInfoKHR {
26233    pub s_type: StructureType,
26234    pub next: *const c_void,
26235    pub flags: VideoBeginCodingFlagsKHR,
26236    pub video_session: VideoSessionKHR,
26237    pub video_session_parameters: VideoSessionParametersKHR,
26238    pub reference_slot_count: u32,
26239    pub reference_slots: *const VideoReferenceSlotInfoKHR,
26240}
26241
26242impl Default for VideoBeginCodingInfoKHR {
26243    #[inline]
26244    fn default() -> Self {
26245        Self {
26246            s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
26247            next: ptr::null(),
26248            flags: VideoBeginCodingFlagsKHR::default(),
26249            video_session: VideoSessionKHR::default(),
26250            video_session_parameters: VideoSessionParametersKHR::default(),
26251            reference_slot_count: u32::default(),
26252            reference_slots: ptr::null(),
26253        }
26254    }
26255}
26256
26257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html>
26258#[repr(C)]
26259#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26260pub struct VideoCapabilitiesKHR {
26261    pub s_type: StructureType,
26262    pub next: *mut c_void,
26263    pub flags: VideoCapabilityFlagsKHR,
26264    pub min_bitstream_buffer_offset_alignment: DeviceSize,
26265    pub min_bitstream_buffer_size_alignment: DeviceSize,
26266    pub picture_access_granularity: Extent2D,
26267    pub min_coded_extent: Extent2D,
26268    pub max_coded_extent: Extent2D,
26269    pub max_dpb_slots: u32,
26270    pub max_active_reference_pictures: u32,
26271    pub std_header_version: ExtensionProperties,
26272}
26273
26274impl Default for VideoCapabilitiesKHR {
26275    #[inline]
26276    fn default() -> Self {
26277        Self {
26278            s_type: StructureType::VIDEO_CAPABILITIES_KHR,
26279            next: ptr::null_mut(),
26280            flags: VideoCapabilityFlagsKHR::default(),
26281            min_bitstream_buffer_offset_alignment: DeviceSize::default(),
26282            min_bitstream_buffer_size_alignment: DeviceSize::default(),
26283            picture_access_granularity: Extent2D::default(),
26284            min_coded_extent: Extent2D::default(),
26285            max_coded_extent: Extent2D::default(),
26286            max_dpb_slots: u32::default(),
26287            max_active_reference_pictures: u32::default(),
26288            std_header_version: ExtensionProperties::default(),
26289        }
26290    }
26291}
26292
26293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html>
26294#[repr(C)]
26295#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26296pub struct VideoCodingControlInfoKHR {
26297    pub s_type: StructureType,
26298    pub next: *const c_void,
26299    pub flags: VideoCodingControlFlagsKHR,
26300}
26301
26302impl Default for VideoCodingControlInfoKHR {
26303    #[inline]
26304    fn default() -> Self {
26305        Self {
26306            s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
26307            next: ptr::null(),
26308            flags: VideoCodingControlFlagsKHR::default(),
26309        }
26310    }
26311}
26312
26313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html>
26314#[repr(C)]
26315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26316pub struct VideoDecodeAV1CapabilitiesKHR {
26317    pub s_type: StructureType,
26318    pub next: *mut c_void,
26319    pub max_level: video::StdVideoAV1Level,
26320}
26321
26322impl Default for VideoDecodeAV1CapabilitiesKHR {
26323    #[inline]
26324    fn default() -> Self {
26325        Self {
26326            s_type: StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR,
26327            next: ptr::null_mut(),
26328            max_level: video::StdVideoAV1Level::default(),
26329        }
26330    }
26331}
26332
26333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html>
26334#[repr(C)]
26335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26336pub struct VideoDecodeAV1DpbSlotInfoKHR {
26337    pub s_type: StructureType,
26338    pub next: *const c_void,
26339    pub std_reference_info: *const video::StdVideoDecodeAV1ReferenceInfo,
26340}
26341
26342impl Default for VideoDecodeAV1DpbSlotInfoKHR {
26343    #[inline]
26344    fn default() -> Self {
26345        Self {
26346            s_type: StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR,
26347            next: ptr::null(),
26348            std_reference_info: ptr::null(),
26349        }
26350    }
26351}
26352
26353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html>
26354#[repr(C)]
26355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26356pub struct VideoDecodeAV1InlineSessionParametersInfoKHR {
26357    pub s_type: StructureType,
26358    pub next: *const c_void,
26359    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
26360}
26361
26362impl Default for VideoDecodeAV1InlineSessionParametersInfoKHR {
26363    #[inline]
26364    fn default() -> Self {
26365        Self {
26366            s_type: StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR,
26367            next: ptr::null(),
26368            std_sequence_header: ptr::null(),
26369        }
26370    }
26371}
26372
26373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html>
26374#[repr(C)]
26375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26376pub struct VideoDecodeAV1PictureInfoKHR {
26377    pub s_type: StructureType,
26378    pub next: *const c_void,
26379    pub std_picture_info: *const video::StdVideoDecodeAV1PictureInfo,
26380    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
26381    pub frame_header_offset: u32,
26382    pub tile_count: u32,
26383    pub tile_offsets: *const u32,
26384    pub tile_sizes: *const u32,
26385}
26386
26387impl Default for VideoDecodeAV1PictureInfoKHR {
26388    #[inline]
26389    fn default() -> Self {
26390        Self {
26391            s_type: StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR,
26392            next: ptr::null(),
26393            std_picture_info: ptr::null(),
26394            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
26395            frame_header_offset: u32::default(),
26396            tile_count: u32::default(),
26397            tile_offsets: ptr::null(),
26398            tile_sizes: ptr::null(),
26399        }
26400    }
26401}
26402
26403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html>
26404#[repr(C)]
26405#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26406pub struct VideoDecodeAV1ProfileInfoKHR {
26407    pub s_type: StructureType,
26408    pub next: *const c_void,
26409    pub std_profile: video::StdVideoAV1Profile,
26410    pub film_grain_support: Bool32,
26411}
26412
26413impl Default for VideoDecodeAV1ProfileInfoKHR {
26414    #[inline]
26415    fn default() -> Self {
26416        Self {
26417            s_type: StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR,
26418            next: ptr::null(),
26419            std_profile: video::StdVideoAV1Profile::default(),
26420            film_grain_support: Bool32::default(),
26421        }
26422    }
26423}
26424
26425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html>
26426#[repr(C)]
26427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26428pub struct VideoDecodeAV1SessionParametersCreateInfoKHR {
26429    pub s_type: StructureType,
26430    pub next: *const c_void,
26431    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
26432}
26433
26434impl Default for VideoDecodeAV1SessionParametersCreateInfoKHR {
26435    #[inline]
26436    fn default() -> Self {
26437        Self {
26438            s_type: StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
26439            next: ptr::null(),
26440            std_sequence_header: ptr::null(),
26441        }
26442    }
26443}
26444
26445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html>
26446#[repr(C)]
26447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26448pub struct VideoDecodeCapabilitiesKHR {
26449    pub s_type: StructureType,
26450    pub next: *mut c_void,
26451    pub flags: VideoDecodeCapabilityFlagsKHR,
26452}
26453
26454impl Default for VideoDecodeCapabilitiesKHR {
26455    #[inline]
26456    fn default() -> Self {
26457        Self {
26458            s_type: StructureType::VIDEO_DECODE_CAPABILITIES_KHR,
26459            next: ptr::null_mut(),
26460            flags: VideoDecodeCapabilityFlagsKHR::default(),
26461        }
26462    }
26463}
26464
26465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html>
26466#[repr(C)]
26467#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26468pub struct VideoDecodeH264CapabilitiesKHR {
26469    pub s_type: StructureType,
26470    pub next: *mut c_void,
26471    pub max_level_idc: video::StdVideoH264LevelIdc,
26472    pub field_offset_granularity: Offset2D,
26473}
26474
26475impl Default for VideoDecodeH264CapabilitiesKHR {
26476    #[inline]
26477    fn default() -> Self {
26478        Self {
26479            s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR,
26480            next: ptr::null_mut(),
26481            max_level_idc: video::StdVideoH264LevelIdc::default(),
26482            field_offset_granularity: Offset2D::default(),
26483        }
26484    }
26485}
26486
26487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html>
26488#[repr(C)]
26489#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26490pub struct VideoDecodeH264DpbSlotInfoKHR {
26491    pub s_type: StructureType,
26492    pub next: *const c_void,
26493    pub std_reference_info: *const video::StdVideoDecodeH264ReferenceInfo,
26494}
26495
26496impl Default for VideoDecodeH264DpbSlotInfoKHR {
26497    #[inline]
26498    fn default() -> Self {
26499        Self {
26500            s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR,
26501            next: ptr::null(),
26502            std_reference_info: ptr::null(),
26503        }
26504    }
26505}
26506
26507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html>
26508#[repr(C)]
26509#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26510pub struct VideoDecodeH264InlineSessionParametersInfoKHR {
26511    pub s_type: StructureType,
26512    pub next: *const c_void,
26513    pub std_sps: *const video::StdVideoH264SequenceParameterSet,
26514    pub std_pps: *const video::StdVideoH264PictureParameterSet,
26515}
26516
26517impl Default for VideoDecodeH264InlineSessionParametersInfoKHR {
26518    #[inline]
26519    fn default() -> Self {
26520        Self {
26521            s_type: StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR,
26522            next: ptr::null(),
26523            std_sps: ptr::null(),
26524            std_pps: ptr::null(),
26525        }
26526    }
26527}
26528
26529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html>
26530#[repr(C)]
26531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26532pub struct VideoDecodeH264PictureInfoKHR {
26533    pub s_type: StructureType,
26534    pub next: *const c_void,
26535    pub std_picture_info: *const video::StdVideoDecodeH264PictureInfo,
26536    pub slice_count: u32,
26537    pub slice_offsets: *const u32,
26538}
26539
26540impl Default for VideoDecodeH264PictureInfoKHR {
26541    #[inline]
26542    fn default() -> Self {
26543        Self {
26544            s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR,
26545            next: ptr::null(),
26546            std_picture_info: ptr::null(),
26547            slice_count: u32::default(),
26548            slice_offsets: ptr::null(),
26549        }
26550    }
26551}
26552
26553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html>
26554#[repr(C)]
26555#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26556pub struct VideoDecodeH264ProfileInfoKHR {
26557    pub s_type: StructureType,
26558    pub next: *const c_void,
26559    pub std_profile_idc: video::StdVideoH264ProfileIdc,
26560    pub picture_layout: VideoDecodeH264PictureLayoutFlagsKHR,
26561}
26562
26563impl Default for VideoDecodeH264ProfileInfoKHR {
26564    #[inline]
26565    fn default() -> Self {
26566        Self {
26567            s_type: StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR,
26568            next: ptr::null(),
26569            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
26570            picture_layout: VideoDecodeH264PictureLayoutFlagsKHR::default(),
26571        }
26572    }
26573}
26574
26575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html>
26576#[repr(C)]
26577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26578pub struct VideoDecodeH264SessionParametersAddInfoKHR {
26579    pub s_type: StructureType,
26580    pub next: *const c_void,
26581    pub std_sps_count: u32,
26582    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
26583    pub std_pps_count: u32,
26584    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
26585}
26586
26587impl Default for VideoDecodeH264SessionParametersAddInfoKHR {
26588    #[inline]
26589    fn default() -> Self {
26590        Self {
26591            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
26592            next: ptr::null(),
26593            std_sps_count: u32::default(),
26594            std_sp_ss: ptr::null(),
26595            std_pps_count: u32::default(),
26596            std_pp_ss: ptr::null(),
26597        }
26598    }
26599}
26600
26601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html>
26602#[repr(C)]
26603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26604pub struct VideoDecodeH264SessionParametersCreateInfoKHR {
26605    pub s_type: StructureType,
26606    pub next: *const c_void,
26607    pub max_std_sps_count: u32,
26608    pub max_std_pps_count: u32,
26609    pub parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoKHR,
26610}
26611
26612impl Default for VideoDecodeH264SessionParametersCreateInfoKHR {
26613    #[inline]
26614    fn default() -> Self {
26615        Self {
26616            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
26617            next: ptr::null(),
26618            max_std_sps_count: u32::default(),
26619            max_std_pps_count: u32::default(),
26620            parameters_add_info: ptr::null(),
26621        }
26622    }
26623}
26624
26625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html>
26626#[repr(C)]
26627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26628pub struct VideoDecodeH265CapabilitiesKHR {
26629    pub s_type: StructureType,
26630    pub next: *mut c_void,
26631    pub max_level_idc: video::StdVideoH265LevelIdc,
26632}
26633
26634impl Default for VideoDecodeH265CapabilitiesKHR {
26635    #[inline]
26636    fn default() -> Self {
26637        Self {
26638            s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR,
26639            next: ptr::null_mut(),
26640            max_level_idc: video::StdVideoH265LevelIdc::default(),
26641        }
26642    }
26643}
26644
26645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html>
26646#[repr(C)]
26647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26648pub struct VideoDecodeH265DpbSlotInfoKHR {
26649    pub s_type: StructureType,
26650    pub next: *const c_void,
26651    pub std_reference_info: *const video::StdVideoDecodeH265ReferenceInfo,
26652}
26653
26654impl Default for VideoDecodeH265DpbSlotInfoKHR {
26655    #[inline]
26656    fn default() -> Self {
26657        Self {
26658            s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR,
26659            next: ptr::null(),
26660            std_reference_info: ptr::null(),
26661        }
26662    }
26663}
26664
26665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html>
26666#[repr(C)]
26667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26668pub struct VideoDecodeH265InlineSessionParametersInfoKHR {
26669    pub s_type: StructureType,
26670    pub next: *const c_void,
26671    pub std_vps: *const video::StdVideoH265VideoParameterSet,
26672    pub std_sps: *const video::StdVideoH265SequenceParameterSet,
26673    pub std_pps: *const video::StdVideoH265PictureParameterSet,
26674}
26675
26676impl Default for VideoDecodeH265InlineSessionParametersInfoKHR {
26677    #[inline]
26678    fn default() -> Self {
26679        Self {
26680            s_type: StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR,
26681            next: ptr::null(),
26682            std_vps: ptr::null(),
26683            std_sps: ptr::null(),
26684            std_pps: ptr::null(),
26685        }
26686    }
26687}
26688
26689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html>
26690#[repr(C)]
26691#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26692pub struct VideoDecodeH265PictureInfoKHR {
26693    pub s_type: StructureType,
26694    pub next: *const c_void,
26695    pub std_picture_info: *const video::StdVideoDecodeH265PictureInfo,
26696    pub slice_segment_count: u32,
26697    pub slice_segment_offsets: *const u32,
26698}
26699
26700impl Default for VideoDecodeH265PictureInfoKHR {
26701    #[inline]
26702    fn default() -> Self {
26703        Self {
26704            s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR,
26705            next: ptr::null(),
26706            std_picture_info: ptr::null(),
26707            slice_segment_count: u32::default(),
26708            slice_segment_offsets: ptr::null(),
26709        }
26710    }
26711}
26712
26713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html>
26714#[repr(C)]
26715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26716pub struct VideoDecodeH265ProfileInfoKHR {
26717    pub s_type: StructureType,
26718    pub next: *const c_void,
26719    pub std_profile_idc: video::StdVideoH265ProfileIdc,
26720}
26721
26722impl Default for VideoDecodeH265ProfileInfoKHR {
26723    #[inline]
26724    fn default() -> Self {
26725        Self {
26726            s_type: StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR,
26727            next: ptr::null(),
26728            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
26729        }
26730    }
26731}
26732
26733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html>
26734#[repr(C)]
26735#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26736pub struct VideoDecodeH265SessionParametersAddInfoKHR {
26737    pub s_type: StructureType,
26738    pub next: *const c_void,
26739    pub std_vps_count: u32,
26740    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
26741    pub std_sps_count: u32,
26742    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
26743    pub std_pps_count: u32,
26744    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
26745}
26746
26747impl Default for VideoDecodeH265SessionParametersAddInfoKHR {
26748    #[inline]
26749    fn default() -> Self {
26750        Self {
26751            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
26752            next: ptr::null(),
26753            std_vps_count: u32::default(),
26754            std_vp_ss: ptr::null(),
26755            std_sps_count: u32::default(),
26756            std_sp_ss: ptr::null(),
26757            std_pps_count: u32::default(),
26758            std_pp_ss: ptr::null(),
26759        }
26760    }
26761}
26762
26763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html>
26764#[repr(C)]
26765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26766pub struct VideoDecodeH265SessionParametersCreateInfoKHR {
26767    pub s_type: StructureType,
26768    pub next: *const c_void,
26769    pub max_std_vps_count: u32,
26770    pub max_std_sps_count: u32,
26771    pub max_std_pps_count: u32,
26772    pub parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoKHR,
26773}
26774
26775impl Default for VideoDecodeH265SessionParametersCreateInfoKHR {
26776    #[inline]
26777    fn default() -> Self {
26778        Self {
26779            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
26780            next: ptr::null(),
26781            max_std_vps_count: u32::default(),
26782            max_std_sps_count: u32::default(),
26783            max_std_pps_count: u32::default(),
26784            parameters_add_info: ptr::null(),
26785        }
26786    }
26787}
26788
26789/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html>
26790#[repr(C)]
26791#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26792pub struct VideoDecodeInfoKHR {
26793    pub s_type: StructureType,
26794    pub next: *const c_void,
26795    pub flags: VideoDecodeFlagsKHR,
26796    pub src_buffer: Buffer,
26797    pub src_buffer_offset: DeviceSize,
26798    pub src_buffer_range: DeviceSize,
26799    pub dst_picture_resource: VideoPictureResourceInfoKHR,
26800    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
26801    pub reference_slot_count: u32,
26802    pub reference_slots: *const VideoReferenceSlotInfoKHR,
26803}
26804
26805impl Default for VideoDecodeInfoKHR {
26806    #[inline]
26807    fn default() -> Self {
26808        Self {
26809            s_type: StructureType::VIDEO_DECODE_INFO_KHR,
26810            next: ptr::null(),
26811            flags: VideoDecodeFlagsKHR::default(),
26812            src_buffer: Buffer::default(),
26813            src_buffer_offset: DeviceSize::default(),
26814            src_buffer_range: DeviceSize::default(),
26815            dst_picture_resource: VideoPictureResourceInfoKHR::default(),
26816            setup_reference_slot: ptr::null(),
26817            reference_slot_count: u32::default(),
26818            reference_slots: ptr::null(),
26819        }
26820    }
26821}
26822
26823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html>
26824#[repr(C)]
26825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26826pub struct VideoDecodeUsageInfoKHR {
26827    pub s_type: StructureType,
26828    pub next: *const c_void,
26829    pub video_usage_hints: VideoDecodeUsageFlagsKHR,
26830}
26831
26832impl Default for VideoDecodeUsageInfoKHR {
26833    #[inline]
26834    fn default() -> Self {
26835        Self {
26836            s_type: StructureType::VIDEO_DECODE_USAGE_INFO_KHR,
26837            next: ptr::null(),
26838            video_usage_hints: VideoDecodeUsageFlagsKHR::default(),
26839        }
26840    }
26841}
26842
26843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9CapabilitiesKHR.html>
26844#[repr(C)]
26845#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26846pub struct VideoDecodeVP9CapabilitiesKHR {
26847    pub s_type: StructureType,
26848    pub next: *mut c_void,
26849    pub max_level: video::StdVideoVP9Level,
26850}
26851
26852impl Default for VideoDecodeVP9CapabilitiesKHR {
26853    #[inline]
26854    fn default() -> Self {
26855        Self {
26856            s_type: StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR,
26857            next: ptr::null_mut(),
26858            max_level: video::StdVideoVP9Level::default(),
26859        }
26860    }
26861}
26862
26863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9PictureInfoKHR.html>
26864#[repr(C)]
26865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26866pub struct VideoDecodeVP9PictureInfoKHR {
26867    pub s_type: StructureType,
26868    pub next: *const c_void,
26869    pub std_picture_info: *const video::StdVideoDecodeVP9PictureInfo,
26870    pub reference_name_slot_indices: [i32; MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
26871    pub uncompressed_header_offset: u32,
26872    pub compressed_header_offset: u32,
26873    pub tiles_offset: u32,
26874}
26875
26876impl Default for VideoDecodeVP9PictureInfoKHR {
26877    #[inline]
26878    fn default() -> Self {
26879        Self {
26880            s_type: StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR,
26881            next: ptr::null(),
26882            std_picture_info: ptr::null(),
26883            reference_name_slot_indices: [i32::default(); MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
26884            uncompressed_header_offset: u32::default(),
26885            compressed_header_offset: u32::default(),
26886            tiles_offset: u32::default(),
26887        }
26888    }
26889}
26890
26891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9ProfileInfoKHR.html>
26892#[repr(C)]
26893#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26894pub struct VideoDecodeVP9ProfileInfoKHR {
26895    pub s_type: StructureType,
26896    pub next: *const c_void,
26897    pub std_profile: video::StdVideoVP9Profile,
26898}
26899
26900impl Default for VideoDecodeVP9ProfileInfoKHR {
26901    #[inline]
26902    fn default() -> Self {
26903        Self {
26904            s_type: StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR,
26905            next: ptr::null(),
26906            std_profile: video::StdVideoVP9Profile::default(),
26907        }
26908    }
26909}
26910
26911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html>
26912#[repr(C)]
26913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26914pub struct VideoEncodeAV1CapabilitiesKHR {
26915    pub s_type: StructureType,
26916    pub next: *mut c_void,
26917    pub flags: VideoEncodeAV1CapabilityFlagsKHR,
26918    pub max_level: video::StdVideoAV1Level,
26919    pub coded_picture_alignment: Extent2D,
26920    pub max_tiles: Extent2D,
26921    pub min_tile_size: Extent2D,
26922    pub max_tile_size: Extent2D,
26923    pub superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
26924    pub max_single_reference_count: u32,
26925    pub single_reference_name_mask: u32,
26926    pub max_unidirectional_compound_reference_count: u32,
26927    pub max_unidirectional_compound_group1_reference_count: u32,
26928    pub unidirectional_compound_reference_name_mask: u32,
26929    pub max_bidirectional_compound_reference_count: u32,
26930    pub max_bidirectional_compound_group1_reference_count: u32,
26931    pub max_bidirectional_compound_group2_reference_count: u32,
26932    pub bidirectional_compound_reference_name_mask: u32,
26933    pub max_temporal_layer_count: u32,
26934    pub max_spatial_layer_count: u32,
26935    pub max_operating_points: u32,
26936    pub min_q_index: u32,
26937    pub max_q_index: u32,
26938    pub prefers_gop_remaining_frames: Bool32,
26939    pub requires_gop_remaining_frames: Bool32,
26940    pub std_syntax_flags: VideoEncodeAV1StdFlagsKHR,
26941}
26942
26943impl Default for VideoEncodeAV1CapabilitiesKHR {
26944    #[inline]
26945    fn default() -> Self {
26946        Self {
26947            s_type: StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR,
26948            next: ptr::null_mut(),
26949            flags: VideoEncodeAV1CapabilityFlagsKHR::default(),
26950            max_level: video::StdVideoAV1Level::default(),
26951            coded_picture_alignment: Extent2D::default(),
26952            max_tiles: Extent2D::default(),
26953            min_tile_size: Extent2D::default(),
26954            max_tile_size: Extent2D::default(),
26955            superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
26956            max_single_reference_count: u32::default(),
26957            single_reference_name_mask: u32::default(),
26958            max_unidirectional_compound_reference_count: u32::default(),
26959            max_unidirectional_compound_group1_reference_count: u32::default(),
26960            unidirectional_compound_reference_name_mask: u32::default(),
26961            max_bidirectional_compound_reference_count: u32::default(),
26962            max_bidirectional_compound_group1_reference_count: u32::default(),
26963            max_bidirectional_compound_group2_reference_count: u32::default(),
26964            bidirectional_compound_reference_name_mask: u32::default(),
26965            max_temporal_layer_count: u32::default(),
26966            max_spatial_layer_count: u32::default(),
26967            max_operating_points: u32::default(),
26968            min_q_index: u32::default(),
26969            max_q_index: u32::default(),
26970            prefers_gop_remaining_frames: Bool32::default(),
26971            requires_gop_remaining_frames: Bool32::default(),
26972            std_syntax_flags: VideoEncodeAV1StdFlagsKHR::default(),
26973        }
26974    }
26975}
26976
26977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html>
26978#[repr(C)]
26979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26980pub struct VideoEncodeAV1DpbSlotInfoKHR {
26981    pub s_type: StructureType,
26982    pub next: *const c_void,
26983    pub std_reference_info: *const video::StdVideoEncodeAV1ReferenceInfo,
26984}
26985
26986impl Default for VideoEncodeAV1DpbSlotInfoKHR {
26987    #[inline]
26988    fn default() -> Self {
26989        Self {
26990            s_type: StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR,
26991            next: ptr::null(),
26992            std_reference_info: ptr::null(),
26993        }
26994    }
26995}
26996
26997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html>
26998#[repr(C)]
26999#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27000pub struct VideoEncodeAV1FrameSizeKHR {
27001    pub intra_frame_size: u32,
27002    pub predictive_frame_size: u32,
27003    pub bipredictive_frame_size: u32,
27004}
27005
27006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html>
27007#[repr(C)]
27008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27009pub struct VideoEncodeAV1GopRemainingFrameInfoKHR {
27010    pub s_type: StructureType,
27011    pub next: *const c_void,
27012    pub use_gop_remaining_frames: Bool32,
27013    pub gop_remaining_intra: u32,
27014    pub gop_remaining_predictive: u32,
27015    pub gop_remaining_bipredictive: u32,
27016}
27017
27018impl Default for VideoEncodeAV1GopRemainingFrameInfoKHR {
27019    #[inline]
27020    fn default() -> Self {
27021        Self {
27022            s_type: StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR,
27023            next: ptr::null(),
27024            use_gop_remaining_frames: Bool32::default(),
27025            gop_remaining_intra: u32::default(),
27026            gop_remaining_predictive: u32::default(),
27027            gop_remaining_bipredictive: u32::default(),
27028        }
27029    }
27030}
27031
27032/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html>
27033#[repr(C)]
27034#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27035pub struct VideoEncodeAV1PictureInfoKHR {
27036    pub s_type: StructureType,
27037    pub next: *const c_void,
27038    pub prediction_mode: VideoEncodeAV1PredictionModeKHR,
27039    pub rate_control_group: VideoEncodeAV1RateControlGroupKHR,
27040    pub constant_q_index: u32,
27041    pub std_picture_info: *const video::StdVideoEncodeAV1PictureInfo,
27042    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
27043    pub primary_reference_cdf_only: Bool32,
27044    pub generate_obu_extension_header: Bool32,
27045}
27046
27047impl Default for VideoEncodeAV1PictureInfoKHR {
27048    #[inline]
27049    fn default() -> Self {
27050        Self {
27051            s_type: StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR,
27052            next: ptr::null(),
27053            prediction_mode: VideoEncodeAV1PredictionModeKHR::default(),
27054            rate_control_group: VideoEncodeAV1RateControlGroupKHR::default(),
27055            constant_q_index: u32::default(),
27056            std_picture_info: ptr::null(),
27057            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
27058            primary_reference_cdf_only: Bool32::default(),
27059            generate_obu_extension_header: Bool32::default(),
27060        }
27061    }
27062}
27063
27064/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html>
27065#[repr(C)]
27066#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27067pub struct VideoEncodeAV1ProfileInfoKHR {
27068    pub s_type: StructureType,
27069    pub next: *const c_void,
27070    pub std_profile: video::StdVideoAV1Profile,
27071}
27072
27073impl Default for VideoEncodeAV1ProfileInfoKHR {
27074    #[inline]
27075    fn default() -> Self {
27076        Self {
27077            s_type: StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR,
27078            next: ptr::null(),
27079            std_profile: video::StdVideoAV1Profile::default(),
27080        }
27081    }
27082}
27083
27084/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html>
27085#[repr(C)]
27086#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27087pub struct VideoEncodeAV1QIndexKHR {
27088    pub intra_q_index: u32,
27089    pub predictive_q_index: u32,
27090    pub bipredictive_q_index: u32,
27091}
27092
27093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html>
27094#[repr(C)]
27095#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27096pub struct VideoEncodeAV1QualityLevelPropertiesKHR {
27097    pub s_type: StructureType,
27098    pub next: *mut c_void,
27099    pub preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR,
27100    pub preferred_gop_frame_count: u32,
27101    pub preferred_key_frame_period: u32,
27102    pub preferred_consecutive_bipredictive_frame_count: u32,
27103    pub preferred_temporal_layer_count: u32,
27104    pub preferred_constant_q_index: VideoEncodeAV1QIndexKHR,
27105    pub preferred_max_single_reference_count: u32,
27106    pub preferred_single_reference_name_mask: u32,
27107    pub preferred_max_unidirectional_compound_reference_count: u32,
27108    pub preferred_max_unidirectional_compound_group1_reference_count: u32,
27109    pub preferred_unidirectional_compound_reference_name_mask: u32,
27110    pub preferred_max_bidirectional_compound_reference_count: u32,
27111    pub preferred_max_bidirectional_compound_group1_reference_count: u32,
27112    pub preferred_max_bidirectional_compound_group2_reference_count: u32,
27113    pub preferred_bidirectional_compound_reference_name_mask: u32,
27114}
27115
27116impl Default for VideoEncodeAV1QualityLevelPropertiesKHR {
27117    #[inline]
27118    fn default() -> Self {
27119        Self {
27120            s_type: StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR,
27121            next: ptr::null_mut(),
27122            preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR::default(),
27123            preferred_gop_frame_count: u32::default(),
27124            preferred_key_frame_period: u32::default(),
27125            preferred_consecutive_bipredictive_frame_count: u32::default(),
27126            preferred_temporal_layer_count: u32::default(),
27127            preferred_constant_q_index: VideoEncodeAV1QIndexKHR::default(),
27128            preferred_max_single_reference_count: u32::default(),
27129            preferred_single_reference_name_mask: u32::default(),
27130            preferred_max_unidirectional_compound_reference_count: u32::default(),
27131            preferred_max_unidirectional_compound_group1_reference_count: u32::default(),
27132            preferred_unidirectional_compound_reference_name_mask: u32::default(),
27133            preferred_max_bidirectional_compound_reference_count: u32::default(),
27134            preferred_max_bidirectional_compound_group1_reference_count: u32::default(),
27135            preferred_max_bidirectional_compound_group2_reference_count: u32::default(),
27136            preferred_bidirectional_compound_reference_name_mask: u32::default(),
27137        }
27138    }
27139}
27140
27141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html>
27142#[repr(C)]
27143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27144pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHR {
27145    pub s_type: StructureType,
27146    pub next: *mut c_void,
27147    pub min_q_index_delta: i32,
27148    pub max_q_index_delta: i32,
27149}
27150
27151impl Default for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
27152    #[inline]
27153    fn default() -> Self {
27154        Self {
27155            s_type: StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR,
27156            next: ptr::null_mut(),
27157            min_q_index_delta: i32::default(),
27158            max_q_index_delta: i32::default(),
27159        }
27160    }
27161}
27162
27163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html>
27164#[repr(C)]
27165#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27166pub struct VideoEncodeAV1RateControlInfoKHR {
27167    pub s_type: StructureType,
27168    pub next: *const c_void,
27169    pub flags: VideoEncodeAV1RateControlFlagsKHR,
27170    pub gop_frame_count: u32,
27171    pub key_frame_period: u32,
27172    pub consecutive_bipredictive_frame_count: u32,
27173    pub temporal_layer_count: u32,
27174}
27175
27176impl Default for VideoEncodeAV1RateControlInfoKHR {
27177    #[inline]
27178    fn default() -> Self {
27179        Self {
27180            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR,
27181            next: ptr::null(),
27182            flags: VideoEncodeAV1RateControlFlagsKHR::default(),
27183            gop_frame_count: u32::default(),
27184            key_frame_period: u32::default(),
27185            consecutive_bipredictive_frame_count: u32::default(),
27186            temporal_layer_count: u32::default(),
27187        }
27188    }
27189}
27190
27191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html>
27192#[repr(C)]
27193#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27194pub struct VideoEncodeAV1RateControlLayerInfoKHR {
27195    pub s_type: StructureType,
27196    pub next: *const c_void,
27197    pub use_min_q_index: Bool32,
27198    pub min_q_index: VideoEncodeAV1QIndexKHR,
27199    pub use_max_q_index: Bool32,
27200    pub max_q_index: VideoEncodeAV1QIndexKHR,
27201    pub use_max_frame_size: Bool32,
27202    pub max_frame_size: VideoEncodeAV1FrameSizeKHR,
27203}
27204
27205impl Default for VideoEncodeAV1RateControlLayerInfoKHR {
27206    #[inline]
27207    fn default() -> Self {
27208        Self {
27209            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR,
27210            next: ptr::null(),
27211            use_min_q_index: Bool32::default(),
27212            min_q_index: VideoEncodeAV1QIndexKHR::default(),
27213            use_max_q_index: Bool32::default(),
27214            max_q_index: VideoEncodeAV1QIndexKHR::default(),
27215            use_max_frame_size: Bool32::default(),
27216            max_frame_size: VideoEncodeAV1FrameSizeKHR::default(),
27217        }
27218    }
27219}
27220
27221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html>
27222#[repr(C)]
27223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27224pub struct VideoEncodeAV1SessionCreateInfoKHR {
27225    pub s_type: StructureType,
27226    pub next: *const c_void,
27227    pub use_max_level: Bool32,
27228    pub max_level: video::StdVideoAV1Level,
27229}
27230
27231impl Default for VideoEncodeAV1SessionCreateInfoKHR {
27232    #[inline]
27233    fn default() -> Self {
27234        Self {
27235            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR,
27236            next: ptr::null(),
27237            use_max_level: Bool32::default(),
27238            max_level: video::StdVideoAV1Level::default(),
27239        }
27240    }
27241}
27242
27243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html>
27244#[repr(C)]
27245#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27246pub struct VideoEncodeAV1SessionParametersCreateInfoKHR {
27247    pub s_type: StructureType,
27248    pub next: *const c_void,
27249    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
27250    pub std_decoder_model_info: *const video::StdVideoEncodeAV1DecoderModelInfo,
27251    pub std_operating_point_count: u32,
27252    pub std_operating_points: *const video::StdVideoEncodeAV1OperatingPointInfo,
27253}
27254
27255impl Default for VideoEncodeAV1SessionParametersCreateInfoKHR {
27256    #[inline]
27257    fn default() -> Self {
27258        Self {
27259            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
27260            next: ptr::null(),
27261            std_sequence_header: ptr::null(),
27262            std_decoder_model_info: ptr::null(),
27263            std_operating_point_count: u32::default(),
27264            std_operating_points: ptr::null(),
27265        }
27266    }
27267}
27268
27269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html>
27270#[repr(C)]
27271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27272pub struct VideoEncodeCapabilitiesKHR {
27273    pub s_type: StructureType,
27274    pub next: *mut c_void,
27275    pub flags: VideoEncodeCapabilityFlagsKHR,
27276    pub rate_control_modes: VideoEncodeRateControlModeFlagsKHR,
27277    pub max_rate_control_layers: u32,
27278    pub max_bitrate: u64,
27279    pub max_quality_levels: u32,
27280    pub encode_input_picture_granularity: Extent2D,
27281    pub supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
27282}
27283
27284impl Default for VideoEncodeCapabilitiesKHR {
27285    #[inline]
27286    fn default() -> Self {
27287        Self {
27288            s_type: StructureType::VIDEO_ENCODE_CAPABILITIES_KHR,
27289            next: ptr::null_mut(),
27290            flags: VideoEncodeCapabilityFlagsKHR::default(),
27291            rate_control_modes: VideoEncodeRateControlModeFlagsKHR::default(),
27292            max_rate_control_layers: u32::default(),
27293            max_bitrate: u64::default(),
27294            max_quality_levels: u32::default(),
27295            encode_input_picture_granularity: Extent2D::default(),
27296            supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
27297        }
27298    }
27299}
27300
27301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html>
27302#[repr(C)]
27303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27304pub struct VideoEncodeH264CapabilitiesKHR {
27305    pub s_type: StructureType,
27306    pub next: *mut c_void,
27307    pub flags: VideoEncodeH264CapabilityFlagsKHR,
27308    pub max_level_idc: video::StdVideoH264LevelIdc,
27309    pub max_slice_count: u32,
27310    pub max_p_picture_l0_reference_count: u32,
27311    pub max_b_picture_l0_reference_count: u32,
27312    pub max_l1_reference_count: u32,
27313    pub max_temporal_layer_count: u32,
27314    pub expect_dyadic_temporal_layer_pattern: Bool32,
27315    pub min_qp: i32,
27316    pub max_qp: i32,
27317    pub prefers_gop_remaining_frames: Bool32,
27318    pub requires_gop_remaining_frames: Bool32,
27319    pub std_syntax_flags: VideoEncodeH264StdFlagsKHR,
27320}
27321
27322impl Default for VideoEncodeH264CapabilitiesKHR {
27323    #[inline]
27324    fn default() -> Self {
27325        Self {
27326            s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR,
27327            next: ptr::null_mut(),
27328            flags: VideoEncodeH264CapabilityFlagsKHR::default(),
27329            max_level_idc: video::StdVideoH264LevelIdc::default(),
27330            max_slice_count: u32::default(),
27331            max_p_picture_l0_reference_count: u32::default(),
27332            max_b_picture_l0_reference_count: u32::default(),
27333            max_l1_reference_count: u32::default(),
27334            max_temporal_layer_count: u32::default(),
27335            expect_dyadic_temporal_layer_pattern: Bool32::default(),
27336            min_qp: i32::default(),
27337            max_qp: i32::default(),
27338            prefers_gop_remaining_frames: Bool32::default(),
27339            requires_gop_remaining_frames: Bool32::default(),
27340            std_syntax_flags: VideoEncodeH264StdFlagsKHR::default(),
27341        }
27342    }
27343}
27344
27345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html>
27346#[repr(C)]
27347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27348pub struct VideoEncodeH264DpbSlotInfoKHR {
27349    pub s_type: StructureType,
27350    pub next: *const c_void,
27351    pub std_reference_info: *const video::StdVideoEncodeH264ReferenceInfo,
27352}
27353
27354impl Default for VideoEncodeH264DpbSlotInfoKHR {
27355    #[inline]
27356    fn default() -> Self {
27357        Self {
27358            s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR,
27359            next: ptr::null(),
27360            std_reference_info: ptr::null(),
27361        }
27362    }
27363}
27364
27365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html>
27366#[repr(C)]
27367#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27368pub struct VideoEncodeH264FrameSizeKHR {
27369    pub frame_i_size: u32,
27370    pub frame_p_size: u32,
27371    pub frame_b_size: u32,
27372}
27373
27374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html>
27375#[repr(C)]
27376#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27377pub struct VideoEncodeH264GopRemainingFrameInfoKHR {
27378    pub s_type: StructureType,
27379    pub next: *const c_void,
27380    pub use_gop_remaining_frames: Bool32,
27381    pub gop_remaining_i: u32,
27382    pub gop_remaining_p: u32,
27383    pub gop_remaining_b: u32,
27384}
27385
27386impl Default for VideoEncodeH264GopRemainingFrameInfoKHR {
27387    #[inline]
27388    fn default() -> Self {
27389        Self {
27390            s_type: StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR,
27391            next: ptr::null(),
27392            use_gop_remaining_frames: Bool32::default(),
27393            gop_remaining_i: u32::default(),
27394            gop_remaining_p: u32::default(),
27395            gop_remaining_b: u32::default(),
27396        }
27397    }
27398}
27399
27400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html>
27401#[repr(C)]
27402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27403pub struct VideoEncodeH264NaluSliceInfoKHR {
27404    pub s_type: StructureType,
27405    pub next: *const c_void,
27406    pub constant_qp: i32,
27407    pub std_slice_header: *const video::StdVideoEncodeH264SliceHeader,
27408}
27409
27410impl Default for VideoEncodeH264NaluSliceInfoKHR {
27411    #[inline]
27412    fn default() -> Self {
27413        Self {
27414            s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR,
27415            next: ptr::null(),
27416            constant_qp: i32::default(),
27417            std_slice_header: ptr::null(),
27418        }
27419    }
27420}
27421
27422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html>
27423#[repr(C)]
27424#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27425pub struct VideoEncodeH264PictureInfoKHR {
27426    pub s_type: StructureType,
27427    pub next: *const c_void,
27428    pub nalu_slice_entry_count: u32,
27429    pub nalu_slice_entries: *const VideoEncodeH264NaluSliceInfoKHR,
27430    pub std_picture_info: *const video::StdVideoEncodeH264PictureInfo,
27431    pub generate_prefix_nalu: Bool32,
27432}
27433
27434impl Default for VideoEncodeH264PictureInfoKHR {
27435    #[inline]
27436    fn default() -> Self {
27437        Self {
27438            s_type: StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR,
27439            next: ptr::null(),
27440            nalu_slice_entry_count: u32::default(),
27441            nalu_slice_entries: ptr::null(),
27442            std_picture_info: ptr::null(),
27443            generate_prefix_nalu: Bool32::default(),
27444        }
27445    }
27446}
27447
27448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html>
27449#[repr(C)]
27450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27451pub struct VideoEncodeH264ProfileInfoKHR {
27452    pub s_type: StructureType,
27453    pub next: *const c_void,
27454    pub std_profile_idc: video::StdVideoH264ProfileIdc,
27455}
27456
27457impl Default for VideoEncodeH264ProfileInfoKHR {
27458    #[inline]
27459    fn default() -> Self {
27460        Self {
27461            s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR,
27462            next: ptr::null(),
27463            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
27464        }
27465    }
27466}
27467
27468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html>
27469#[repr(C)]
27470#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27471pub struct VideoEncodeH264QpKHR {
27472    pub qp_i: i32,
27473    pub qp_p: i32,
27474    pub qp_b: i32,
27475}
27476
27477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html>
27478#[repr(C)]
27479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27480pub struct VideoEncodeH264QualityLevelPropertiesKHR {
27481    pub s_type: StructureType,
27482    pub next: *mut c_void,
27483    pub preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR,
27484    pub preferred_gop_frame_count: u32,
27485    pub preferred_idr_period: u32,
27486    pub preferred_consecutive_b_frame_count: u32,
27487    pub preferred_temporal_layer_count: u32,
27488    pub preferred_constant_qp: VideoEncodeH264QpKHR,
27489    pub preferred_max_l0_reference_count: u32,
27490    pub preferred_max_l1_reference_count: u32,
27491    pub preferred_std_entropy_coding_mode_flag: Bool32,
27492}
27493
27494impl Default for VideoEncodeH264QualityLevelPropertiesKHR {
27495    #[inline]
27496    fn default() -> Self {
27497        Self {
27498            s_type: StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
27499            next: ptr::null_mut(),
27500            preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR::default(),
27501            preferred_gop_frame_count: u32::default(),
27502            preferred_idr_period: u32::default(),
27503            preferred_consecutive_b_frame_count: u32::default(),
27504            preferred_temporal_layer_count: u32::default(),
27505            preferred_constant_qp: VideoEncodeH264QpKHR::default(),
27506            preferred_max_l0_reference_count: u32::default(),
27507            preferred_max_l1_reference_count: u32::default(),
27508            preferred_std_entropy_coding_mode_flag: Bool32::default(),
27509        }
27510    }
27511}
27512
27513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html>
27514#[repr(C)]
27515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27516pub struct VideoEncodeH264QuantizationMapCapabilitiesKHR {
27517    pub s_type: StructureType,
27518    pub next: *mut c_void,
27519    pub min_qp_delta: i32,
27520    pub max_qp_delta: i32,
27521}
27522
27523impl Default for VideoEncodeH264QuantizationMapCapabilitiesKHR {
27524    #[inline]
27525    fn default() -> Self {
27526        Self {
27527            s_type: StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR,
27528            next: ptr::null_mut(),
27529            min_qp_delta: i32::default(),
27530            max_qp_delta: i32::default(),
27531        }
27532    }
27533}
27534
27535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html>
27536#[repr(C)]
27537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27538pub struct VideoEncodeH264RateControlInfoKHR {
27539    pub s_type: StructureType,
27540    pub next: *const c_void,
27541    pub flags: VideoEncodeH264RateControlFlagsKHR,
27542    pub gop_frame_count: u32,
27543    pub idr_period: u32,
27544    pub consecutive_b_frame_count: u32,
27545    pub temporal_layer_count: u32,
27546}
27547
27548impl Default for VideoEncodeH264RateControlInfoKHR {
27549    #[inline]
27550    fn default() -> Self {
27551        Self {
27552            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR,
27553            next: ptr::null(),
27554            flags: VideoEncodeH264RateControlFlagsKHR::default(),
27555            gop_frame_count: u32::default(),
27556            idr_period: u32::default(),
27557            consecutive_b_frame_count: u32::default(),
27558            temporal_layer_count: u32::default(),
27559        }
27560    }
27561}
27562
27563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html>
27564#[repr(C)]
27565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27566pub struct VideoEncodeH264RateControlLayerInfoKHR {
27567    pub s_type: StructureType,
27568    pub next: *const c_void,
27569    pub use_min_qp: Bool32,
27570    pub min_qp: VideoEncodeH264QpKHR,
27571    pub use_max_qp: Bool32,
27572    pub max_qp: VideoEncodeH264QpKHR,
27573    pub use_max_frame_size: Bool32,
27574    pub max_frame_size: VideoEncodeH264FrameSizeKHR,
27575}
27576
27577impl Default for VideoEncodeH264RateControlLayerInfoKHR {
27578    #[inline]
27579    fn default() -> Self {
27580        Self {
27581            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,
27582            next: ptr::null(),
27583            use_min_qp: Bool32::default(),
27584            min_qp: VideoEncodeH264QpKHR::default(),
27585            use_max_qp: Bool32::default(),
27586            max_qp: VideoEncodeH264QpKHR::default(),
27587            use_max_frame_size: Bool32::default(),
27588            max_frame_size: VideoEncodeH264FrameSizeKHR::default(),
27589        }
27590    }
27591}
27592
27593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html>
27594#[repr(C)]
27595#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27596pub struct VideoEncodeH264SessionCreateInfoKHR {
27597    pub s_type: StructureType,
27598    pub next: *const c_void,
27599    pub use_max_level_idc: Bool32,
27600    pub max_level_idc: video::StdVideoH264LevelIdc,
27601}
27602
27603impl Default for VideoEncodeH264SessionCreateInfoKHR {
27604    #[inline]
27605    fn default() -> Self {
27606        Self {
27607            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR,
27608            next: ptr::null(),
27609            use_max_level_idc: Bool32::default(),
27610            max_level_idc: video::StdVideoH264LevelIdc::default(),
27611        }
27612    }
27613}
27614
27615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html>
27616#[repr(C)]
27617#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27618pub struct VideoEncodeH264SessionParametersAddInfoKHR {
27619    pub s_type: StructureType,
27620    pub next: *const c_void,
27621    pub std_sps_count: u32,
27622    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
27623    pub std_pps_count: u32,
27624    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
27625}
27626
27627impl Default for VideoEncodeH264SessionParametersAddInfoKHR {
27628    #[inline]
27629    fn default() -> Self {
27630        Self {
27631            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
27632            next: ptr::null(),
27633            std_sps_count: u32::default(),
27634            std_sp_ss: ptr::null(),
27635            std_pps_count: u32::default(),
27636            std_pp_ss: ptr::null(),
27637        }
27638    }
27639}
27640
27641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html>
27642#[repr(C)]
27643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27644pub struct VideoEncodeH264SessionParametersCreateInfoKHR {
27645    pub s_type: StructureType,
27646    pub next: *const c_void,
27647    pub max_std_sps_count: u32,
27648    pub max_std_pps_count: u32,
27649    pub parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoKHR,
27650}
27651
27652impl Default for VideoEncodeH264SessionParametersCreateInfoKHR {
27653    #[inline]
27654    fn default() -> Self {
27655        Self {
27656            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
27657            next: ptr::null(),
27658            max_std_sps_count: u32::default(),
27659            max_std_pps_count: u32::default(),
27660            parameters_add_info: ptr::null(),
27661        }
27662    }
27663}
27664
27665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html>
27666#[repr(C)]
27667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27668pub struct VideoEncodeH264SessionParametersFeedbackInfoKHR {
27669    pub s_type: StructureType,
27670    pub next: *mut c_void,
27671    pub has_std_sps_overrides: Bool32,
27672    pub has_std_pps_overrides: Bool32,
27673}
27674
27675impl Default for VideoEncodeH264SessionParametersFeedbackInfoKHR {
27676    #[inline]
27677    fn default() -> Self {
27678        Self {
27679            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
27680            next: ptr::null_mut(),
27681            has_std_sps_overrides: Bool32::default(),
27682            has_std_pps_overrides: Bool32::default(),
27683        }
27684    }
27685}
27686
27687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html>
27688#[repr(C)]
27689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27690pub struct VideoEncodeH264SessionParametersGetInfoKHR {
27691    pub s_type: StructureType,
27692    pub next: *const c_void,
27693    pub write_std_sps: Bool32,
27694    pub write_std_pps: Bool32,
27695    pub std_sps_id: u32,
27696    pub std_pps_id: u32,
27697}
27698
27699impl Default for VideoEncodeH264SessionParametersGetInfoKHR {
27700    #[inline]
27701    fn default() -> Self {
27702        Self {
27703            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
27704            next: ptr::null(),
27705            write_std_sps: Bool32::default(),
27706            write_std_pps: Bool32::default(),
27707            std_sps_id: u32::default(),
27708            std_pps_id: u32::default(),
27709        }
27710    }
27711}
27712
27713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html>
27714#[repr(C)]
27715#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27716pub struct VideoEncodeH265CapabilitiesKHR {
27717    pub s_type: StructureType,
27718    pub next: *mut c_void,
27719    pub flags: VideoEncodeH265CapabilityFlagsKHR,
27720    pub max_level_idc: video::StdVideoH265LevelIdc,
27721    pub max_slice_segment_count: u32,
27722    pub max_tiles: Extent2D,
27723    pub ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
27724    pub transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR,
27725    pub max_p_picture_l0_reference_count: u32,
27726    pub max_b_picture_l0_reference_count: u32,
27727    pub max_l1_reference_count: u32,
27728    pub max_sub_layer_count: u32,
27729    pub expect_dyadic_temporal_sub_layer_pattern: Bool32,
27730    pub min_qp: i32,
27731    pub max_qp: i32,
27732    pub prefers_gop_remaining_frames: Bool32,
27733    pub requires_gop_remaining_frames: Bool32,
27734    pub std_syntax_flags: VideoEncodeH265StdFlagsKHR,
27735}
27736
27737impl Default for VideoEncodeH265CapabilitiesKHR {
27738    #[inline]
27739    fn default() -> Self {
27740        Self {
27741            s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR,
27742            next: ptr::null_mut(),
27743            flags: VideoEncodeH265CapabilityFlagsKHR::default(),
27744            max_level_idc: video::StdVideoH265LevelIdc::default(),
27745            max_slice_segment_count: u32::default(),
27746            max_tiles: Extent2D::default(),
27747            ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
27748            transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR::default(),
27749            max_p_picture_l0_reference_count: u32::default(),
27750            max_b_picture_l0_reference_count: u32::default(),
27751            max_l1_reference_count: u32::default(),
27752            max_sub_layer_count: u32::default(),
27753            expect_dyadic_temporal_sub_layer_pattern: Bool32::default(),
27754            min_qp: i32::default(),
27755            max_qp: i32::default(),
27756            prefers_gop_remaining_frames: Bool32::default(),
27757            requires_gop_remaining_frames: Bool32::default(),
27758            std_syntax_flags: VideoEncodeH265StdFlagsKHR::default(),
27759        }
27760    }
27761}
27762
27763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html>
27764#[repr(C)]
27765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27766pub struct VideoEncodeH265DpbSlotInfoKHR {
27767    pub s_type: StructureType,
27768    pub next: *const c_void,
27769    pub std_reference_info: *const video::StdVideoEncodeH265ReferenceInfo,
27770}
27771
27772impl Default for VideoEncodeH265DpbSlotInfoKHR {
27773    #[inline]
27774    fn default() -> Self {
27775        Self {
27776            s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR,
27777            next: ptr::null(),
27778            std_reference_info: ptr::null(),
27779        }
27780    }
27781}
27782
27783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html>
27784#[repr(C)]
27785#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27786pub struct VideoEncodeH265FrameSizeKHR {
27787    pub frame_i_size: u32,
27788    pub frame_p_size: u32,
27789    pub frame_b_size: u32,
27790}
27791
27792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html>
27793#[repr(C)]
27794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27795pub struct VideoEncodeH265GopRemainingFrameInfoKHR {
27796    pub s_type: StructureType,
27797    pub next: *const c_void,
27798    pub use_gop_remaining_frames: Bool32,
27799    pub gop_remaining_i: u32,
27800    pub gop_remaining_p: u32,
27801    pub gop_remaining_b: u32,
27802}
27803
27804impl Default for VideoEncodeH265GopRemainingFrameInfoKHR {
27805    #[inline]
27806    fn default() -> Self {
27807        Self {
27808            s_type: StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR,
27809            next: ptr::null(),
27810            use_gop_remaining_frames: Bool32::default(),
27811            gop_remaining_i: u32::default(),
27812            gop_remaining_p: u32::default(),
27813            gop_remaining_b: u32::default(),
27814        }
27815    }
27816}
27817
27818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html>
27819#[repr(C)]
27820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27821pub struct VideoEncodeH265NaluSliceSegmentInfoKHR {
27822    pub s_type: StructureType,
27823    pub next: *const c_void,
27824    pub constant_qp: i32,
27825    pub std_slice_segment_header: *const video::StdVideoEncodeH265SliceSegmentHeader,
27826}
27827
27828impl Default for VideoEncodeH265NaluSliceSegmentInfoKHR {
27829    #[inline]
27830    fn default() -> Self {
27831        Self {
27832            s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR,
27833            next: ptr::null(),
27834            constant_qp: i32::default(),
27835            std_slice_segment_header: ptr::null(),
27836        }
27837    }
27838}
27839
27840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html>
27841#[repr(C)]
27842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27843pub struct VideoEncodeH265PictureInfoKHR {
27844    pub s_type: StructureType,
27845    pub next: *const c_void,
27846    pub nalu_slice_segment_entry_count: u32,
27847    pub nalu_slice_segment_entries: *const VideoEncodeH265NaluSliceSegmentInfoKHR,
27848    pub std_picture_info: *const video::StdVideoEncodeH265PictureInfo,
27849}
27850
27851impl Default for VideoEncodeH265PictureInfoKHR {
27852    #[inline]
27853    fn default() -> Self {
27854        Self {
27855            s_type: StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR,
27856            next: ptr::null(),
27857            nalu_slice_segment_entry_count: u32::default(),
27858            nalu_slice_segment_entries: ptr::null(),
27859            std_picture_info: ptr::null(),
27860        }
27861    }
27862}
27863
27864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html>
27865#[repr(C)]
27866#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27867pub struct VideoEncodeH265ProfileInfoKHR {
27868    pub s_type: StructureType,
27869    pub next: *const c_void,
27870    pub std_profile_idc: video::StdVideoH265ProfileIdc,
27871}
27872
27873impl Default for VideoEncodeH265ProfileInfoKHR {
27874    #[inline]
27875    fn default() -> Self {
27876        Self {
27877            s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR,
27878            next: ptr::null(),
27879            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
27880        }
27881    }
27882}
27883
27884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html>
27885#[repr(C)]
27886#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27887pub struct VideoEncodeH265QpKHR {
27888    pub qp_i: i32,
27889    pub qp_p: i32,
27890    pub qp_b: i32,
27891}
27892
27893/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html>
27894#[repr(C)]
27895#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27896pub struct VideoEncodeH265QualityLevelPropertiesKHR {
27897    pub s_type: StructureType,
27898    pub next: *mut c_void,
27899    pub preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR,
27900    pub preferred_gop_frame_count: u32,
27901    pub preferred_idr_period: u32,
27902    pub preferred_consecutive_b_frame_count: u32,
27903    pub preferred_sub_layer_count: u32,
27904    pub preferred_constant_qp: VideoEncodeH265QpKHR,
27905    pub preferred_max_l0_reference_count: u32,
27906    pub preferred_max_l1_reference_count: u32,
27907}
27908
27909impl Default for VideoEncodeH265QualityLevelPropertiesKHR {
27910    #[inline]
27911    fn default() -> Self {
27912        Self {
27913            s_type: StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR,
27914            next: ptr::null_mut(),
27915            preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR::default(),
27916            preferred_gop_frame_count: u32::default(),
27917            preferred_idr_period: u32::default(),
27918            preferred_consecutive_b_frame_count: u32::default(),
27919            preferred_sub_layer_count: u32::default(),
27920            preferred_constant_qp: VideoEncodeH265QpKHR::default(),
27921            preferred_max_l0_reference_count: u32::default(),
27922            preferred_max_l1_reference_count: u32::default(),
27923        }
27924    }
27925}
27926
27927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html>
27928#[repr(C)]
27929#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27930pub struct VideoEncodeH265QuantizationMapCapabilitiesKHR {
27931    pub s_type: StructureType,
27932    pub next: *mut c_void,
27933    pub min_qp_delta: i32,
27934    pub max_qp_delta: i32,
27935}
27936
27937impl Default for VideoEncodeH265QuantizationMapCapabilitiesKHR {
27938    #[inline]
27939    fn default() -> Self {
27940        Self {
27941            s_type: StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR,
27942            next: ptr::null_mut(),
27943            min_qp_delta: i32::default(),
27944            max_qp_delta: i32::default(),
27945        }
27946    }
27947}
27948
27949/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html>
27950#[repr(C)]
27951#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27952pub struct VideoEncodeH265RateControlInfoKHR {
27953    pub s_type: StructureType,
27954    pub next: *const c_void,
27955    pub flags: VideoEncodeH265RateControlFlagsKHR,
27956    pub gop_frame_count: u32,
27957    pub idr_period: u32,
27958    pub consecutive_b_frame_count: u32,
27959    pub sub_layer_count: u32,
27960}
27961
27962impl Default for VideoEncodeH265RateControlInfoKHR {
27963    #[inline]
27964    fn default() -> Self {
27965        Self {
27966            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR,
27967            next: ptr::null(),
27968            flags: VideoEncodeH265RateControlFlagsKHR::default(),
27969            gop_frame_count: u32::default(),
27970            idr_period: u32::default(),
27971            consecutive_b_frame_count: u32::default(),
27972            sub_layer_count: u32::default(),
27973        }
27974    }
27975}
27976
27977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html>
27978#[repr(C)]
27979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27980pub struct VideoEncodeH265RateControlLayerInfoKHR {
27981    pub s_type: StructureType,
27982    pub next: *const c_void,
27983    pub use_min_qp: Bool32,
27984    pub min_qp: VideoEncodeH265QpKHR,
27985    pub use_max_qp: Bool32,
27986    pub max_qp: VideoEncodeH265QpKHR,
27987    pub use_max_frame_size: Bool32,
27988    pub max_frame_size: VideoEncodeH265FrameSizeKHR,
27989}
27990
27991impl Default for VideoEncodeH265RateControlLayerInfoKHR {
27992    #[inline]
27993    fn default() -> Self {
27994        Self {
27995            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,
27996            next: ptr::null(),
27997            use_min_qp: Bool32::default(),
27998            min_qp: VideoEncodeH265QpKHR::default(),
27999            use_max_qp: Bool32::default(),
28000            max_qp: VideoEncodeH265QpKHR::default(),
28001            use_max_frame_size: Bool32::default(),
28002            max_frame_size: VideoEncodeH265FrameSizeKHR::default(),
28003        }
28004    }
28005}
28006
28007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html>
28008#[repr(C)]
28009#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28010pub struct VideoEncodeH265SessionCreateInfoKHR {
28011    pub s_type: StructureType,
28012    pub next: *const c_void,
28013    pub use_max_level_idc: Bool32,
28014    pub max_level_idc: video::StdVideoH265LevelIdc,
28015}
28016
28017impl Default for VideoEncodeH265SessionCreateInfoKHR {
28018    #[inline]
28019    fn default() -> Self {
28020        Self {
28021            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR,
28022            next: ptr::null(),
28023            use_max_level_idc: Bool32::default(),
28024            max_level_idc: video::StdVideoH265LevelIdc::default(),
28025        }
28026    }
28027}
28028
28029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html>
28030#[repr(C)]
28031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28032pub struct VideoEncodeH265SessionParametersAddInfoKHR {
28033    pub s_type: StructureType,
28034    pub next: *const c_void,
28035    pub std_vps_count: u32,
28036    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
28037    pub std_sps_count: u32,
28038    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
28039    pub std_pps_count: u32,
28040    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
28041}
28042
28043impl Default for VideoEncodeH265SessionParametersAddInfoKHR {
28044    #[inline]
28045    fn default() -> Self {
28046        Self {
28047            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
28048            next: ptr::null(),
28049            std_vps_count: u32::default(),
28050            std_vp_ss: ptr::null(),
28051            std_sps_count: u32::default(),
28052            std_sp_ss: ptr::null(),
28053            std_pps_count: u32::default(),
28054            std_pp_ss: ptr::null(),
28055        }
28056    }
28057}
28058
28059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html>
28060#[repr(C)]
28061#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28062pub struct VideoEncodeH265SessionParametersCreateInfoKHR {
28063    pub s_type: StructureType,
28064    pub next: *const c_void,
28065    pub max_std_vps_count: u32,
28066    pub max_std_sps_count: u32,
28067    pub max_std_pps_count: u32,
28068    pub parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoKHR,
28069}
28070
28071impl Default for VideoEncodeH265SessionParametersCreateInfoKHR {
28072    #[inline]
28073    fn default() -> Self {
28074        Self {
28075            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
28076            next: ptr::null(),
28077            max_std_vps_count: u32::default(),
28078            max_std_sps_count: u32::default(),
28079            max_std_pps_count: u32::default(),
28080            parameters_add_info: ptr::null(),
28081        }
28082    }
28083}
28084
28085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html>
28086#[repr(C)]
28087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28088pub struct VideoEncodeH265SessionParametersFeedbackInfoKHR {
28089    pub s_type: StructureType,
28090    pub next: *mut c_void,
28091    pub has_std_vps_overrides: Bool32,
28092    pub has_std_sps_overrides: Bool32,
28093    pub has_std_pps_overrides: Bool32,
28094}
28095
28096impl Default for VideoEncodeH265SessionParametersFeedbackInfoKHR {
28097    #[inline]
28098    fn default() -> Self {
28099        Self {
28100            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
28101            next: ptr::null_mut(),
28102            has_std_vps_overrides: Bool32::default(),
28103            has_std_sps_overrides: Bool32::default(),
28104            has_std_pps_overrides: Bool32::default(),
28105        }
28106    }
28107}
28108
28109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html>
28110#[repr(C)]
28111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28112pub struct VideoEncodeH265SessionParametersGetInfoKHR {
28113    pub s_type: StructureType,
28114    pub next: *const c_void,
28115    pub write_std_vps: Bool32,
28116    pub write_std_sps: Bool32,
28117    pub write_std_pps: Bool32,
28118    pub std_vps_id: u32,
28119    pub std_sps_id: u32,
28120    pub std_pps_id: u32,
28121}
28122
28123impl Default for VideoEncodeH265SessionParametersGetInfoKHR {
28124    #[inline]
28125    fn default() -> Self {
28126        Self {
28127            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
28128            next: ptr::null(),
28129            write_std_vps: Bool32::default(),
28130            write_std_sps: Bool32::default(),
28131            write_std_pps: Bool32::default(),
28132            std_vps_id: u32::default(),
28133            std_sps_id: u32::default(),
28134            std_pps_id: u32::default(),
28135        }
28136    }
28137}
28138
28139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html>
28140#[repr(C)]
28141#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28142pub struct VideoEncodeInfoKHR {
28143    pub s_type: StructureType,
28144    pub next: *const c_void,
28145    pub flags: VideoEncodeFlagsKHR,
28146    pub dst_buffer: Buffer,
28147    pub dst_buffer_offset: DeviceSize,
28148    pub dst_buffer_range: DeviceSize,
28149    pub src_picture_resource: VideoPictureResourceInfoKHR,
28150    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
28151    pub reference_slot_count: u32,
28152    pub reference_slots: *const VideoReferenceSlotInfoKHR,
28153    pub preceding_externally_encoded_bytes: u32,
28154}
28155
28156impl Default for VideoEncodeInfoKHR {
28157    #[inline]
28158    fn default() -> Self {
28159        Self {
28160            s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
28161            next: ptr::null(),
28162            flags: VideoEncodeFlagsKHR::default(),
28163            dst_buffer: Buffer::default(),
28164            dst_buffer_offset: DeviceSize::default(),
28165            dst_buffer_range: DeviceSize::default(),
28166            src_picture_resource: VideoPictureResourceInfoKHR::default(),
28167            setup_reference_slot: ptr::null(),
28168            reference_slot_count: u32::default(),
28169            reference_slots: ptr::null(),
28170            preceding_externally_encoded_bytes: u32::default(),
28171        }
28172    }
28173}
28174
28175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshCapabilitiesKHR.html>
28176#[repr(C)]
28177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28178pub struct VideoEncodeIntraRefreshCapabilitiesKHR {
28179    pub s_type: StructureType,
28180    pub next: *mut c_void,
28181    pub intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR,
28182    pub max_intra_refresh_cycle_duration: u32,
28183    pub max_intra_refresh_active_reference_pictures: u32,
28184    pub partition_independent_intra_refresh_regions: Bool32,
28185    pub non_rectangular_intra_refresh_regions: Bool32,
28186}
28187
28188impl Default for VideoEncodeIntraRefreshCapabilitiesKHR {
28189    #[inline]
28190    fn default() -> Self {
28191        Self {
28192            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR,
28193            next: ptr::null_mut(),
28194            intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR::default(),
28195            max_intra_refresh_cycle_duration: u32::default(),
28196            max_intra_refresh_active_reference_pictures: u32::default(),
28197            partition_independent_intra_refresh_regions: Bool32::default(),
28198            non_rectangular_intra_refresh_regions: Bool32::default(),
28199        }
28200    }
28201}
28202
28203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshInfoKHR.html>
28204#[repr(C)]
28205#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28206pub struct VideoEncodeIntraRefreshInfoKHR {
28207    pub s_type: StructureType,
28208    pub next: *const c_void,
28209    pub intra_refresh_cycle_duration: u32,
28210    pub intra_refresh_index: u32,
28211}
28212
28213impl Default for VideoEncodeIntraRefreshInfoKHR {
28214    #[inline]
28215    fn default() -> Self {
28216        Self {
28217            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR,
28218            next: ptr::null(),
28219            intra_refresh_cycle_duration: u32::default(),
28220            intra_refresh_index: u32::default(),
28221        }
28222    }
28223}
28224
28225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html>
28226#[repr(C)]
28227#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28228pub struct VideoEncodeQualityLevelInfoKHR {
28229    pub s_type: StructureType,
28230    pub next: *const c_void,
28231    pub quality_level: u32,
28232}
28233
28234impl Default for VideoEncodeQualityLevelInfoKHR {
28235    #[inline]
28236    fn default() -> Self {
28237        Self {
28238            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
28239            next: ptr::null(),
28240            quality_level: u32::default(),
28241        }
28242    }
28243}
28244
28245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html>
28246#[repr(C)]
28247#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28248pub struct VideoEncodeQualityLevelPropertiesKHR {
28249    pub s_type: StructureType,
28250    pub next: *mut c_void,
28251    pub preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
28252    pub preferred_rate_control_layer_count: u32,
28253}
28254
28255impl Default for VideoEncodeQualityLevelPropertiesKHR {
28256    #[inline]
28257    fn default() -> Self {
28258        Self {
28259            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR,
28260            next: ptr::null_mut(),
28261            preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
28262            preferred_rate_control_layer_count: u32::default(),
28263        }
28264    }
28265}
28266
28267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html>
28268#[repr(C)]
28269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28270pub struct VideoEncodeQuantizationMapCapabilitiesKHR {
28271    pub s_type: StructureType,
28272    pub next: *mut c_void,
28273    pub max_quantization_map_extent: Extent2D,
28274}
28275
28276impl Default for VideoEncodeQuantizationMapCapabilitiesKHR {
28277    #[inline]
28278    fn default() -> Self {
28279        Self {
28280            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR,
28281            next: ptr::null_mut(),
28282            max_quantization_map_extent: Extent2D::default(),
28283        }
28284    }
28285}
28286
28287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html>
28288#[repr(C)]
28289#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28290pub struct VideoEncodeQuantizationMapInfoKHR {
28291    pub s_type: StructureType,
28292    pub next: *const c_void,
28293    pub quantization_map: ImageView,
28294    pub quantization_map_extent: Extent2D,
28295}
28296
28297impl Default for VideoEncodeQuantizationMapInfoKHR {
28298    #[inline]
28299    fn default() -> Self {
28300        Self {
28301            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR,
28302            next: ptr::null(),
28303            quantization_map: ImageView::default(),
28304            quantization_map_extent: Extent2D::default(),
28305        }
28306    }
28307}
28308
28309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html>
28310#[repr(C)]
28311#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28312pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
28313    pub s_type: StructureType,
28314    pub next: *const c_void,
28315    pub quantization_map_texel_size: Extent2D,
28316}
28317
28318impl Default for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
28319    #[inline]
28320    fn default() -> Self {
28321        Self {
28322            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR,
28323            next: ptr::null(),
28324            quantization_map_texel_size: Extent2D::default(),
28325        }
28326    }
28327}
28328
28329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html>
28330#[repr(C)]
28331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28332pub struct VideoEncodeRateControlInfoKHR {
28333    pub s_type: StructureType,
28334    pub next: *const c_void,
28335    pub flags: VideoEncodeRateControlFlagsKHR,
28336    pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
28337    pub layer_count: u32,
28338    pub layers: *const VideoEncodeRateControlLayerInfoKHR,
28339    pub virtual_buffer_size_in_ms: u32,
28340    pub initial_virtual_buffer_size_in_ms: u32,
28341}
28342
28343impl Default for VideoEncodeRateControlInfoKHR {
28344    #[inline]
28345    fn default() -> Self {
28346        Self {
28347            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
28348            next: ptr::null(),
28349            flags: VideoEncodeRateControlFlagsKHR::default(),
28350            rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
28351            layer_count: u32::default(),
28352            layers: ptr::null(),
28353            virtual_buffer_size_in_ms: u32::default(),
28354            initial_virtual_buffer_size_in_ms: u32::default(),
28355        }
28356    }
28357}
28358
28359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>
28360#[repr(C)]
28361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28362pub struct VideoEncodeRateControlLayerInfoKHR {
28363    pub s_type: StructureType,
28364    pub next: *const c_void,
28365    pub average_bitrate: u64,
28366    pub max_bitrate: u64,
28367    pub frame_rate_numerator: u32,
28368    pub frame_rate_denominator: u32,
28369}
28370
28371impl Default for VideoEncodeRateControlLayerInfoKHR {
28372    #[inline]
28373    fn default() -> Self {
28374        Self {
28375            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
28376            next: ptr::null(),
28377            average_bitrate: u64::default(),
28378            max_bitrate: u64::default(),
28379            frame_rate_numerator: u32::default(),
28380            frame_rate_denominator: u32::default(),
28381        }
28382    }
28383}
28384
28385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionIntraRefreshCreateInfoKHR.html>
28386#[repr(C)]
28387#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28388pub struct VideoEncodeSessionIntraRefreshCreateInfoKHR {
28389    pub s_type: StructureType,
28390    pub next: *const c_void,
28391    pub intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR,
28392}
28393
28394impl Default for VideoEncodeSessionIntraRefreshCreateInfoKHR {
28395    #[inline]
28396    fn default() -> Self {
28397        Self {
28398            s_type: StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR,
28399            next: ptr::null(),
28400            intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR::default(),
28401        }
28402    }
28403}
28404
28405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html>
28406#[repr(C)]
28407#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28408pub struct VideoEncodeSessionParametersFeedbackInfoKHR {
28409    pub s_type: StructureType,
28410    pub next: *mut c_void,
28411    pub has_overrides: Bool32,
28412}
28413
28414impl Default for VideoEncodeSessionParametersFeedbackInfoKHR {
28415    #[inline]
28416    fn default() -> Self {
28417        Self {
28418            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
28419            next: ptr::null_mut(),
28420            has_overrides: Bool32::default(),
28421        }
28422    }
28423}
28424
28425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html>
28426#[repr(C)]
28427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28428pub struct VideoEncodeSessionParametersGetInfoKHR {
28429    pub s_type: StructureType,
28430    pub next: *const c_void,
28431    pub video_session_parameters: VideoSessionParametersKHR,
28432}
28433
28434impl Default for VideoEncodeSessionParametersGetInfoKHR {
28435    #[inline]
28436    fn default() -> Self {
28437        Self {
28438            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
28439            next: ptr::null(),
28440            video_session_parameters: VideoSessionParametersKHR::default(),
28441        }
28442    }
28443}
28444
28445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html>
28446#[repr(C)]
28447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28448pub struct VideoEncodeUsageInfoKHR {
28449    pub s_type: StructureType,
28450    pub next: *const c_void,
28451    pub video_usage_hints: VideoEncodeUsageFlagsKHR,
28452    pub video_content_hints: VideoEncodeContentFlagsKHR,
28453    pub tuning_mode: VideoEncodeTuningModeKHR,
28454}
28455
28456impl Default for VideoEncodeUsageInfoKHR {
28457    #[inline]
28458    fn default() -> Self {
28459        Self {
28460            s_type: StructureType::VIDEO_ENCODE_USAGE_INFO_KHR,
28461            next: ptr::null(),
28462            video_usage_hints: VideoEncodeUsageFlagsKHR::default(),
28463            video_content_hints: VideoEncodeContentFlagsKHR::default(),
28464            tuning_mode: VideoEncodeTuningModeKHR::default(),
28465        }
28466    }
28467}
28468
28469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html>
28470#[repr(C)]
28471#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28472pub struct VideoEndCodingInfoKHR {
28473    pub s_type: StructureType,
28474    pub next: *const c_void,
28475    pub flags: VideoEndCodingFlagsKHR,
28476}
28477
28478impl Default for VideoEndCodingInfoKHR {
28479    #[inline]
28480    fn default() -> Self {
28481        Self {
28482            s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
28483            next: ptr::null(),
28484            flags: VideoEndCodingFlagsKHR::default(),
28485        }
28486    }
28487}
28488
28489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html>
28490#[repr(C)]
28491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28492pub struct VideoFormatAV1QuantizationMapPropertiesKHR {
28493    pub s_type: StructureType,
28494    pub next: *mut c_void,
28495    pub compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
28496}
28497
28498impl Default for VideoFormatAV1QuantizationMapPropertiesKHR {
28499    #[inline]
28500    fn default() -> Self {
28501        Self {
28502            s_type: StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR,
28503            next: ptr::null_mut(),
28504            compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
28505        }
28506    }
28507}
28508
28509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html>
28510#[repr(C)]
28511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28512pub struct VideoFormatH265QuantizationMapPropertiesKHR {
28513    pub s_type: StructureType,
28514    pub next: *mut c_void,
28515    pub compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
28516}
28517
28518impl Default for VideoFormatH265QuantizationMapPropertiesKHR {
28519    #[inline]
28520    fn default() -> Self {
28521        Self {
28522            s_type: StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR,
28523            next: ptr::null_mut(),
28524            compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
28525        }
28526    }
28527}
28528
28529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html>
28530#[repr(C)]
28531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28532pub struct VideoFormatPropertiesKHR {
28533    pub s_type: StructureType,
28534    pub next: *mut c_void,
28535    pub format: Format,
28536    pub component_mapping: ComponentMapping,
28537    pub image_create_flags: ImageCreateFlags,
28538    pub image_type: ImageType,
28539    pub image_tiling: ImageTiling,
28540    pub image_usage_flags: ImageUsageFlags,
28541}
28542
28543impl Default for VideoFormatPropertiesKHR {
28544    #[inline]
28545    fn default() -> Self {
28546        Self {
28547            s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
28548            next: ptr::null_mut(),
28549            format: Format::default(),
28550            component_mapping: ComponentMapping::default(),
28551            image_create_flags: ImageCreateFlags::default(),
28552            image_type: ImageType::default(),
28553            image_tiling: ImageTiling::default(),
28554            image_usage_flags: ImageUsageFlags::default(),
28555        }
28556    }
28557}
28558
28559/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html>
28560#[repr(C)]
28561#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28562pub struct VideoFormatQuantizationMapPropertiesKHR {
28563    pub s_type: StructureType,
28564    pub next: *mut c_void,
28565    pub quantization_map_texel_size: Extent2D,
28566}
28567
28568impl Default for VideoFormatQuantizationMapPropertiesKHR {
28569    #[inline]
28570    fn default() -> Self {
28571        Self {
28572            s_type: StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR,
28573            next: ptr::null_mut(),
28574            quantization_map_texel_size: Extent2D::default(),
28575        }
28576    }
28577}
28578
28579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html>
28580#[repr(C)]
28581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28582pub struct VideoInlineQueryInfoKHR {
28583    pub s_type: StructureType,
28584    pub next: *const c_void,
28585    pub query_pool: QueryPool,
28586    pub first_query: u32,
28587    pub query_count: u32,
28588}
28589
28590impl Default for VideoInlineQueryInfoKHR {
28591    #[inline]
28592    fn default() -> Self {
28593        Self {
28594            s_type: StructureType::VIDEO_INLINE_QUERY_INFO_KHR,
28595            next: ptr::null(),
28596            query_pool: QueryPool::default(),
28597            first_query: u32::default(),
28598            query_count: u32::default(),
28599        }
28600    }
28601}
28602
28603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html>
28604#[repr(C)]
28605#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28606pub struct VideoPictureResourceInfoKHR {
28607    pub s_type: StructureType,
28608    pub next: *const c_void,
28609    pub coded_offset: Offset2D,
28610    pub coded_extent: Extent2D,
28611    pub base_array_layer: u32,
28612    pub image_view_binding: ImageView,
28613}
28614
28615impl Default for VideoPictureResourceInfoKHR {
28616    #[inline]
28617    fn default() -> Self {
28618        Self {
28619            s_type: StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR,
28620            next: ptr::null(),
28621            coded_offset: Offset2D::default(),
28622            coded_extent: Extent2D::default(),
28623            base_array_layer: u32::default(),
28624            image_view_binding: ImageView::default(),
28625        }
28626    }
28627}
28628
28629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html>
28630#[repr(C)]
28631#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28632pub struct VideoProfileInfoKHR {
28633    pub s_type: StructureType,
28634    pub next: *const c_void,
28635    pub video_codec_operation: VideoCodecOperationFlagsKHR,
28636    pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
28637    pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
28638    pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
28639}
28640
28641impl Default for VideoProfileInfoKHR {
28642    #[inline]
28643    fn default() -> Self {
28644        Self {
28645            s_type: StructureType::VIDEO_PROFILE_INFO_KHR,
28646            next: ptr::null(),
28647            video_codec_operation: VideoCodecOperationFlagsKHR::default(),
28648            chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
28649            luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
28650            chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
28651        }
28652    }
28653}
28654
28655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html>
28656#[repr(C)]
28657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28658pub struct VideoProfileListInfoKHR {
28659    pub s_type: StructureType,
28660    pub next: *const c_void,
28661    pub profile_count: u32,
28662    pub profiles: *const VideoProfileInfoKHR,
28663}
28664
28665impl Default for VideoProfileListInfoKHR {
28666    #[inline]
28667    fn default() -> Self {
28668        Self {
28669            s_type: StructureType::VIDEO_PROFILE_LIST_INFO_KHR,
28670            next: ptr::null(),
28671            profile_count: u32::default(),
28672            profiles: ptr::null(),
28673        }
28674    }
28675}
28676
28677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceIntraRefreshInfoKHR.html>
28678#[repr(C)]
28679#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28680pub struct VideoReferenceIntraRefreshInfoKHR {
28681    pub s_type: StructureType,
28682    pub next: *const c_void,
28683    pub dirty_intra_refresh_regions: u32,
28684}
28685
28686impl Default for VideoReferenceIntraRefreshInfoKHR {
28687    #[inline]
28688    fn default() -> Self {
28689        Self {
28690            s_type: StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR,
28691            next: ptr::null(),
28692            dirty_intra_refresh_regions: u32::default(),
28693        }
28694    }
28695}
28696
28697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html>
28698#[repr(C)]
28699#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28700pub struct VideoReferenceSlotInfoKHR {
28701    pub s_type: StructureType,
28702    pub next: *const c_void,
28703    pub slot_index: i32,
28704    pub picture_resource: *const VideoPictureResourceInfoKHR,
28705}
28706
28707impl Default for VideoReferenceSlotInfoKHR {
28708    #[inline]
28709    fn default() -> Self {
28710        Self {
28711            s_type: StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR,
28712            next: ptr::null(),
28713            slot_index: i32::default(),
28714            picture_resource: ptr::null(),
28715        }
28716    }
28717}
28718
28719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html>
28720#[repr(C)]
28721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28722pub struct VideoSessionCreateInfoKHR {
28723    pub s_type: StructureType,
28724    pub next: *const c_void,
28725    pub queue_family_index: u32,
28726    pub flags: VideoSessionCreateFlagsKHR,
28727    pub video_profile: *const VideoProfileInfoKHR,
28728    pub picture_format: Format,
28729    pub max_coded_extent: Extent2D,
28730    pub reference_picture_format: Format,
28731    pub max_dpb_slots: u32,
28732    pub max_active_reference_pictures: u32,
28733    pub std_header_version: *const ExtensionProperties,
28734}
28735
28736impl Default for VideoSessionCreateInfoKHR {
28737    #[inline]
28738    fn default() -> Self {
28739        Self {
28740            s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
28741            next: ptr::null(),
28742            queue_family_index: u32::default(),
28743            flags: VideoSessionCreateFlagsKHR::default(),
28744            video_profile: ptr::null(),
28745            picture_format: Format::default(),
28746            max_coded_extent: Extent2D::default(),
28747            reference_picture_format: Format::default(),
28748            max_dpb_slots: u32::default(),
28749            max_active_reference_pictures: u32::default(),
28750            std_header_version: ptr::null(),
28751        }
28752    }
28753}
28754
28755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html>
28756#[repr(C)]
28757#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28758pub struct VideoSessionMemoryRequirementsKHR {
28759    pub s_type: StructureType,
28760    pub next: *mut c_void,
28761    pub memory_bind_index: u32,
28762    pub memory_requirements: MemoryRequirements,
28763}
28764
28765impl Default for VideoSessionMemoryRequirementsKHR {
28766    #[inline]
28767    fn default() -> Self {
28768        Self {
28769            s_type: StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
28770            next: ptr::null_mut(),
28771            memory_bind_index: u32::default(),
28772            memory_requirements: MemoryRequirements::default(),
28773        }
28774    }
28775}
28776
28777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html>
28778#[repr(C)]
28779#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28780pub struct VideoSessionParametersCreateInfoKHR {
28781    pub s_type: StructureType,
28782    pub next: *const c_void,
28783    pub flags: VideoSessionParametersCreateFlagsKHR,
28784    pub video_session_parameters_template: VideoSessionParametersKHR,
28785    pub video_session: VideoSessionKHR,
28786}
28787
28788impl Default for VideoSessionParametersCreateInfoKHR {
28789    #[inline]
28790    fn default() -> Self {
28791        Self {
28792            s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
28793            next: ptr::null(),
28794            flags: VideoSessionParametersCreateFlagsKHR::default(),
28795            video_session_parameters_template: VideoSessionParametersKHR::default(),
28796            video_session: VideoSessionKHR::default(),
28797        }
28798    }
28799}
28800
28801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html>
28802#[repr(C)]
28803#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28804pub struct VideoSessionParametersUpdateInfoKHR {
28805    pub s_type: StructureType,
28806    pub next: *const c_void,
28807    pub update_sequence_count: u32,
28808}
28809
28810impl Default for VideoSessionParametersUpdateInfoKHR {
28811    #[inline]
28812    fn default() -> Self {
28813        Self {
28814            s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
28815            next: ptr::null(),
28816            update_sequence_count: u32::default(),
28817        }
28818    }
28819}
28820
28821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewport.html>
28822#[repr(C)]
28823#[derive(Copy, Clone, Default, Debug, PartialEq)]
28824pub struct Viewport {
28825    pub x: f32,
28826    pub y: f32,
28827    pub width: f32,
28828    pub height: f32,
28829    pub min_depth: f32,
28830    pub max_depth: f32,
28831}
28832
28833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html>
28834#[repr(C)]
28835#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28836pub struct ViewportSwizzleNV {
28837    pub x: ViewportCoordinateSwizzleNV,
28838    pub y: ViewportCoordinateSwizzleNV,
28839    pub z: ViewportCoordinateSwizzleNV,
28840    pub w: ViewportCoordinateSwizzleNV,
28841}
28842
28843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportWScalingNV.html>
28844#[repr(C)]
28845#[derive(Copy, Clone, Default, Debug, PartialEq)]
28846pub struct ViewportWScalingNV {
28847    pub xcoeff: f32,
28848    pub ycoeff: f32,
28849}
28850
28851/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html>
28852#[repr(C)]
28853#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28854pub struct WaylandSurfaceCreateInfoKHR {
28855    pub s_type: StructureType,
28856    pub next: *const c_void,
28857    pub flags: WaylandSurfaceCreateFlagsKHR,
28858    pub display: *mut wl_display,
28859    pub surface: *mut wl_surface,
28860}
28861
28862impl Default for WaylandSurfaceCreateInfoKHR {
28863    #[inline]
28864    fn default() -> Self {
28865        Self {
28866            s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
28867            next: ptr::null(),
28868            flags: WaylandSurfaceCreateFlagsKHR::default(),
28869            display: ptr::null_mut(),
28870            surface: ptr::null_mut(),
28871        }
28872    }
28873}
28874
28875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>
28876#[repr(C)]
28877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28878pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
28879    pub s_type: StructureType,
28880    pub next: *const c_void,
28881    pub acquire_count: u32,
28882    pub acquire_syncs: *const DeviceMemory,
28883    pub acquire_keys: *const u64,
28884    pub acquire_timeouts: *const u32,
28885    pub release_count: u32,
28886    pub release_syncs: *const DeviceMemory,
28887    pub release_keys: *const u64,
28888}
28889
28890impl Default for Win32KeyedMutexAcquireReleaseInfoKHR {
28891    #[inline]
28892    fn default() -> Self {
28893        Self {
28894            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
28895            next: ptr::null(),
28896            acquire_count: u32::default(),
28897            acquire_syncs: ptr::null(),
28898            acquire_keys: ptr::null(),
28899            acquire_timeouts: ptr::null(),
28900            release_count: u32::default(),
28901            release_syncs: ptr::null(),
28902            release_keys: ptr::null(),
28903        }
28904    }
28905}
28906
28907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>
28908#[repr(C)]
28909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28910pub struct Win32KeyedMutexAcquireReleaseInfoNV {
28911    pub s_type: StructureType,
28912    pub next: *const c_void,
28913    pub acquire_count: u32,
28914    pub acquire_syncs: *const DeviceMemory,
28915    pub acquire_keys: *const u64,
28916    pub acquire_timeout_milliseconds: *const u32,
28917    pub release_count: u32,
28918    pub release_syncs: *const DeviceMemory,
28919    pub release_keys: *const u64,
28920}
28921
28922impl Default for Win32KeyedMutexAcquireReleaseInfoNV {
28923    #[inline]
28924    fn default() -> Self {
28925        Self {
28926            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
28927            next: ptr::null(),
28928            acquire_count: u32::default(),
28929            acquire_syncs: ptr::null(),
28930            acquire_keys: ptr::null(),
28931            acquire_timeout_milliseconds: ptr::null(),
28932            release_count: u32::default(),
28933            release_syncs: ptr::null(),
28934            release_keys: ptr::null(),
28935        }
28936    }
28937}
28938
28939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html>
28940#[repr(C)]
28941#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28942pub struct Win32SurfaceCreateInfoKHR {
28943    pub s_type: StructureType,
28944    pub next: *const c_void,
28945    pub flags: Win32SurfaceCreateFlagsKHR,
28946    pub hinstance: HINSTANCE,
28947    pub hwnd: HWND,
28948}
28949
28950impl Default for Win32SurfaceCreateInfoKHR {
28951    #[inline]
28952    fn default() -> Self {
28953        Self {
28954            s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
28955            next: ptr::null(),
28956            flags: Win32SurfaceCreateFlagsKHR::default(),
28957            hinstance: ptr::null_mut(),
28958            hwnd: ptr::null_mut(),
28959        }
28960    }
28961}
28962
28963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html>
28964#[repr(C)]
28965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28966pub struct WriteDescriptorSet {
28967    pub s_type: StructureType,
28968    pub next: *const c_void,
28969    pub dst_set: DescriptorSet,
28970    pub dst_binding: u32,
28971    pub dst_array_element: u32,
28972    pub descriptor_count: u32,
28973    pub descriptor_type: DescriptorType,
28974    pub image_info: *const DescriptorImageInfo,
28975    pub buffer_info: *const DescriptorBufferInfo,
28976    pub texel_buffer_view: *const BufferView,
28977}
28978
28979impl Default for WriteDescriptorSet {
28980    #[inline]
28981    fn default() -> Self {
28982        Self {
28983            s_type: StructureType::WRITE_DESCRIPTOR_SET,
28984            next: ptr::null(),
28985            dst_set: DescriptorSet::default(),
28986            dst_binding: u32::default(),
28987            dst_array_element: u32::default(),
28988            descriptor_count: u32::default(),
28989            descriptor_type: DescriptorType::default(),
28990            image_info: ptr::null(),
28991            buffer_info: ptr::null(),
28992            texel_buffer_view: ptr::null(),
28993        }
28994    }
28995}
28996
28997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>
28998#[repr(C)]
28999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29000pub struct WriteDescriptorSetAccelerationStructureKHR {
29001    pub s_type: StructureType,
29002    pub next: *const c_void,
29003    pub acceleration_structure_count: u32,
29004    pub acceleration_structures: *const AccelerationStructureKHR,
29005}
29006
29007impl Default for WriteDescriptorSetAccelerationStructureKHR {
29008    #[inline]
29009    fn default() -> Self {
29010        Self {
29011            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
29012            next: ptr::null(),
29013            acceleration_structure_count: u32::default(),
29014            acceleration_structures: ptr::null(),
29015        }
29016    }
29017}
29018
29019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>
29020#[repr(C)]
29021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29022pub struct WriteDescriptorSetAccelerationStructureNV {
29023    pub s_type: StructureType,
29024    pub next: *const c_void,
29025    pub acceleration_structure_count: u32,
29026    pub acceleration_structures: *const AccelerationStructureNV,
29027}
29028
29029impl Default for WriteDescriptorSetAccelerationStructureNV {
29030    #[inline]
29031    fn default() -> Self {
29032        Self {
29033            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
29034            next: ptr::null(),
29035            acceleration_structure_count: u32::default(),
29036            acceleration_structures: ptr::null(),
29037        }
29038    }
29039}
29040
29041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html>
29042#[repr(C)]
29043#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29044pub struct WriteDescriptorSetInlineUniformBlock {
29045    pub s_type: StructureType,
29046    pub next: *const c_void,
29047    pub data_size: u32,
29048    pub data: *const c_void,
29049}
29050
29051impl Default for WriteDescriptorSetInlineUniformBlock {
29052    #[inline]
29053    fn default() -> Self {
29054        Self {
29055            s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
29056            next: ptr::null(),
29057            data_size: u32::default(),
29058            data: ptr::null(),
29059        }
29060    }
29061}
29062
29063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html>
29064#[repr(C)]
29065#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29066pub struct WriteDescriptorSetPartitionedAccelerationStructureNV {
29067    pub s_type: StructureType,
29068    pub next: *mut c_void,
29069    pub acceleration_structure_count: u32,
29070    pub acceleration_structures: *const DeviceAddress,
29071}
29072
29073impl Default for WriteDescriptorSetPartitionedAccelerationStructureNV {
29074    #[inline]
29075    fn default() -> Self {
29076        Self {
29077            s_type: StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV,
29078            next: ptr::null_mut(),
29079            acceleration_structure_count: u32::default(),
29080            acceleration_structures: ptr::null(),
29081        }
29082    }
29083}
29084
29085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetTensorARM.html>
29086#[repr(C)]
29087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29088pub struct WriteDescriptorSetTensorARM {
29089    pub s_type: StructureType,
29090    pub next: *const c_void,
29091    pub tensor_view_count: u32,
29092    pub tensor_views: *const TensorViewARM,
29093}
29094
29095impl Default for WriteDescriptorSetTensorARM {
29096    #[inline]
29097    fn default() -> Self {
29098        Self {
29099            s_type: StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM,
29100            next: ptr::null(),
29101            tensor_view_count: u32::default(),
29102            tensor_views: ptr::null(),
29103        }
29104    }
29105}
29106
29107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html>
29108#[repr(C)]
29109#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29110pub struct WriteIndirectExecutionSetPipelineEXT {
29111    pub s_type: StructureType,
29112    pub next: *const c_void,
29113    pub index: u32,
29114    pub pipeline: Pipeline,
29115}
29116
29117impl Default for WriteIndirectExecutionSetPipelineEXT {
29118    #[inline]
29119    fn default() -> Self {
29120        Self {
29121            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT,
29122            next: ptr::null(),
29123            index: u32::default(),
29124            pipeline: Pipeline::default(),
29125        }
29126    }
29127}
29128
29129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html>
29130#[repr(C)]
29131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29132pub struct WriteIndirectExecutionSetShaderEXT {
29133    pub s_type: StructureType,
29134    pub next: *const c_void,
29135    pub index: u32,
29136    pub shader: ShaderEXT,
29137}
29138
29139impl Default for WriteIndirectExecutionSetShaderEXT {
29140    #[inline]
29141    fn default() -> Self {
29142        Self {
29143            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT,
29144            next: ptr::null(),
29145            index: u32::default(),
29146            shader: ShaderEXT::default(),
29147        }
29148    }
29149}
29150
29151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXYColorEXT.html>
29152#[repr(C)]
29153#[derive(Copy, Clone, Default, Debug, PartialEq)]
29154pub struct XYColorEXT {
29155    pub x: f32,
29156    pub y: f32,
29157}
29158
29159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html>
29160#[repr(C)]
29161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29162pub struct XcbSurfaceCreateInfoKHR {
29163    pub s_type: StructureType,
29164    pub next: *const c_void,
29165    pub flags: XcbSurfaceCreateFlagsKHR,
29166    pub connection: *mut xcb_connection_t,
29167    pub window: xcb_window_t,
29168}
29169
29170impl Default for XcbSurfaceCreateInfoKHR {
29171    #[inline]
29172    fn default() -> Self {
29173        Self {
29174            s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
29175            next: ptr::null(),
29176            flags: XcbSurfaceCreateFlagsKHR::default(),
29177            connection: ptr::null_mut(),
29178            window: xcb_window_t::default(),
29179        }
29180    }
29181}
29182
29183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html>
29184#[repr(C)]
29185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29186pub struct XlibSurfaceCreateInfoKHR {
29187    pub s_type: StructureType,
29188    pub next: *const c_void,
29189    pub flags: XlibSurfaceCreateFlagsKHR,
29190    pub dpy: *mut Display,
29191    pub window: Window,
29192}
29193
29194impl Default for XlibSurfaceCreateInfoKHR {
29195    #[inline]
29196    fn default() -> Self {
29197        Self {
29198            s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
29199            next: ptr::null(),
29200            flags: XlibSurfaceCreateFlagsKHR::default(),
29201            dpy: ptr::null_mut(),
29202            window: Window::default(),
29203        }
29204    }
29205}
29206
29207/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsNV.html>
29208pub type AabbPositionsNV = AabbPositionsKHR;
29209/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceNV.html>
29210pub type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
29211/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2KHR.html>
29212pub type AttachmentDescription2KHR = AttachmentDescription2;
29213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayoutKHR.html>
29214pub type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
29215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2KHR.html>
29216pub type AttachmentReference2KHR = AttachmentReference2;
29217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayoutKHR.html>
29218pub type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
29219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoNV.html>
29220pub type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
29221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfoKHR.html>
29222pub type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
29223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfoKHR.html>
29224pub type BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
29225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfoKHR.html>
29226pub type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
29227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfoKHR.html>
29228pub type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
29229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfoKHR.html>
29230pub type BindImageMemoryInfoKHR = BindImageMemoryInfo;
29231/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfoKHR.html>
29232pub type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
29233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatusKHR.html>
29234pub type BindMemoryStatusKHR = BindMemoryStatus;
29235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
29236pub type BlitImageInfo2KHR = BlitImageInfo2;
29237/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
29238pub type BufferCopy2KHR = BufferCopy2;
29239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoEXT.html>
29240pub type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
29241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoKHR.html>
29242pub type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
29243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
29244pub type BufferImageCopy2KHR = BufferImageCopy2;
29245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2KHR.html>
29246pub type BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
29247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2KHR.html>
29248pub type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
29249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfoKHR.html>
29250pub type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
29251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfoKHR.html>
29252pub type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
29253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoEXT.html>
29254pub type CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
29255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>
29256pub type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
29257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfoKHR.html>
29258pub type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
29259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersionKHR.html>
29260pub type ConformanceVersionKHR = ConformanceVersion;
29261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
29262pub type CopyBufferInfo2KHR = CopyBufferInfo2;
29263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
29264pub type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
29265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
29266pub type CopyImageInfo2KHR = CopyImageInfo2;
29267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
29268pub type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
29269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfoEXT.html>
29270pub type CopyImageToImageInfoEXT = CopyImageToImageInfo;
29271/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfoEXT.html>
29272pub type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
29273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfoEXT.html>
29274pub type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
29275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfoKHR.html>
29276pub type DependencyInfoKHR = DependencyInfo;
29277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>
29278pub type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
29279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.html>
29280pub type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
29281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupportKHR.html>
29282pub type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
29283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.html>
29284pub type DescriptorSetVariableDescriptorCountAllocateInfoEXT =
29285    DescriptorSetVariableDescriptorCountAllocateInfo;
29286/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.html>
29287pub type DescriptorSetVariableDescriptorCountLayoutSupportEXT =
29288    DescriptorSetVariableDescriptorCountLayoutSupport;
29289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html>
29290pub type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
29291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntryKHR.html>
29292pub type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
29293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirementsKHR.html>
29294pub type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
29295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfoKHR.html>
29296pub type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
29297/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfoKHR.html>
29298pub type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
29299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfoKHR.html>
29300pub type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
29301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfoKHR.html>
29302pub type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
29303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfoKHR.html>
29304pub type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
29305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirementsKHR.html>
29306pub type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
29307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfoKHR.html>
29308pub type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
29309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfoKHR.html>
29310pub type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
29311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfoEXT.html>
29312pub type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
29313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>
29314pub type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
29315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoKHR.html>
29316pub type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
29317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfoKHR.html>
29318pub type ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
29319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoKHR.html>
29320pub type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
29321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfoKHR.html>
29322pub type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
29323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferPropertiesKHR.html>
29324pub type ExternalBufferPropertiesKHR = ExternalBufferProperties;
29325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFencePropertiesKHR.html>
29326pub type ExternalFencePropertiesKHR = ExternalFenceProperties;
29327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesKHR.html>
29328pub type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
29329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfoKHR.html>
29330pub type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
29331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoKHR.html>
29332pub type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
29333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryPropertiesKHR.html>
29334pub type ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
29335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphorePropertiesKHR.html>
29336pub type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
29337/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2KHR.html>
29338pub type FormatProperties2KHR = FormatProperties2;
29339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3KHR.html>
29340pub type FormatProperties3KHR = FormatProperties3;
29341/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfoKHR.html>
29342pub type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
29343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfoKHR.html>
29344pub type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
29345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQueryEXT.html>
29346pub type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
29347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfoEXT.html>
29348pub type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
29349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
29350pub type ImageBlit2KHR = ImageBlit2;
29351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
29352pub type ImageCopy2KHR = ImageCopy2;
29353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfoKHR.html>
29354pub type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
29355/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2KHR.html>
29356pub type ImageFormatProperties2KHR = ImageFormatProperties2;
29357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2KHR.html>
29358pub type ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
29359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2KHR.html>
29360pub type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
29361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html>
29362pub type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
29363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
29364pub type ImageResolve2KHR = ImageResolve2;
29365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html>
29366pub type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
29367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfoEXT.html>
29368pub type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
29369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2EXT.html>
29370pub type ImageSubresource2EXT = ImageSubresource2;
29371/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2KHR.html>
29372pub type ImageSubresource2KHR = ImageSubresource2;
29373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopyEXT.html>
29374pub type ImageToMemoryCopyEXT = ImageToMemoryCopy;
29375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfoKHR.html>
29376pub type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
29377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReferenceKHR.html>
29378pub type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
29379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfoKHR.html>
29380pub type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
29381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2KHR.html>
29382pub type MemoryBarrier2KHR = MemoryBarrier2;
29383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoKHR.html>
29384pub type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
29385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirementsKHR.html>
29386pub type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
29387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfoKHR.html>
29388pub type MemoryMapInfoKHR = MemoryMapInfo;
29389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfoKHR.html>
29390pub type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
29391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2KHR.html>
29392pub type MemoryRequirements2KHR = MemoryRequirements2;
29393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopyEXT.html>
29394pub type MemoryToImageCopyEXT = MemoryToImageCopy;
29395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfoKHR.html>
29396pub type MemoryUnmapInfoKHR = MemoryUnmapInfo;
29397/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>
29398pub type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
29399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListVALVE.html>
29400pub type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
29401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html>
29402pub type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
29403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeaturesKHR.html>
29404pub type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
29405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferAddressFeaturesEXT.html>
29406pub type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
29407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.html>
29408pub type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
29409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>
29410pub type PhysicalDeviceComputeShaderDerivativesFeaturesNV =
29411    PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
29412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html>
29413pub type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
29414/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.html>
29415pub type PhysicalDeviceDepthStencilResolvePropertiesKHR =
29416    PhysicalDeviceDepthStencilResolveProperties;
29417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.html>
29418pub type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
29419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.html>
29420pub type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
29421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverPropertiesKHR.html>
29422pub type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
29423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>
29424pub type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
29425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR.html>
29426pub type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR =
29427    PhysicalDeviceDynamicRenderingLocalReadFeatures;
29428/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html>
29429pub type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
29430/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html>
29431pub type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
29432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html>
29433pub type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
29434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciBufFeaturesNV.html>
29435pub type PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
29436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html>
29437pub type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
29438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2KHR.html>
29439pub type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
29440/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloat16Int8FeaturesKHR.html>
29441pub type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
29442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsPropertiesKHR.html>
29443pub type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
29444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>
29445pub type PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM =
29446    PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
29447/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>
29448pub type PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM =
29449    PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
29450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>
29451pub type PhysicalDeviceFragmentShaderBarycentricFeaturesNV =
29452    PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
29453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>
29454pub type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
29455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html>
29456pub type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
29457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupPropertiesKHR.html>
29458pub type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
29459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeaturesEXT.html>
29460pub type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
29461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyPropertiesEXT.html>
29462pub type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
29463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeaturesEXT.html>
29464pub type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
29465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDPropertiesKHR.html>
29466pub type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
29467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html>
29468pub type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
29469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>
29470pub type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
29471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.html>
29472pub type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
29473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>
29474pub type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
29475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesKHR.html>
29476pub type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
29477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>
29478pub type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
29479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>
29480pub type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
29481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>
29482pub type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
29483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesKHR.html>
29484pub type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
29485/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>
29486pub type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
29487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesKHR.html>
29488pub type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
29489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3PropertiesKHR.html>
29490pub type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
29491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>
29492pub type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
29493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>
29494pub type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
29495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5FeaturesKHR.html>
29496pub type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
29497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5PropertiesKHR.html>
29498pub type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
29499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6FeaturesKHR.html>
29500pub type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
29501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6PropertiesKHR.html>
29502pub type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
29503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2KHR.html>
29504pub type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
29505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeaturesKHR.html>
29506pub type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
29507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPropertiesKHR.html>
29508pub type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
29509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>
29510pub type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE =
29511    PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
29512/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>
29513pub type PhysicalDevicePipelineCreationCacheControlFeaturesEXT =
29514    PhysicalDevicePipelineCreationCacheControlFeatures;
29515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html>
29516pub type PhysicalDevicePipelineProtectedAccessFeaturesEXT =
29517    PhysicalDevicePipelineProtectedAccessFeatures;
29518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html>
29519pub type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
29520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html>
29521pub type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
29522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html>
29523pub type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
29524/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT.html>
29525pub type PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT =
29526    PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;
29527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>
29528pub type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
29529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2KHR.html>
29530pub type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
29531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>
29532pub type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
29533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>
29534pub type PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM =
29535    PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
29536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>
29537pub type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR;
29538/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>
29539pub type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR;
29540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html>
29541pub type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
29542    PhysicalDeviceSamplerFilterMinmaxProperties;
29543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html>
29544pub type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
29545    PhysicalDeviceSamplerYcbcrConversionFeatures;
29546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.html>
29547pub type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
29548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.html>
29549pub type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR =
29550    PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
29551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.html>
29552pub type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
29553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>
29554pub type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT =
29555    PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
29556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html>
29557pub type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
29558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeaturesKHR.html>
29559pub type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
29560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.html>
29561pub type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
29562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2FeaturesKHR.html>
29563pub type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
29564/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>
29565pub type PhysicalDeviceShaderIntegerDotProductFeaturesKHR =
29566    PhysicalDeviceShaderIntegerDotProductFeatures;
29567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>
29568pub type PhysicalDeviceShaderIntegerDotProductPropertiesKHR =
29569    PhysicalDeviceShaderIntegerDotProductProperties;
29570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.html>
29571pub type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR =
29572    PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
29573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR.html>
29574pub type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
29575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>
29576pub type PhysicalDeviceShaderTerminateInvocationFeaturesKHR =
29577    PhysicalDeviceShaderTerminateInvocationFeatures;
29578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html>
29579pub type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
29580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>
29581pub type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
29582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>
29583pub type PhysicalDeviceSubgroupSizeControlPropertiesEXT =
29584    PhysicalDeviceSubgroupSizeControlProperties;
29585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html>
29586pub type PhysicalDeviceSwapchainMaintenance1FeaturesEXT =
29587    PhysicalDeviceSwapchainMaintenance1FeaturesKHR;
29588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>
29589pub type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
29590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>
29591pub type PhysicalDeviceTexelBufferAlignmentPropertiesEXT =
29592    PhysicalDeviceTexelBufferAlignmentProperties;
29593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>
29594pub type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT =
29595    PhysicalDeviceTextureCompressionASTCHDRFeatures;
29596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.html>
29597pub type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
29598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.html>
29599pub type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
29600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolPropertiesEXT.html>
29601pub type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
29602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.html>
29603pub type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR =
29604    PhysicalDeviceUniformBufferStandardLayoutFeatures;
29605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeatures.html>
29606pub type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
29607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html>
29608pub type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
29609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeaturesKHR.html>
29610pub type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
29611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>
29612pub type PhysicalDeviceVertexAttributeDivisorFeaturesEXT =
29613    PhysicalDeviceVertexAttributeDivisorFeatures;
29614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR.html>
29615pub type PhysicalDeviceVertexAttributeDivisorFeaturesKHR =
29616    PhysicalDeviceVertexAttributeDivisorFeatures;
29617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.html>
29618pub type PhysicalDeviceVertexAttributeDivisorPropertiesKHR =
29619    PhysicalDeviceVertexAttributeDivisorProperties;
29620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.html>
29621pub type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
29622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>
29623pub type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR =
29624    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
29625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfoKHR.html>
29626pub type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
29627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>
29628pub type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
29629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackEXT.html>
29630pub type PipelineCreationFeedbackEXT = PipelineCreationFeedback;
29631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoEXT.html>
29632pub type PipelineInfoEXT = PipelineInfoKHR;
29633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>
29634pub type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
29635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoKHR.html>
29636pub type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
29637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfoKHR.html>
29638pub type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
29639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfoEXT.html>
29640pub type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
29641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>
29642pub type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT =
29643    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
29644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html>
29645pub type PipelineTessellationDomainOriginStateCreateInfoKHR =
29646    PipelineTessellationDomainOriginStateCreateInfo;
29647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>
29648pub type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
29649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoKHR.html>
29650pub type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
29651/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfoEXT.html>
29652pub type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
29653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfoKHR.html>
29654pub type PushConstantsInfoKHR = PushConstantsInfo;
29655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfoKHR.html>
29656pub type PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
29657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfoKHR.html>
29658pub type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
29659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfoINTEL.html>
29660pub type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
29661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>
29662pub type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
29663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesKHR.html>
29664pub type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
29665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2KHR.html>
29666pub type QueueFamilyProperties2KHR = QueueFamilyProperties2;
29667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoEXT.html>
29668pub type ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR;
29669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfoKHR.html>
29670pub type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
29671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2KHR.html>
29672pub type RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
29673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html>
29674pub type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
29675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfoKHR.html>
29676pub type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
29677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfoKHR.html>
29678pub type RenderingAreaInfoKHR = RenderingAreaInfo;
29679/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfoKHR.html>
29680pub type RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
29681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfoKHR.html>
29682pub type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
29683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfoKHR.html>
29684pub type RenderingInfoKHR = RenderingInfo;
29685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfoKHR.html>
29686pub type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
29687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
29688pub type ResolveImageInfo2KHR = ResolveImageInfo2;
29689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfoEXT.html>
29690pub type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
29691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html>
29692pub type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
29693/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html>
29694pub type SamplerYcbcrConversionImageFormatPropertiesKHR =
29695    SamplerYcbcrConversionImageFormatProperties;
29696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfoKHR.html>
29697pub type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
29698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfoKHR.html>
29699pub type SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
29700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfoKHR.html>
29701pub type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
29702/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfoKHR.html>
29703pub type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
29704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfoKHR.html>
29705pub type SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
29706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderRequiredSubgroupSizeCreateInfoEXT.html>
29707pub type ShaderRequiredSubgroupSizeCreateInfoEXT =
29708    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
29709/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2KHR.html>
29710pub type SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
29711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2KHR.html>
29712pub type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
29713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2KHR.html>
29714pub type SubmitInfo2KHR = SubmitInfo2;
29715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfoKHR.html>
29716pub type SubpassBeginInfoKHR = SubpassBeginInfo;
29717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2KHR.html>
29718pub type SubpassDependency2KHR = SubpassDependency2;
29719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2KHR.html>
29720pub type SubpassDescription2KHR = SubpassDescription2;
29721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolveKHR.html>
29722pub type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
29723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfoKHR.html>
29724pub type SubpassEndInfoKHR = SubpassEndInfo;
29725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>
29726pub type SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT;
29727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySizeEXT.html>
29728pub type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
29729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2EXT.html>
29730pub type SubresourceLayout2EXT = SubresourceLayout2;
29731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2KHR.html>
29732pub type SubresourceLayout2KHR = SubresourceLayout2;
29733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCreateInfoOHOS.html>
29734pub type SurfaceCreateInfoOHOS = OHSurfaceCreateInfoOHOS;
29735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityEXT.html>
29736pub type SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR;
29737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeEXT.html>
29738pub type SurfacePresentModeEXT = SurfacePresentModeKHR;
29739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesEXT.html>
29740pub type SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR;
29741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoEXT.html>
29742pub type SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR;
29743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoEXT.html>
29744pub type SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR;
29745/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoEXT.html>
29746pub type SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR;
29747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoEXT.html>
29748pub type SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR;
29749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfoKHR.html>
29750pub type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
29751/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixNV.html>
29752pub type TransformMatrixNV = TransformMatrixKHR;
29753/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>
29754pub type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
29755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionKHR.html>
29756pub type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
29757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>
29758pub type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;