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/VkAttachmentReference.html>
1102#[repr(C)]
1103#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1104pub struct AttachmentReference {
1105    pub attachment: u32,
1106    pub layout: ImageLayout,
1107}
1108
1109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2.html>
1110#[repr(C)]
1111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1112pub struct AttachmentReference2 {
1113    pub s_type: StructureType,
1114    pub next: *const c_void,
1115    pub attachment: u32,
1116    pub layout: ImageLayout,
1117    pub aspect_mask: ImageAspectFlags,
1118}
1119
1120impl Default for AttachmentReference2 {
1121    #[inline]
1122    fn default() -> Self {
1123        Self {
1124            s_type: StructureType::ATTACHMENT_REFERENCE_2,
1125            next: ptr::null(),
1126            attachment: u32::default(),
1127            layout: ImageLayout::default(),
1128            aspect_mask: ImageAspectFlags::default(),
1129        }
1130    }
1131}
1132
1133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayout.html>
1134#[repr(C)]
1135#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1136pub struct AttachmentReferenceStencilLayout {
1137    pub s_type: StructureType,
1138    pub next: *mut c_void,
1139    pub stencil_layout: ImageLayout,
1140}
1141
1142impl Default for AttachmentReferenceStencilLayout {
1143    #[inline]
1144    fn default() -> Self {
1145        Self {
1146            s_type: StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
1147            next: ptr::null_mut(),
1148            stencil_layout: ImageLayout::default(),
1149        }
1150    }
1151}
1152
1153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoAMD.html>
1154#[repr(C)]
1155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1156pub struct AttachmentSampleCountInfoAMD {
1157    pub s_type: StructureType,
1158    pub next: *const c_void,
1159    pub color_attachment_count: u32,
1160    pub color_attachment_samples: *const SampleCountFlags,
1161    pub depth_stencil_attachment_samples: SampleCountFlags,
1162}
1163
1164impl Default for AttachmentSampleCountInfoAMD {
1165    #[inline]
1166    fn default() -> Self {
1167        Self {
1168            s_type: StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
1169            next: ptr::null(),
1170            color_attachment_count: u32::default(),
1171            color_attachment_samples: ptr::null(),
1172            depth_stencil_attachment_samples: SampleCountFlags::default(),
1173        }
1174    }
1175}
1176
1177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleLocationsEXT.html>
1178#[repr(C)]
1179#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1180pub struct AttachmentSampleLocationsEXT {
1181    pub attachment_index: u32,
1182    pub sample_locations_info: SampleLocationsInfoEXT,
1183}
1184
1185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseInStructure.html>
1186#[repr(C)]
1187#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1188pub struct BaseInStructure {
1189    pub s_type: StructureType,
1190    pub next: *const BaseInStructure,
1191}
1192
1193impl Default for BaseInStructure {
1194    #[inline]
1195    fn default() -> Self {
1196        Self {
1197            s_type: StructureType::default(),
1198            next: ptr::null(),
1199        }
1200    }
1201}
1202
1203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseOutStructure.html>
1204#[repr(C)]
1205#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1206pub struct BaseOutStructure {
1207    pub s_type: StructureType,
1208    pub next: *mut BaseOutStructure,
1209}
1210
1211impl Default for BaseOutStructure {
1212    #[inline]
1213    fn default() -> Self {
1214        Self {
1215            s_type: StructureType::default(),
1216            next: ptr::null_mut(),
1217        }
1218    }
1219}
1220
1221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html>
1222#[repr(C)]
1223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1224pub struct BindAccelerationStructureMemoryInfoNV {
1225    pub s_type: StructureType,
1226    pub next: *const c_void,
1227    pub acceleration_structure: AccelerationStructureNV,
1228    pub memory: DeviceMemory,
1229    pub memory_offset: DeviceSize,
1230    pub device_index_count: u32,
1231    pub device_indices: *const u32,
1232}
1233
1234impl Default for BindAccelerationStructureMemoryInfoNV {
1235    #[inline]
1236    fn default() -> Self {
1237        Self {
1238            s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
1239            next: ptr::null(),
1240            acceleration_structure: AccelerationStructureNV::default(),
1241            memory: DeviceMemory::default(),
1242            memory_offset: DeviceSize::default(),
1243            device_index_count: u32::default(),
1244            device_indices: ptr::null(),
1245        }
1246    }
1247}
1248
1249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html>
1250#[repr(C)]
1251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1252pub struct BindBufferMemoryDeviceGroupInfo {
1253    pub s_type: StructureType,
1254    pub next: *const c_void,
1255    pub device_index_count: u32,
1256    pub device_indices: *const u32,
1257}
1258
1259impl Default for BindBufferMemoryDeviceGroupInfo {
1260    #[inline]
1261    fn default() -> Self {
1262        Self {
1263            s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1264            next: ptr::null(),
1265            device_index_count: u32::default(),
1266            device_indices: ptr::null(),
1267        }
1268    }
1269}
1270
1271/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html>
1272#[repr(C)]
1273#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1274pub struct BindBufferMemoryInfo {
1275    pub s_type: StructureType,
1276    pub next: *const c_void,
1277    pub buffer: Buffer,
1278    pub memory: DeviceMemory,
1279    pub memory_offset: DeviceSize,
1280}
1281
1282impl Default for BindBufferMemoryInfo {
1283    #[inline]
1284    fn default() -> Self {
1285        Self {
1286            s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
1287            next: ptr::null(),
1288            buffer: Buffer::default(),
1289            memory: DeviceMemory::default(),
1290            memory_offset: DeviceSize::default(),
1291        }
1292    }
1293}
1294
1295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html>
1296#[repr(C)]
1297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1298pub struct BindDescriptorBufferEmbeddedSamplersInfoEXT {
1299    pub s_type: StructureType,
1300    pub next: *const c_void,
1301    pub stage_flags: ShaderStageFlags,
1302    pub layout: PipelineLayout,
1303    pub set: u32,
1304}
1305
1306impl Default for BindDescriptorBufferEmbeddedSamplersInfoEXT {
1307    #[inline]
1308    fn default() -> Self {
1309        Self {
1310            s_type: StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT,
1311            next: ptr::null(),
1312            stage_flags: ShaderStageFlags::default(),
1313            layout: PipelineLayout::default(),
1314            set: u32::default(),
1315        }
1316    }
1317}
1318
1319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html>
1320#[repr(C)]
1321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1322pub struct BindDescriptorSetsInfo {
1323    pub s_type: StructureType,
1324    pub next: *const c_void,
1325    pub stage_flags: ShaderStageFlags,
1326    pub layout: PipelineLayout,
1327    pub first_set: u32,
1328    pub descriptor_set_count: u32,
1329    pub descriptor_sets: *const DescriptorSet,
1330    pub dynamic_offset_count: u32,
1331    pub dynamic_offsets: *const u32,
1332}
1333
1334impl Default for BindDescriptorSetsInfo {
1335    #[inline]
1336    fn default() -> Self {
1337        Self {
1338            s_type: StructureType::BIND_DESCRIPTOR_SETS_INFO,
1339            next: ptr::null(),
1340            stage_flags: ShaderStageFlags::default(),
1341            layout: PipelineLayout::default(),
1342            first_set: u32::default(),
1343            descriptor_set_count: u32::default(),
1344            descriptor_sets: ptr::null(),
1345            dynamic_offset_count: u32::default(),
1346            dynamic_offsets: ptr::null(),
1347        }
1348    }
1349}
1350
1351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html>
1352#[repr(C)]
1353#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1354pub struct BindImageMemoryDeviceGroupInfo {
1355    pub s_type: StructureType,
1356    pub next: *const c_void,
1357    pub device_index_count: u32,
1358    pub device_indices: *const u32,
1359    pub split_instance_bind_region_count: u32,
1360    pub split_instance_bind_regions: *const Rect2D,
1361}
1362
1363impl Default for BindImageMemoryDeviceGroupInfo {
1364    #[inline]
1365    fn default() -> Self {
1366        Self {
1367            s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1368            next: ptr::null(),
1369            device_index_count: u32::default(),
1370            device_indices: ptr::null(),
1371            split_instance_bind_region_count: u32::default(),
1372            split_instance_bind_regions: ptr::null(),
1373        }
1374    }
1375}
1376
1377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html>
1378#[repr(C)]
1379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1380pub struct BindImageMemoryInfo {
1381    pub s_type: StructureType,
1382    pub next: *const c_void,
1383    pub image: Image,
1384    pub memory: DeviceMemory,
1385    pub memory_offset: DeviceSize,
1386}
1387
1388impl Default for BindImageMemoryInfo {
1389    #[inline]
1390    fn default() -> Self {
1391        Self {
1392            s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
1393            next: ptr::null(),
1394            image: Image::default(),
1395            memory: DeviceMemory::default(),
1396            memory_offset: DeviceSize::default(),
1397        }
1398    }
1399}
1400
1401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html>
1402#[repr(C)]
1403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1404pub struct BindImageMemorySwapchainInfoKHR {
1405    pub s_type: StructureType,
1406    pub next: *const c_void,
1407    pub swapchain: SwapchainKHR,
1408    pub image_index: u32,
1409}
1410
1411impl Default for BindImageMemorySwapchainInfoKHR {
1412    #[inline]
1413    fn default() -> Self {
1414        Self {
1415            s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
1416            next: ptr::null(),
1417            swapchain: SwapchainKHR::default(),
1418            image_index: u32::default(),
1419        }
1420    }
1421}
1422
1423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html>
1424#[repr(C)]
1425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1426pub struct BindImagePlaneMemoryInfo {
1427    pub s_type: StructureType,
1428    pub next: *const c_void,
1429    pub plane_aspect: ImageAspectFlags,
1430}
1431
1432impl Default for BindImagePlaneMemoryInfo {
1433    #[inline]
1434    fn default() -> Self {
1435        Self {
1436            s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
1437            next: ptr::null(),
1438            plane_aspect: ImageAspectFlags::default(),
1439        }
1440    }
1441}
1442
1443/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html>
1444#[repr(C)]
1445#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1446pub struct BindIndexBufferIndirectCommandEXT {
1447    pub buffer_address: DeviceAddress,
1448    pub size: u32,
1449    pub index_type: IndexType,
1450}
1451
1452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html>
1453#[repr(C)]
1454#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1455pub struct BindIndexBufferIndirectCommandNV {
1456    pub buffer_address: DeviceAddress,
1457    pub size: u32,
1458    pub index_type: IndexType,
1459}
1460
1461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatus.html>
1462#[repr(C)]
1463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1464pub struct BindMemoryStatus {
1465    pub s_type: StructureType,
1466    pub next: *const c_void,
1467    pub result: *mut Result,
1468}
1469
1470impl Default for BindMemoryStatus {
1471    #[inline]
1472    fn default() -> Self {
1473        Self {
1474            s_type: StructureType::BIND_MEMORY_STATUS,
1475            next: ptr::null(),
1476            result: ptr::null_mut(),
1477        }
1478    }
1479}
1480
1481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html>
1482#[repr(C)]
1483#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1484pub struct BindPipelineIndirectCommandNV {
1485    pub pipeline_address: DeviceAddress,
1486}
1487
1488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html>
1489#[repr(C)]
1490#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1491pub struct BindShaderGroupIndirectCommandNV {
1492    pub group_index: u32,
1493}
1494
1495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindSparseInfo.html>
1496#[repr(C)]
1497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1498pub struct BindSparseInfo {
1499    pub s_type: StructureType,
1500    pub next: *const c_void,
1501    pub wait_semaphore_count: u32,
1502    pub wait_semaphores: *const Semaphore,
1503    pub buffer_bind_count: u32,
1504    pub buffer_binds: *const SparseBufferMemoryBindInfo,
1505    pub image_opaque_bind_count: u32,
1506    pub image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
1507    pub image_bind_count: u32,
1508    pub image_binds: *const SparseImageMemoryBindInfo,
1509    pub signal_semaphore_count: u32,
1510    pub signal_semaphores: *const Semaphore,
1511}
1512
1513impl Default for BindSparseInfo {
1514    #[inline]
1515    fn default() -> Self {
1516        Self {
1517            s_type: StructureType::BIND_SPARSE_INFO,
1518            next: ptr::null(),
1519            wait_semaphore_count: u32::default(),
1520            wait_semaphores: ptr::null(),
1521            buffer_bind_count: u32::default(),
1522            buffer_binds: ptr::null(),
1523            image_opaque_bind_count: u32::default(),
1524            image_opaque_binds: ptr::null(),
1525            image_bind_count: u32::default(),
1526            image_binds: ptr::null(),
1527            signal_semaphore_count: u32::default(),
1528            signal_semaphores: ptr::null(),
1529        }
1530    }
1531}
1532
1533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html>
1534#[repr(C)]
1535#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1536pub struct BindVertexBufferIndirectCommandEXT {
1537    pub buffer_address: DeviceAddress,
1538    pub size: u32,
1539    pub stride: u32,
1540}
1541
1542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html>
1543#[repr(C)]
1544#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1545pub struct BindVertexBufferIndirectCommandNV {
1546    pub buffer_address: DeviceAddress,
1547    pub size: u32,
1548    pub stride: u32,
1549}
1550
1551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html>
1552#[repr(C)]
1553#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1554pub struct BindVideoSessionMemoryInfoKHR {
1555    pub s_type: StructureType,
1556    pub next: *const c_void,
1557    pub memory_bind_index: u32,
1558    pub memory: DeviceMemory,
1559    pub memory_offset: DeviceSize,
1560    pub memory_size: DeviceSize,
1561}
1562
1563impl Default for BindVideoSessionMemoryInfoKHR {
1564    #[inline]
1565    fn default() -> Self {
1566        Self {
1567            s_type: StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR,
1568            next: ptr::null(),
1569            memory_bind_index: u32::default(),
1570            memory: DeviceMemory::default(),
1571            memory_offset: DeviceSize::default(),
1572            memory_size: DeviceSize::default(),
1573        }
1574    }
1575}
1576
1577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html>
1578#[repr(C)]
1579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1580pub struct BlitImageCubicWeightsInfoQCOM {
1581    pub s_type: StructureType,
1582    pub next: *const c_void,
1583    pub cubic_weights: CubicFilterWeightsQCOM,
1584}
1585
1586impl Default for BlitImageCubicWeightsInfoQCOM {
1587    #[inline]
1588    fn default() -> Self {
1589        Self {
1590            s_type: StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM,
1591            next: ptr::null(),
1592            cubic_weights: CubicFilterWeightsQCOM::default(),
1593        }
1594    }
1595}
1596
1597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2.html>
1598#[repr(C)]
1599#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1600pub struct BlitImageInfo2 {
1601    pub s_type: StructureType,
1602    pub next: *const c_void,
1603    pub src_image: Image,
1604    pub src_image_layout: ImageLayout,
1605    pub dst_image: Image,
1606    pub dst_image_layout: ImageLayout,
1607    pub region_count: u32,
1608    pub regions: *const ImageBlit2,
1609    pub filter: Filter,
1610}
1611
1612impl Default for BlitImageInfo2 {
1613    #[inline]
1614    fn default() -> Self {
1615        Self {
1616            s_type: StructureType::BLIT_IMAGE_INFO_2,
1617            next: ptr::null(),
1618            src_image: Image::default(),
1619            src_image_layout: ImageLayout::default(),
1620            dst_image: Image::default(),
1621            dst_image_layout: ImageLayout::default(),
1622            region_count: u32::default(),
1623            regions: ptr::null(),
1624            filter: Filter::default(),
1625        }
1626    }
1627}
1628
1629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html>
1630#[repr(C)]
1631#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1632pub struct BufferCaptureDescriptorDataInfoEXT {
1633    pub s_type: StructureType,
1634    pub next: *const c_void,
1635    pub buffer: Buffer,
1636}
1637
1638impl Default for BufferCaptureDescriptorDataInfoEXT {
1639    #[inline]
1640    fn default() -> Self {
1641        Self {
1642            s_type: StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
1643            next: ptr::null(),
1644            buffer: Buffer::default(),
1645        }
1646    }
1647}
1648
1649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>
1650#[repr(C)]
1651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1652pub struct BufferCollectionBufferCreateInfoFUCHSIA {
1653    pub s_type: StructureType,
1654    pub next: *const c_void,
1655    pub collection: BufferCollectionFUCHSIA,
1656    pub index: u32,
1657}
1658
1659impl Default for BufferCollectionBufferCreateInfoFUCHSIA {
1660    #[inline]
1661    fn default() -> Self {
1662        Self {
1663            s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
1664            next: ptr::null(),
1665            collection: BufferCollectionFUCHSIA::default(),
1666            index: u32::default(),
1667        }
1668    }
1669}
1670
1671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>
1672#[repr(C)]
1673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1674pub struct BufferCollectionConstraintsInfoFUCHSIA {
1675    pub s_type: StructureType,
1676    pub next: *const c_void,
1677    pub min_buffer_count: u32,
1678    pub max_buffer_count: u32,
1679    pub min_buffer_count_for_camping: u32,
1680    pub min_buffer_count_for_dedicated_slack: u32,
1681    pub min_buffer_count_for_shared_slack: u32,
1682}
1683
1684impl Default for BufferCollectionConstraintsInfoFUCHSIA {
1685    #[inline]
1686    fn default() -> Self {
1687        Self {
1688            s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
1689            next: ptr::null(),
1690            min_buffer_count: u32::default(),
1691            max_buffer_count: u32::default(),
1692            min_buffer_count_for_camping: u32::default(),
1693            min_buffer_count_for_dedicated_slack: u32::default(),
1694            min_buffer_count_for_shared_slack: u32::default(),
1695        }
1696    }
1697}
1698
1699/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>
1700#[repr(C)]
1701#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1702pub struct BufferCollectionCreateInfoFUCHSIA {
1703    pub s_type: StructureType,
1704    pub next: *const c_void,
1705    pub collection_token: zx_handle_t,
1706}
1707
1708impl Default for BufferCollectionCreateInfoFUCHSIA {
1709    #[inline]
1710    fn default() -> Self {
1711        Self {
1712            s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
1713            next: ptr::null(),
1714            collection_token: zx_handle_t::default(),
1715        }
1716    }
1717}
1718
1719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>
1720#[repr(C)]
1721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1722pub struct BufferCollectionImageCreateInfoFUCHSIA {
1723    pub s_type: StructureType,
1724    pub next: *const c_void,
1725    pub collection: BufferCollectionFUCHSIA,
1726    pub index: u32,
1727}
1728
1729impl Default for BufferCollectionImageCreateInfoFUCHSIA {
1730    #[inline]
1731    fn default() -> Self {
1732        Self {
1733            s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
1734            next: ptr::null(),
1735            collection: BufferCollectionFUCHSIA::default(),
1736            index: u32::default(),
1737        }
1738    }
1739}
1740
1741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html>
1742#[repr(C)]
1743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1744pub struct BufferCollectionPropertiesFUCHSIA {
1745    pub s_type: StructureType,
1746    pub next: *mut c_void,
1747    pub memory_type_bits: u32,
1748    pub buffer_count: u32,
1749    pub create_info_index: u32,
1750    pub sysmem_pixel_format: u64,
1751    pub format_features: FormatFeatureFlags,
1752    pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
1753    pub sampler_ycbcr_conversion_components: ComponentMapping,
1754    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
1755    pub suggested_ycbcr_range: SamplerYcbcrRange,
1756    pub suggested_x_chroma_offset: ChromaLocation,
1757    pub suggested_y_chroma_offset: ChromaLocation,
1758}
1759
1760impl Default for BufferCollectionPropertiesFUCHSIA {
1761    #[inline]
1762    fn default() -> Self {
1763        Self {
1764            s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
1765            next: ptr::null_mut(),
1766            memory_type_bits: u32::default(),
1767            buffer_count: u32::default(),
1768            create_info_index: u32::default(),
1769            sysmem_pixel_format: u64::default(),
1770            format_features: FormatFeatureFlags::default(),
1771            sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
1772            sampler_ycbcr_conversion_components: ComponentMapping::default(),
1773            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
1774            suggested_ycbcr_range: SamplerYcbcrRange::default(),
1775            suggested_x_chroma_offset: ChromaLocation::default(),
1776            suggested_y_chroma_offset: ChromaLocation::default(),
1777        }
1778    }
1779}
1780
1781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html>
1782#[repr(C)]
1783#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1784pub struct BufferConstraintsInfoFUCHSIA {
1785    pub s_type: StructureType,
1786    pub next: *const c_void,
1787    pub create_info: BufferCreateInfo,
1788    pub required_format_features: FormatFeatureFlags,
1789    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
1790}
1791
1792impl Default for BufferConstraintsInfoFUCHSIA {
1793    #[inline]
1794    fn default() -> Self {
1795        Self {
1796            s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
1797            next: ptr::null(),
1798            create_info: BufferCreateInfo::default(),
1799            required_format_features: FormatFeatureFlags::default(),
1800            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
1801        }
1802    }
1803}
1804
1805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy.html>
1806#[repr(C)]
1807#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1808pub struct BufferCopy {
1809    pub src_offset: DeviceSize,
1810    pub dst_offset: DeviceSize,
1811    pub size: DeviceSize,
1812}
1813
1814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2.html>
1815#[repr(C)]
1816#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1817pub struct BufferCopy2 {
1818    pub s_type: StructureType,
1819    pub next: *const c_void,
1820    pub src_offset: DeviceSize,
1821    pub dst_offset: DeviceSize,
1822    pub size: DeviceSize,
1823}
1824
1825impl Default for BufferCopy2 {
1826    #[inline]
1827    fn default() -> Self {
1828        Self {
1829            s_type: StructureType::BUFFER_COPY_2,
1830            next: ptr::null(),
1831            src_offset: DeviceSize::default(),
1832            dst_offset: DeviceSize::default(),
1833            size: DeviceSize::default(),
1834        }
1835    }
1836}
1837
1838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateInfo.html>
1839#[repr(C)]
1840#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1841pub struct BufferCreateInfo {
1842    pub s_type: StructureType,
1843    pub next: *const c_void,
1844    pub flags: BufferCreateFlags,
1845    pub size: DeviceSize,
1846    pub usage: BufferUsageFlags,
1847    pub sharing_mode: SharingMode,
1848    pub queue_family_index_count: u32,
1849    pub queue_family_indices: *const u32,
1850}
1851
1852impl Default for BufferCreateInfo {
1853    #[inline]
1854    fn default() -> Self {
1855        Self {
1856            s_type: StructureType::BUFFER_CREATE_INFO,
1857            next: ptr::null(),
1858            flags: BufferCreateFlags::default(),
1859            size: DeviceSize::default(),
1860            usage: BufferUsageFlags::default(),
1861            sharing_mode: SharingMode::default(),
1862            queue_family_index_count: u32::default(),
1863            queue_family_indices: ptr::null(),
1864        }
1865    }
1866}
1867
1868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html>
1869#[repr(C)]
1870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1871pub struct BufferDeviceAddressCreateInfoEXT {
1872    pub s_type: StructureType,
1873    pub next: *const c_void,
1874    pub device_address: DeviceAddress,
1875}
1876
1877impl Default for BufferDeviceAddressCreateInfoEXT {
1878    #[inline]
1879    fn default() -> Self {
1880        Self {
1881            s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
1882            next: ptr::null(),
1883            device_address: DeviceAddress::default(),
1884        }
1885    }
1886}
1887
1888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html>
1889#[repr(C)]
1890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1891pub struct BufferDeviceAddressInfo {
1892    pub s_type: StructureType,
1893    pub next: *const c_void,
1894    pub buffer: Buffer,
1895}
1896
1897impl Default for BufferDeviceAddressInfo {
1898    #[inline]
1899    fn default() -> Self {
1900        Self {
1901            s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
1902            next: ptr::null(),
1903            buffer: Buffer::default(),
1904        }
1905    }
1906}
1907
1908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy.html>
1909#[repr(C)]
1910#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1911pub struct BufferImageCopy {
1912    pub buffer_offset: DeviceSize,
1913    pub buffer_row_length: u32,
1914    pub buffer_image_height: u32,
1915    pub image_subresource: ImageSubresourceLayers,
1916    pub image_offset: Offset3D,
1917    pub image_extent: Extent3D,
1918}
1919
1920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2.html>
1921#[repr(C)]
1922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1923pub struct BufferImageCopy2 {
1924    pub s_type: StructureType,
1925    pub next: *const c_void,
1926    pub buffer_offset: DeviceSize,
1927    pub buffer_row_length: u32,
1928    pub buffer_image_height: u32,
1929    pub image_subresource: ImageSubresourceLayers,
1930    pub image_offset: Offset3D,
1931    pub image_extent: Extent3D,
1932}
1933
1934impl Default for BufferImageCopy2 {
1935    #[inline]
1936    fn default() -> Self {
1937        Self {
1938            s_type: StructureType::BUFFER_IMAGE_COPY_2,
1939            next: ptr::null(),
1940            buffer_offset: DeviceSize::default(),
1941            buffer_row_length: u32::default(),
1942            buffer_image_height: u32::default(),
1943            image_subresource: ImageSubresourceLayers::default(),
1944            image_offset: Offset3D::default(),
1945            image_extent: Extent3D::default(),
1946        }
1947    }
1948}
1949
1950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html>
1951#[repr(C)]
1952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1953pub struct BufferMemoryBarrier {
1954    pub s_type: StructureType,
1955    pub next: *const c_void,
1956    pub src_access_mask: AccessFlags,
1957    pub dst_access_mask: AccessFlags,
1958    pub src_queue_family_index: u32,
1959    pub dst_queue_family_index: u32,
1960    pub buffer: Buffer,
1961    pub offset: DeviceSize,
1962    pub size: DeviceSize,
1963}
1964
1965impl Default for BufferMemoryBarrier {
1966    #[inline]
1967    fn default() -> Self {
1968        Self {
1969            s_type: StructureType::BUFFER_MEMORY_BARRIER,
1970            next: ptr::null(),
1971            src_access_mask: AccessFlags::default(),
1972            dst_access_mask: AccessFlags::default(),
1973            src_queue_family_index: u32::default(),
1974            dst_queue_family_index: u32::default(),
1975            buffer: Buffer::default(),
1976            offset: DeviceSize::default(),
1977            size: DeviceSize::default(),
1978        }
1979    }
1980}
1981
1982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html>
1983#[repr(C)]
1984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1985pub struct BufferMemoryBarrier2 {
1986    pub s_type: StructureType,
1987    pub next: *const c_void,
1988    pub src_stage_mask: PipelineStageFlags2,
1989    pub src_access_mask: AccessFlags2,
1990    pub dst_stage_mask: PipelineStageFlags2,
1991    pub dst_access_mask: AccessFlags2,
1992    pub src_queue_family_index: u32,
1993    pub dst_queue_family_index: u32,
1994    pub buffer: Buffer,
1995    pub offset: DeviceSize,
1996    pub size: DeviceSize,
1997}
1998
1999impl Default for BufferMemoryBarrier2 {
2000    #[inline]
2001    fn default() -> Self {
2002        Self {
2003            s_type: StructureType::BUFFER_MEMORY_BARRIER_2,
2004            next: ptr::null(),
2005            src_stage_mask: PipelineStageFlags2::default(),
2006            src_access_mask: AccessFlags2::default(),
2007            dst_stage_mask: PipelineStageFlags2::default(),
2008            dst_access_mask: AccessFlags2::default(),
2009            src_queue_family_index: u32::default(),
2010            dst_queue_family_index: u32::default(),
2011            buffer: Buffer::default(),
2012            offset: DeviceSize::default(),
2013            size: DeviceSize::default(),
2014        }
2015    }
2016}
2017
2018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html>
2019#[repr(C)]
2020#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2021pub struct BufferMemoryRequirementsInfo2 {
2022    pub s_type: StructureType,
2023    pub next: *const c_void,
2024    pub buffer: Buffer,
2025}
2026
2027impl Default for BufferMemoryRequirementsInfo2 {
2028    #[inline]
2029    fn default() -> Self {
2030        Self {
2031            s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
2032            next: ptr::null(),
2033            buffer: Buffer::default(),
2034        }
2035    }
2036}
2037
2038/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>
2039#[repr(C)]
2040#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2041pub struct BufferOpaqueCaptureAddressCreateInfo {
2042    pub s_type: StructureType,
2043    pub next: *const c_void,
2044    pub opaque_capture_address: u64,
2045}
2046
2047impl Default for BufferOpaqueCaptureAddressCreateInfo {
2048    #[inline]
2049    fn default() -> Self {
2050        Self {
2051            s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
2052            next: ptr::null(),
2053            opaque_capture_address: u64::default(),
2054        }
2055    }
2056}
2057
2058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html>
2059#[repr(C)]
2060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2061pub struct BufferUsageFlags2CreateInfo {
2062    pub s_type: StructureType,
2063    pub next: *const c_void,
2064    pub usage: BufferUsageFlags2,
2065}
2066
2067impl Default for BufferUsageFlags2CreateInfo {
2068    #[inline]
2069    fn default() -> Self {
2070        Self {
2071            s_type: StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO,
2072            next: ptr::null(),
2073            usage: BufferUsageFlags2::default(),
2074        }
2075    }
2076}
2077
2078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html>
2079#[repr(C)]
2080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2081pub struct BufferViewCreateInfo {
2082    pub s_type: StructureType,
2083    pub next: *const c_void,
2084    pub flags: BufferViewCreateFlags,
2085    pub buffer: Buffer,
2086    pub format: Format,
2087    pub offset: DeviceSize,
2088    pub range: DeviceSize,
2089}
2090
2091impl Default for BufferViewCreateInfo {
2092    #[inline]
2093    fn default() -> Self {
2094        Self {
2095            s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2096            next: ptr::null(),
2097            flags: BufferViewCreateFlags::default(),
2098            buffer: Buffer::default(),
2099            format: Format::default(),
2100            offset: DeviceSize::default(),
2101            range: DeviceSize::default(),
2102        }
2103    }
2104}
2105
2106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html>
2107#[repr(C)]
2108#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2109pub struct BuildPartitionedAccelerationStructureIndirectCommandNV {
2110    pub op_type: PartitionedAccelerationStructureOpTypeNV,
2111    pub arg_count: u32,
2112    pub arg_data: StridedDeviceAddressNV,
2113}
2114
2115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html>
2116#[repr(C)]
2117#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2118pub struct BuildPartitionedAccelerationStructureInfoNV {
2119    pub s_type: StructureType,
2120    pub next: *mut c_void,
2121    pub input: PartitionedAccelerationStructureInstancesInputNV,
2122    pub src_acceleration_structure_data: DeviceAddress,
2123    pub dst_acceleration_structure_data: DeviceAddress,
2124    pub scratch_data: DeviceAddress,
2125    pub src_infos: DeviceAddress,
2126    pub src_infos_count: DeviceAddress,
2127}
2128
2129impl Default for BuildPartitionedAccelerationStructureInfoNV {
2130    #[inline]
2131    fn default() -> Self {
2132        Self {
2133            s_type: StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV,
2134            next: ptr::null_mut(),
2135            input: PartitionedAccelerationStructureInstancesInputNV::default(),
2136            src_acceleration_structure_data: DeviceAddress::default(),
2137            dst_acceleration_structure_data: DeviceAddress::default(),
2138            scratch_data: DeviceAddress::default(),
2139            src_infos: DeviceAddress::default(),
2140            src_infos_count: DeviceAddress::default(),
2141        }
2142    }
2143}
2144
2145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html>
2146#[repr(C)]
2147#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2148pub struct CalibratedTimestampInfoKHR {
2149    pub s_type: StructureType,
2150    pub next: *const c_void,
2151    pub time_domain: TimeDomainKHR,
2152}
2153
2154impl Default for CalibratedTimestampInfoKHR {
2155    #[inline]
2156    fn default() -> Self {
2157        Self {
2158            s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_KHR,
2159            next: ptr::null(),
2160            time_domain: TimeDomainKHR::default(),
2161        }
2162    }
2163}
2164
2165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointData2NV.html>
2166#[repr(C)]
2167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2168pub struct CheckpointData2NV {
2169    pub s_type: StructureType,
2170    pub next: *mut c_void,
2171    pub stage: PipelineStageFlags2,
2172    pub checkpoint_marker: *mut c_void,
2173}
2174
2175impl Default for CheckpointData2NV {
2176    #[inline]
2177    fn default() -> Self {
2178        Self {
2179            s_type: StructureType::CHECKPOINT_DATA_2_NV,
2180            next: ptr::null_mut(),
2181            stage: PipelineStageFlags2::default(),
2182            checkpoint_marker: ptr::null_mut(),
2183        }
2184    }
2185}
2186
2187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointDataNV.html>
2188#[repr(C)]
2189#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2190pub struct CheckpointDataNV {
2191    pub s_type: StructureType,
2192    pub next: *mut c_void,
2193    pub stage: PipelineStageFlags,
2194    pub checkpoint_marker: *mut c_void,
2195}
2196
2197impl Default for CheckpointDataNV {
2198    #[inline]
2199    fn default() -> Self {
2200        Self {
2201            s_type: StructureType::CHECKPOINT_DATA_NV,
2202            next: ptr::null_mut(),
2203            stage: PipelineStageFlags::default(),
2204            checkpoint_marker: ptr::null_mut(),
2205        }
2206    }
2207}
2208
2209/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearAttachment.html>
2210#[repr(C)]
2211#[derive(Copy, Clone, Default, Debug)]
2212pub struct ClearAttachment {
2213    pub aspect_mask: ImageAspectFlags,
2214    pub color_attachment: u32,
2215    pub clear_value: ClearValue,
2216}
2217
2218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html>
2219#[repr(C)]
2220#[derive(Copy, Clone, Default, Debug, PartialEq)]
2221pub struct ClearDepthStencilValue {
2222    pub depth: f32,
2223    pub stencil: u32,
2224}
2225
2226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearRect.html>
2227#[repr(C)]
2228#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2229pub struct ClearRect {
2230    pub rect: Rect2D,
2231    pub base_array_layer: u32,
2232    pub layer_count: u32,
2233}
2234
2235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html>
2236#[repr(C)]
2237#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2238pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
2239    pub cluster_references_count: u32,
2240    pub cluster_references_stride: u32,
2241    pub cluster_references: DeviceAddress,
2242}
2243
2244bitfields32! {
2245    struct ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0 {
2246        (triangle_count, with_triangle_count)[0 .. 9],
2247        (vertex_count, with_vertex_count)[9 .. 18],
2248        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2249        (index_type, with_index_type)[24 .. 28],
2250        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2251    }
2252}
2253
2254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html>
2255#[repr(C)]
2256#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2257pub struct ClusterAccelerationStructureBuildTriangleClusterInfoNV {
2258    pub cluster_id: u32,
2259    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2260    pub base_geometry_index_and_geometry_flags:
2261        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2262    pub index_buffer_stride: u16,
2263    pub vertex_buffer_stride: u16,
2264    pub geometry_index_and_flags_buffer_stride: u16,
2265    pub opacity_micromap_index_buffer_stride: u16,
2266    pub index_buffer: DeviceAddress,
2267    pub vertex_buffer: DeviceAddress,
2268    pub geometry_index_and_flags_buffer: DeviceAddress,
2269    pub opacity_micromap_array: DeviceAddress,
2270    pub opacity_micromap_index_buffer: DeviceAddress,
2271    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0,
2272}
2273
2274bitfields32! {
2275    struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0 {
2276        (triangle_count, with_triangle_count)[0 .. 9],
2277        (vertex_count, with_vertex_count)[9 .. 18],
2278        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2279        (index_type, with_index_type)[24 .. 28],
2280        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2281    }
2282}
2283
2284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html>
2285#[repr(C)]
2286#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2287pub struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV {
2288    pub cluster_id: u32,
2289    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2290    pub base_geometry_index_and_geometry_flags:
2291        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2292    pub index_buffer_stride: u16,
2293    pub vertex_buffer_stride: u16,
2294    pub geometry_index_and_flags_buffer_stride: u16,
2295    pub opacity_micromap_index_buffer_stride: u16,
2296    pub index_buffer: DeviceAddress,
2297    pub vertex_buffer: DeviceAddress,
2298    pub geometry_index_and_flags_buffer: DeviceAddress,
2299    pub opacity_micromap_array: DeviceAddress,
2300    pub opacity_micromap_index_buffer: DeviceAddress,
2301    pub instantiation_bounding_box_limit: DeviceAddress,
2302    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0,
2303}
2304
2305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html>
2306#[repr(C)]
2307#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2308pub struct ClusterAccelerationStructureClustersBottomLevelInputNV {
2309    pub s_type: StructureType,
2310    pub next: *mut c_void,
2311    pub max_total_cluster_count: u32,
2312    pub max_cluster_count_per_acceleration_structure: u32,
2313}
2314
2315impl Default for ClusterAccelerationStructureClustersBottomLevelInputNV {
2316    #[inline]
2317    fn default() -> Self {
2318        Self {
2319            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV,
2320            next: ptr::null_mut(),
2321            max_total_cluster_count: u32::default(),
2322            max_cluster_count_per_acceleration_structure: u32::default(),
2323        }
2324    }
2325}
2326
2327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html>
2328#[repr(C)]
2329#[derive(Copy, Clone, Debug)]
2330pub struct ClusterAccelerationStructureCommandsInfoNV {
2331    pub s_type: StructureType,
2332    pub next: *mut c_void,
2333    pub input: ClusterAccelerationStructureInputInfoNV,
2334    pub dst_implicit_data: DeviceAddress,
2335    pub scratch_data: DeviceAddress,
2336    pub dst_addresses_array: StridedDeviceAddressRegionKHR,
2337    pub dst_sizes_array: StridedDeviceAddressRegionKHR,
2338    pub src_infos_array: StridedDeviceAddressRegionKHR,
2339    pub src_infos_count: DeviceAddress,
2340    pub address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV,
2341}
2342
2343impl Default for ClusterAccelerationStructureCommandsInfoNV {
2344    #[inline]
2345    fn default() -> Self {
2346        Self {
2347            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV,
2348            next: ptr::null_mut(),
2349            input: ClusterAccelerationStructureInputInfoNV::default(),
2350            dst_implicit_data: DeviceAddress::default(),
2351            scratch_data: DeviceAddress::default(),
2352            dst_addresses_array: StridedDeviceAddressRegionKHR::default(),
2353            dst_sizes_array: StridedDeviceAddressRegionKHR::default(),
2354            src_infos_array: StridedDeviceAddressRegionKHR::default(),
2355            src_infos_count: DeviceAddress::default(),
2356            address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV::default(
2357            ),
2358        }
2359    }
2360}
2361
2362bitfields32! {
2363    struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0 {
2364        (geometry_index, with_geometry_index)[0 .. 24],
2365        (reserved, with_reserved)[24 .. 29],
2366        (geometry_flags, with_geometry_flags)[29 .. 32],
2367    }
2368}
2369
2370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html>
2371#[repr(C)]
2372#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2373pub struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV {
2374    pub bitfields0: ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0,
2375}
2376
2377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html>
2378#[repr(C)]
2379#[derive(Copy, Clone, Debug)]
2380pub struct ClusterAccelerationStructureInputInfoNV {
2381    pub s_type: StructureType,
2382    pub next: *mut c_void,
2383    pub max_acceleration_structure_count: u32,
2384    pub flags: BuildAccelerationStructureFlagsKHR,
2385    pub op_type: ClusterAccelerationStructureOpTypeNV,
2386    pub op_mode: ClusterAccelerationStructureOpModeNV,
2387    pub op_input: ClusterAccelerationStructureOpInputNV,
2388}
2389
2390impl Default for ClusterAccelerationStructureInputInfoNV {
2391    #[inline]
2392    fn default() -> Self {
2393        Self {
2394            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV,
2395            next: ptr::null_mut(),
2396            max_acceleration_structure_count: u32::default(),
2397            flags: BuildAccelerationStructureFlagsKHR::default(),
2398            op_type: ClusterAccelerationStructureOpTypeNV::default(),
2399            op_mode: ClusterAccelerationStructureOpModeNV::default(),
2400            op_input: ClusterAccelerationStructureOpInputNV::default(),
2401        }
2402    }
2403}
2404
2405bitfields32! {
2406    struct ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0 {
2407        (geometry_index_offset, with_geometry_index_offset)[0 .. 24],
2408        (reserved, with_reserved)[24 .. 32],
2409    }
2410}
2411
2412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html>
2413#[repr(C)]
2414#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2415pub struct ClusterAccelerationStructureInstantiateClusterInfoNV {
2416    pub cluster_id_offset: u32,
2417    pub cluster_template_address: DeviceAddress,
2418    pub vertex_buffer: StridedDeviceAddressNV,
2419    pub bitfields0: ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0,
2420}
2421
2422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html>
2423#[repr(C)]
2424#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2425pub struct ClusterAccelerationStructureMoveObjectsInfoNV {
2426    pub src_acceleration_structure: DeviceAddress,
2427}
2428
2429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html>
2430#[repr(C)]
2431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2432pub struct ClusterAccelerationStructureMoveObjectsInputNV {
2433    pub s_type: StructureType,
2434    pub next: *mut c_void,
2435    pub type_: ClusterAccelerationStructureTypeNV,
2436    pub no_move_overlap: Bool32,
2437    pub max_moved_bytes: DeviceSize,
2438}
2439
2440impl Default for ClusterAccelerationStructureMoveObjectsInputNV {
2441    #[inline]
2442    fn default() -> Self {
2443        Self {
2444            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV,
2445            next: ptr::null_mut(),
2446            type_: ClusterAccelerationStructureTypeNV::default(),
2447            no_move_overlap: Bool32::default(),
2448            max_moved_bytes: DeviceSize::default(),
2449        }
2450    }
2451}
2452
2453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html>
2454#[repr(C)]
2455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2456pub struct ClusterAccelerationStructureTriangleClusterInputNV {
2457    pub s_type: StructureType,
2458    pub next: *mut c_void,
2459    pub vertex_format: Format,
2460    pub max_geometry_index_value: u32,
2461    pub max_cluster_unique_geometry_count: u32,
2462    pub max_cluster_triangle_count: u32,
2463    pub max_cluster_vertex_count: u32,
2464    pub max_total_triangle_count: u32,
2465    pub max_total_vertex_count: u32,
2466    pub min_position_truncate_bit_count: u32,
2467}
2468
2469impl Default for ClusterAccelerationStructureTriangleClusterInputNV {
2470    #[inline]
2471    fn default() -> Self {
2472        Self {
2473            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV,
2474            next: ptr::null_mut(),
2475            vertex_format: Format::default(),
2476            max_geometry_index_value: u32::default(),
2477            max_cluster_unique_geometry_count: u32::default(),
2478            max_cluster_triangle_count: u32::default(),
2479            max_cluster_vertex_count: u32::default(),
2480            max_total_triangle_count: u32::default(),
2481            max_total_vertex_count: u32::default(),
2482            min_position_truncate_bit_count: u32::default(),
2483        }
2484    }
2485}
2486
2487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html>
2488#[repr(C)]
2489#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2490pub struct CoarseSampleLocationNV {
2491    pub pixel_x: u32,
2492    pub pixel_y: u32,
2493    pub sample: u32,
2494}
2495
2496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html>
2497#[repr(C)]
2498#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2499pub struct CoarseSampleOrderCustomNV {
2500    pub shading_rate: ShadingRatePaletteEntryNV,
2501    pub sample_count: u32,
2502    pub sample_location_count: u32,
2503    pub sample_locations: *const CoarseSampleLocationNV,
2504}
2505
2506impl Default for CoarseSampleOrderCustomNV {
2507    #[inline]
2508    fn default() -> Self {
2509        Self {
2510            shading_rate: ShadingRatePaletteEntryNV::default(),
2511            sample_count: u32::default(),
2512            sample_location_count: u32::default(),
2513            sample_locations: ptr::null(),
2514        }
2515    }
2516}
2517
2518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html>
2519#[repr(C)]
2520#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2521pub struct ColorBlendAdvancedEXT {
2522    pub advanced_blend_op: BlendOp,
2523    pub src_premultiplied: Bool32,
2524    pub dst_premultiplied: Bool32,
2525    pub blend_overlap: BlendOverlapEXT,
2526    pub clamp_results: Bool32,
2527}
2528
2529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html>
2530#[repr(C)]
2531#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2532pub struct ColorBlendEquationEXT {
2533    pub src_color_blend_factor: BlendFactor,
2534    pub dst_color_blend_factor: BlendFactor,
2535    pub color_blend_op: BlendOp,
2536    pub src_alpha_blend_factor: BlendFactor,
2537    pub dst_alpha_blend_factor: BlendFactor,
2538    pub alpha_blend_op: BlendOp,
2539}
2540
2541/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html>
2542#[repr(C)]
2543#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2544pub struct CommandBufferAllocateInfo {
2545    pub s_type: StructureType,
2546    pub next: *const c_void,
2547    pub command_pool: CommandPool,
2548    pub level: CommandBufferLevel,
2549    pub command_buffer_count: u32,
2550}
2551
2552impl Default for CommandBufferAllocateInfo {
2553    #[inline]
2554    fn default() -> Self {
2555        Self {
2556            s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
2557            next: ptr::null(),
2558            command_pool: CommandPool::default(),
2559            level: CommandBufferLevel::default(),
2560            command_buffer_count: u32::default(),
2561        }
2562    }
2563}
2564
2565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html>
2566#[repr(C)]
2567#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2568pub struct CommandBufferBeginInfo {
2569    pub s_type: StructureType,
2570    pub next: *const c_void,
2571    pub flags: CommandBufferUsageFlags,
2572    pub inheritance_info: *const CommandBufferInheritanceInfo,
2573}
2574
2575impl Default for CommandBufferBeginInfo {
2576    #[inline]
2577    fn default() -> Self {
2578        Self {
2579            s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
2580            next: ptr::null(),
2581            flags: CommandBufferUsageFlags::default(),
2582            inheritance_info: ptr::null(),
2583        }
2584    }
2585}
2586
2587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>
2588#[repr(C)]
2589#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2590pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
2591    pub s_type: StructureType,
2592    pub next: *const c_void,
2593    pub conditional_rendering_enable: Bool32,
2594}
2595
2596impl Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
2597    #[inline]
2598    fn default() -> Self {
2599        Self {
2600            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
2601            next: ptr::null(),
2602            conditional_rendering_enable: Bool32::default(),
2603        }
2604    }
2605}
2606
2607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html>
2608#[repr(C)]
2609#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2610pub struct CommandBufferInheritanceInfo {
2611    pub s_type: StructureType,
2612    pub next: *const c_void,
2613    pub render_pass: RenderPass,
2614    pub subpass: u32,
2615    pub framebuffer: Framebuffer,
2616    pub occlusion_query_enable: Bool32,
2617    pub query_flags: QueryControlFlags,
2618    pub pipeline_statistics: QueryPipelineStatisticFlags,
2619}
2620
2621impl Default for CommandBufferInheritanceInfo {
2622    #[inline]
2623    fn default() -> Self {
2624        Self {
2625            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
2626            next: ptr::null(),
2627            render_pass: RenderPass::default(),
2628            subpass: u32::default(),
2629            framebuffer: Framebuffer::default(),
2630            occlusion_query_enable: Bool32::default(),
2631            query_flags: QueryControlFlags::default(),
2632            pipeline_statistics: QueryPipelineStatisticFlags::default(),
2633        }
2634    }
2635}
2636
2637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>
2638#[repr(C)]
2639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2640pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
2641    pub s_type: StructureType,
2642    pub next: *mut c_void,
2643    pub transform: SurfaceTransformFlagsKHR,
2644    pub render_area: Rect2D,
2645}
2646
2647impl Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
2648    #[inline]
2649    fn default() -> Self {
2650        Self {
2651            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
2652            next: ptr::null_mut(),
2653            transform: SurfaceTransformFlagsKHR::default(),
2654            render_area: Rect2D::default(),
2655        }
2656    }
2657}
2658
2659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html>
2660#[repr(C)]
2661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2662pub struct CommandBufferInheritanceRenderingInfo {
2663    pub s_type: StructureType,
2664    pub next: *const c_void,
2665    pub flags: RenderingFlags,
2666    pub view_mask: u32,
2667    pub color_attachment_count: u32,
2668    pub color_attachment_formats: *const Format,
2669    pub depth_attachment_format: Format,
2670    pub stencil_attachment_format: Format,
2671    pub rasterization_samples: SampleCountFlags,
2672}
2673
2674impl Default for CommandBufferInheritanceRenderingInfo {
2675    #[inline]
2676    fn default() -> Self {
2677        Self {
2678            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
2679            next: ptr::null(),
2680            flags: RenderingFlags::default(),
2681            view_mask: u32::default(),
2682            color_attachment_count: u32::default(),
2683            color_attachment_formats: ptr::null(),
2684            depth_attachment_format: Format::default(),
2685            stencil_attachment_format: Format::default(),
2686            rasterization_samples: SampleCountFlags::default(),
2687        }
2688    }
2689}
2690
2691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>
2692#[repr(C)]
2693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2694pub struct CommandBufferInheritanceViewportScissorInfoNV {
2695    pub s_type: StructureType,
2696    pub next: *const c_void,
2697    pub viewport_scissor_2d: Bool32,
2698    pub viewport_depth_count: u32,
2699    pub viewport_depths: *const Viewport,
2700}
2701
2702impl Default for CommandBufferInheritanceViewportScissorInfoNV {
2703    #[inline]
2704    fn default() -> Self {
2705        Self {
2706            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
2707            next: ptr::null(),
2708            viewport_scissor_2d: Bool32::default(),
2709            viewport_depth_count: u32::default(),
2710            viewport_depths: ptr::null(),
2711        }
2712    }
2713}
2714
2715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html>
2716#[repr(C)]
2717#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2718pub struct CommandBufferSubmitInfo {
2719    pub s_type: StructureType,
2720    pub next: *const c_void,
2721    pub command_buffer: CommandBuffer,
2722    pub device_mask: u32,
2723}
2724
2725impl Default for CommandBufferSubmitInfo {
2726    #[inline]
2727    fn default() -> Self {
2728        Self {
2729            s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO,
2730            next: ptr::null(),
2731            command_buffer: CommandBuffer::default(),
2732            device_mask: u32::default(),
2733        }
2734    }
2735}
2736
2737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html>
2738#[repr(C)]
2739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2740pub struct CommandPoolCreateInfo {
2741    pub s_type: StructureType,
2742    pub next: *const c_void,
2743    pub flags: CommandPoolCreateFlags,
2744    pub queue_family_index: u32,
2745}
2746
2747impl Default for CommandPoolCreateInfo {
2748    #[inline]
2749    fn default() -> Self {
2750        Self {
2751            s_type: StructureType::COMMAND_POOL_CREATE_INFO,
2752            next: ptr::null(),
2753            flags: CommandPoolCreateFlags::default(),
2754            queue_family_index: u32::default(),
2755        }
2756    }
2757}
2758
2759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComponentMapping.html>
2760#[repr(C)]
2761#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2762pub struct ComponentMapping {
2763    pub r: ComponentSwizzle,
2764    pub g: ComponentSwizzle,
2765    pub b: ComponentSwizzle,
2766    pub a: ComponentSwizzle,
2767}
2768
2769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html>
2770#[repr(C)]
2771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2772pub struct ComputePipelineCreateInfo {
2773    pub s_type: StructureType,
2774    pub next: *const c_void,
2775    pub flags: PipelineCreateFlags,
2776    pub stage: PipelineShaderStageCreateInfo,
2777    pub layout: PipelineLayout,
2778    pub base_pipeline_handle: Pipeline,
2779    pub base_pipeline_index: i32,
2780}
2781
2782impl Default for ComputePipelineCreateInfo {
2783    #[inline]
2784    fn default() -> Self {
2785        Self {
2786            s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
2787            next: ptr::null(),
2788            flags: PipelineCreateFlags::default(),
2789            stage: PipelineShaderStageCreateInfo::default(),
2790            layout: PipelineLayout::default(),
2791            base_pipeline_handle: Pipeline::default(),
2792            base_pipeline_index: i32::default(),
2793        }
2794    }
2795}
2796
2797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html>
2798#[repr(C)]
2799#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2800pub struct ComputePipelineIndirectBufferInfoNV {
2801    pub s_type: StructureType,
2802    pub next: *const c_void,
2803    pub device_address: DeviceAddress,
2804    pub size: DeviceSize,
2805    pub pipeline_device_address_capture_replay: DeviceAddress,
2806}
2807
2808impl Default for ComputePipelineIndirectBufferInfoNV {
2809    #[inline]
2810    fn default() -> Self {
2811        Self {
2812            s_type: StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV,
2813            next: ptr::null(),
2814            device_address: DeviceAddress::default(),
2815            size: DeviceSize::default(),
2816            pipeline_device_address_capture_replay: DeviceAddress::default(),
2817        }
2818    }
2819}
2820
2821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html>
2822#[repr(C)]
2823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2824pub struct ConditionalRenderingBeginInfoEXT {
2825    pub s_type: StructureType,
2826    pub next: *const c_void,
2827    pub buffer: Buffer,
2828    pub offset: DeviceSize,
2829    pub flags: ConditionalRenderingFlagsEXT,
2830}
2831
2832impl Default for ConditionalRenderingBeginInfoEXT {
2833    #[inline]
2834    fn default() -> Self {
2835        Self {
2836            s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
2837            next: ptr::null(),
2838            buffer: Buffer::default(),
2839            offset: DeviceSize::default(),
2840            flags: ConditionalRenderingFlagsEXT::default(),
2841        }
2842    }
2843}
2844
2845/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersion.html>
2846#[repr(C)]
2847#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2848pub struct ConformanceVersion {
2849    pub major: u8,
2850    pub minor: u8,
2851    pub subminor: u8,
2852    pub patch: u8,
2853}
2854
2855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html>
2856#[repr(C)]
2857#[derive(Copy, Clone, Debug)]
2858pub struct ConvertCooperativeVectorMatrixInfoNV {
2859    pub s_type: StructureType,
2860    pub next: *const c_void,
2861    pub src_size: usize,
2862    pub src_data: DeviceOrHostAddressConstKHR,
2863    pub dst_size: *mut usize,
2864    pub dst_data: DeviceOrHostAddressKHR,
2865    pub src_component_type: ComponentTypeKHR,
2866    pub dst_component_type: ComponentTypeKHR,
2867    pub num_rows: u32,
2868    pub num_columns: u32,
2869    pub src_layout: CooperativeVectorMatrixLayoutNV,
2870    pub src_stride: usize,
2871    pub dst_layout: CooperativeVectorMatrixLayoutNV,
2872    pub dst_stride: usize,
2873}
2874
2875impl Default for ConvertCooperativeVectorMatrixInfoNV {
2876    #[inline]
2877    fn default() -> Self {
2878        Self {
2879            s_type: StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV,
2880            next: ptr::null(),
2881            src_size: usize::default(),
2882            src_data: DeviceOrHostAddressConstKHR::default(),
2883            dst_size: ptr::null_mut(),
2884            dst_data: DeviceOrHostAddressKHR::default(),
2885            src_component_type: ComponentTypeKHR::default(),
2886            dst_component_type: ComponentTypeKHR::default(),
2887            num_rows: u32::default(),
2888            num_columns: u32::default(),
2889            src_layout: CooperativeVectorMatrixLayoutNV::default(),
2890            src_stride: usize::default(),
2891            dst_layout: CooperativeVectorMatrixLayoutNV::default(),
2892            dst_stride: usize::default(),
2893        }
2894    }
2895}
2896
2897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html>
2898#[repr(C)]
2899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2900pub struct CooperativeMatrixFlexibleDimensionsPropertiesNV {
2901    pub s_type: StructureType,
2902    pub next: *mut c_void,
2903    pub m_granularity: u32,
2904    pub n_granularity: u32,
2905    pub k_granularity: u32,
2906    pub a_type: ComponentTypeKHR,
2907    pub b_type: ComponentTypeKHR,
2908    pub c_type: ComponentTypeKHR,
2909    pub result_type: ComponentTypeKHR,
2910    pub saturating_accumulation: Bool32,
2911    pub scope: ScopeKHR,
2912    pub workgroup_invocations: u32,
2913}
2914
2915impl Default for CooperativeMatrixFlexibleDimensionsPropertiesNV {
2916    #[inline]
2917    fn default() -> Self {
2918        Self {
2919            s_type: StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV,
2920            next: ptr::null_mut(),
2921            m_granularity: u32::default(),
2922            n_granularity: u32::default(),
2923            k_granularity: u32::default(),
2924            a_type: ComponentTypeKHR::default(),
2925            b_type: ComponentTypeKHR::default(),
2926            c_type: ComponentTypeKHR::default(),
2927            result_type: ComponentTypeKHR::default(),
2928            saturating_accumulation: Bool32::default(),
2929            scope: ScopeKHR::default(),
2930            workgroup_invocations: u32::default(),
2931        }
2932    }
2933}
2934
2935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html>
2936#[repr(C)]
2937#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2938pub struct CooperativeMatrixPropertiesKHR {
2939    pub s_type: StructureType,
2940    pub next: *mut c_void,
2941    pub m_size: u32,
2942    pub n_size: u32,
2943    pub k_size: u32,
2944    pub a_type: ComponentTypeKHR,
2945    pub b_type: ComponentTypeKHR,
2946    pub c_type: ComponentTypeKHR,
2947    pub result_type: ComponentTypeKHR,
2948    pub saturating_accumulation: Bool32,
2949    pub scope: ScopeKHR,
2950}
2951
2952impl Default for CooperativeMatrixPropertiesKHR {
2953    #[inline]
2954    fn default() -> Self {
2955        Self {
2956            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR,
2957            next: ptr::null_mut(),
2958            m_size: u32::default(),
2959            n_size: u32::default(),
2960            k_size: u32::default(),
2961            a_type: ComponentTypeKHR::default(),
2962            b_type: ComponentTypeKHR::default(),
2963            c_type: ComponentTypeKHR::default(),
2964            result_type: ComponentTypeKHR::default(),
2965            saturating_accumulation: Bool32::default(),
2966            scope: ScopeKHR::default(),
2967        }
2968    }
2969}
2970
2971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html>
2972#[repr(C)]
2973#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2974pub struct CooperativeMatrixPropertiesNV {
2975    pub s_type: StructureType,
2976    pub next: *mut c_void,
2977    pub m_size: u32,
2978    pub n_size: u32,
2979    pub k_size: u32,
2980    pub a_type: ComponentTypeNV,
2981    pub b_type: ComponentTypeNV,
2982    pub c_type: ComponentTypeNV,
2983    pub d_type: ComponentTypeNV,
2984    pub scope: ScopeNV,
2985}
2986
2987impl Default for CooperativeMatrixPropertiesNV {
2988    #[inline]
2989    fn default() -> Self {
2990        Self {
2991            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
2992            next: ptr::null_mut(),
2993            m_size: u32::default(),
2994            n_size: u32::default(),
2995            k_size: u32::default(),
2996            a_type: ComponentTypeNV::default(),
2997            b_type: ComponentTypeNV::default(),
2998            c_type: ComponentTypeNV::default(),
2999            d_type: ComponentTypeNV::default(),
3000            scope: ScopeNV::default(),
3001        }
3002    }
3003}
3004
3005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html>
3006#[repr(C)]
3007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3008pub struct CooperativeVectorPropertiesNV {
3009    pub s_type: StructureType,
3010    pub next: *mut c_void,
3011    pub input_type: ComponentTypeKHR,
3012    pub input_interpretation: ComponentTypeKHR,
3013    pub matrix_interpretation: ComponentTypeKHR,
3014    pub bias_interpretation: ComponentTypeKHR,
3015    pub result_type: ComponentTypeKHR,
3016    pub transpose: Bool32,
3017}
3018
3019impl Default for CooperativeVectorPropertiesNV {
3020    #[inline]
3021    fn default() -> Self {
3022        Self {
3023            s_type: StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV,
3024            next: ptr::null_mut(),
3025            input_type: ComponentTypeKHR::default(),
3026            input_interpretation: ComponentTypeKHR::default(),
3027            matrix_interpretation: ComponentTypeKHR::default(),
3028            bias_interpretation: ComponentTypeKHR::default(),
3029            result_type: ComponentTypeKHR::default(),
3030            transpose: Bool32::default(),
3031        }
3032    }
3033}
3034
3035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html>
3036#[repr(C)]
3037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3038pub struct CopyAccelerationStructureInfoKHR {
3039    pub s_type: StructureType,
3040    pub next: *const c_void,
3041    pub src: AccelerationStructureKHR,
3042    pub dst: AccelerationStructureKHR,
3043    pub mode: CopyAccelerationStructureModeKHR,
3044}
3045
3046impl Default for CopyAccelerationStructureInfoKHR {
3047    #[inline]
3048    fn default() -> Self {
3049        Self {
3050            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
3051            next: ptr::null(),
3052            src: AccelerationStructureKHR::default(),
3053            dst: AccelerationStructureKHR::default(),
3054            mode: CopyAccelerationStructureModeKHR::default(),
3055        }
3056    }
3057}
3058
3059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>
3060#[repr(C)]
3061#[derive(Copy, Clone, Debug)]
3062pub struct CopyAccelerationStructureToMemoryInfoKHR {
3063    pub s_type: StructureType,
3064    pub next: *const c_void,
3065    pub src: AccelerationStructureKHR,
3066    pub dst: DeviceOrHostAddressKHR,
3067    pub mode: CopyAccelerationStructureModeKHR,
3068}
3069
3070impl Default for CopyAccelerationStructureToMemoryInfoKHR {
3071    #[inline]
3072    fn default() -> Self {
3073        Self {
3074            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
3075            next: ptr::null(),
3076            src: AccelerationStructureKHR::default(),
3077            dst: DeviceOrHostAddressKHR::default(),
3078            mode: CopyAccelerationStructureModeKHR::default(),
3079        }
3080    }
3081}
3082
3083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html>
3084#[repr(C)]
3085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3086pub struct CopyBufferInfo2 {
3087    pub s_type: StructureType,
3088    pub next: *const c_void,
3089    pub src_buffer: Buffer,
3090    pub dst_buffer: Buffer,
3091    pub region_count: u32,
3092    pub regions: *const BufferCopy2,
3093}
3094
3095impl Default for CopyBufferInfo2 {
3096    #[inline]
3097    fn default() -> Self {
3098        Self {
3099            s_type: StructureType::COPY_BUFFER_INFO_2,
3100            next: ptr::null(),
3101            src_buffer: Buffer::default(),
3102            dst_buffer: Buffer::default(),
3103            region_count: u32::default(),
3104            regions: ptr::null(),
3105        }
3106    }
3107}
3108
3109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html>
3110#[repr(C)]
3111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3112pub struct CopyBufferToImageInfo2 {
3113    pub s_type: StructureType,
3114    pub next: *const c_void,
3115    pub src_buffer: Buffer,
3116    pub dst_image: Image,
3117    pub dst_image_layout: ImageLayout,
3118    pub region_count: u32,
3119    pub regions: *const BufferImageCopy2,
3120}
3121
3122impl Default for CopyBufferToImageInfo2 {
3123    #[inline]
3124    fn default() -> Self {
3125        Self {
3126            s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2,
3127            next: ptr::null(),
3128            src_buffer: Buffer::default(),
3129            dst_image: Image::default(),
3130            dst_image_layout: ImageLayout::default(),
3131            region_count: u32::default(),
3132            regions: ptr::null(),
3133        }
3134    }
3135}
3136
3137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html>
3138#[repr(C)]
3139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3140pub struct CopyCommandTransformInfoQCOM {
3141    pub s_type: StructureType,
3142    pub next: *const c_void,
3143    pub transform: SurfaceTransformFlagsKHR,
3144}
3145
3146impl Default for CopyCommandTransformInfoQCOM {
3147    #[inline]
3148    fn default() -> Self {
3149        Self {
3150            s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
3151            next: ptr::null(),
3152            transform: SurfaceTransformFlagsKHR::default(),
3153        }
3154    }
3155}
3156
3157/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html>
3158#[repr(C)]
3159#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3160pub struct CopyDescriptorSet {
3161    pub s_type: StructureType,
3162    pub next: *const c_void,
3163    pub src_set: DescriptorSet,
3164    pub src_binding: u32,
3165    pub src_array_element: u32,
3166    pub dst_set: DescriptorSet,
3167    pub dst_binding: u32,
3168    pub dst_array_element: u32,
3169    pub descriptor_count: u32,
3170}
3171
3172impl Default for CopyDescriptorSet {
3173    #[inline]
3174    fn default() -> Self {
3175        Self {
3176            s_type: StructureType::COPY_DESCRIPTOR_SET,
3177            next: ptr::null(),
3178            src_set: DescriptorSet::default(),
3179            src_binding: u32::default(),
3180            src_array_element: u32::default(),
3181            dst_set: DescriptorSet::default(),
3182            dst_binding: u32::default(),
3183            dst_array_element: u32::default(),
3184            descriptor_count: u32::default(),
3185        }
3186    }
3187}
3188
3189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2.html>
3190#[repr(C)]
3191#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3192pub struct CopyImageInfo2 {
3193    pub s_type: StructureType,
3194    pub next: *const c_void,
3195    pub src_image: Image,
3196    pub src_image_layout: ImageLayout,
3197    pub dst_image: Image,
3198    pub dst_image_layout: ImageLayout,
3199    pub region_count: u32,
3200    pub regions: *const ImageCopy2,
3201}
3202
3203impl Default for CopyImageInfo2 {
3204    #[inline]
3205    fn default() -> Self {
3206        Self {
3207            s_type: StructureType::COPY_IMAGE_INFO_2,
3208            next: ptr::null(),
3209            src_image: Image::default(),
3210            src_image_layout: ImageLayout::default(),
3211            dst_image: Image::default(),
3212            dst_image_layout: ImageLayout::default(),
3213            region_count: u32::default(),
3214            regions: ptr::null(),
3215        }
3216    }
3217}
3218
3219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html>
3220#[repr(C)]
3221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3222pub struct CopyImageToBufferInfo2 {
3223    pub s_type: StructureType,
3224    pub next: *const c_void,
3225    pub src_image: Image,
3226    pub src_image_layout: ImageLayout,
3227    pub dst_buffer: Buffer,
3228    pub region_count: u32,
3229    pub regions: *const BufferImageCopy2,
3230}
3231
3232impl Default for CopyImageToBufferInfo2 {
3233    #[inline]
3234    fn default() -> Self {
3235        Self {
3236            s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2,
3237            next: ptr::null(),
3238            src_image: Image::default(),
3239            src_image_layout: ImageLayout::default(),
3240            dst_buffer: Buffer::default(),
3241            region_count: u32::default(),
3242            regions: ptr::null(),
3243        }
3244    }
3245}
3246
3247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html>
3248#[repr(C)]
3249#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3250pub struct CopyImageToImageInfo {
3251    pub s_type: StructureType,
3252    pub next: *const c_void,
3253    pub flags: HostImageCopyFlags,
3254    pub src_image: Image,
3255    pub src_image_layout: ImageLayout,
3256    pub dst_image: Image,
3257    pub dst_image_layout: ImageLayout,
3258    pub region_count: u32,
3259    pub regions: *const ImageCopy2,
3260}
3261
3262impl Default for CopyImageToImageInfo {
3263    #[inline]
3264    fn default() -> Self {
3265        Self {
3266            s_type: StructureType::COPY_IMAGE_TO_IMAGE_INFO,
3267            next: ptr::null(),
3268            flags: HostImageCopyFlags::default(),
3269            src_image: Image::default(),
3270            src_image_layout: ImageLayout::default(),
3271            dst_image: Image::default(),
3272            dst_image_layout: ImageLayout::default(),
3273            region_count: u32::default(),
3274            regions: ptr::null(),
3275        }
3276    }
3277}
3278
3279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html>
3280#[repr(C)]
3281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3282pub struct CopyImageToMemoryInfo {
3283    pub s_type: StructureType,
3284    pub next: *const c_void,
3285    pub flags: HostImageCopyFlags,
3286    pub src_image: Image,
3287    pub src_image_layout: ImageLayout,
3288    pub region_count: u32,
3289    pub regions: *const ImageToMemoryCopy,
3290}
3291
3292impl Default for CopyImageToMemoryInfo {
3293    #[inline]
3294    fn default() -> Self {
3295        Self {
3296            s_type: StructureType::COPY_IMAGE_TO_MEMORY_INFO,
3297            next: ptr::null(),
3298            flags: HostImageCopyFlags::default(),
3299            src_image: Image::default(),
3300            src_image_layout: ImageLayout::default(),
3301            region_count: u32::default(),
3302            regions: ptr::null(),
3303        }
3304    }
3305}
3306
3307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandNV.html>
3308#[repr(C)]
3309#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3310pub struct CopyMemoryIndirectCommandNV {
3311    pub src_address: DeviceAddress,
3312    pub dst_address: DeviceAddress,
3313    pub size: DeviceSize,
3314}
3315
3316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>
3317#[repr(C)]
3318#[derive(Copy, Clone, Debug)]
3319pub struct CopyMemoryToAccelerationStructureInfoKHR {
3320    pub s_type: StructureType,
3321    pub next: *const c_void,
3322    pub src: DeviceOrHostAddressConstKHR,
3323    pub dst: AccelerationStructureKHR,
3324    pub mode: CopyAccelerationStructureModeKHR,
3325}
3326
3327impl Default for CopyMemoryToAccelerationStructureInfoKHR {
3328    #[inline]
3329    fn default() -> Self {
3330        Self {
3331            s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
3332            next: ptr::null(),
3333            src: DeviceOrHostAddressConstKHR::default(),
3334            dst: AccelerationStructureKHR::default(),
3335            mode: CopyAccelerationStructureModeKHR::default(),
3336        }
3337    }
3338}
3339
3340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandNV.html>
3341#[repr(C)]
3342#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3343pub struct CopyMemoryToImageIndirectCommandNV {
3344    pub src_address: DeviceAddress,
3345    pub buffer_row_length: u32,
3346    pub buffer_image_height: u32,
3347    pub image_subresource: ImageSubresourceLayers,
3348    pub image_offset: Offset3D,
3349    pub image_extent: Extent3D,
3350}
3351
3352/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html>
3353#[repr(C)]
3354#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3355pub struct CopyMemoryToImageInfo {
3356    pub s_type: StructureType,
3357    pub next: *const c_void,
3358    pub flags: HostImageCopyFlags,
3359    pub dst_image: Image,
3360    pub dst_image_layout: ImageLayout,
3361    pub region_count: u32,
3362    pub regions: *const MemoryToImageCopy,
3363}
3364
3365impl Default for CopyMemoryToImageInfo {
3366    #[inline]
3367    fn default() -> Self {
3368        Self {
3369            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INFO,
3370            next: ptr::null(),
3371            flags: HostImageCopyFlags::default(),
3372            dst_image: Image::default(),
3373            dst_image_layout: ImageLayout::default(),
3374            region_count: u32::default(),
3375            regions: ptr::null(),
3376        }
3377    }
3378}
3379
3380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html>
3381#[repr(C)]
3382#[derive(Copy, Clone, Debug)]
3383pub struct CopyMemoryToMicromapInfoEXT {
3384    pub s_type: StructureType,
3385    pub next: *const c_void,
3386    pub src: DeviceOrHostAddressConstKHR,
3387    pub dst: MicromapEXT,
3388    pub mode: CopyMicromapModeEXT,
3389}
3390
3391impl Default for CopyMemoryToMicromapInfoEXT {
3392    #[inline]
3393    fn default() -> Self {
3394        Self {
3395            s_type: StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT,
3396            next: ptr::null(),
3397            src: DeviceOrHostAddressConstKHR::default(),
3398            dst: MicromapEXT::default(),
3399            mode: CopyMicromapModeEXT::default(),
3400        }
3401    }
3402}
3403
3404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html>
3405#[repr(C)]
3406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3407pub struct CopyMicromapInfoEXT {
3408    pub s_type: StructureType,
3409    pub next: *const c_void,
3410    pub src: MicromapEXT,
3411    pub dst: MicromapEXT,
3412    pub mode: CopyMicromapModeEXT,
3413}
3414
3415impl Default for CopyMicromapInfoEXT {
3416    #[inline]
3417    fn default() -> Self {
3418        Self {
3419            s_type: StructureType::COPY_MICROMAP_INFO_EXT,
3420            next: ptr::null(),
3421            src: MicromapEXT::default(),
3422            dst: MicromapEXT::default(),
3423            mode: CopyMicromapModeEXT::default(),
3424        }
3425    }
3426}
3427
3428/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html>
3429#[repr(C)]
3430#[derive(Copy, Clone, Debug)]
3431pub struct CopyMicromapToMemoryInfoEXT {
3432    pub s_type: StructureType,
3433    pub next: *const c_void,
3434    pub src: MicromapEXT,
3435    pub dst: DeviceOrHostAddressKHR,
3436    pub mode: CopyMicromapModeEXT,
3437}
3438
3439impl Default for CopyMicromapToMemoryInfoEXT {
3440    #[inline]
3441    fn default() -> Self {
3442        Self {
3443            s_type: StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT,
3444            next: ptr::null(),
3445            src: MicromapEXT::default(),
3446            dst: DeviceOrHostAddressKHR::default(),
3447            mode: CopyMicromapModeEXT::default(),
3448        }
3449    }
3450}
3451
3452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html>
3453#[repr(C)]
3454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3455pub struct CuFunctionCreateInfoNVX {
3456    pub s_type: StructureType,
3457    pub next: *const c_void,
3458    pub module: CuModuleNVX,
3459    pub name: *const c_char,
3460}
3461
3462impl Default for CuFunctionCreateInfoNVX {
3463    #[inline]
3464    fn default() -> Self {
3465        Self {
3466            s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
3467            next: ptr::null(),
3468            module: CuModuleNVX::default(),
3469            name: ptr::null(),
3470        }
3471    }
3472}
3473
3474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html>
3475#[repr(C)]
3476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3477pub struct CuLaunchInfoNVX {
3478    pub s_type: StructureType,
3479    pub next: *const c_void,
3480    pub function: CuFunctionNVX,
3481    pub grid_dim_x: u32,
3482    pub grid_dim_y: u32,
3483    pub grid_dim_z: u32,
3484    pub block_dim_x: u32,
3485    pub block_dim_y: u32,
3486    pub block_dim_z: u32,
3487    pub shared_mem_bytes: u32,
3488    pub param_count: usize,
3489    pub params: *const c_void,
3490    pub extra_count: usize,
3491    pub extras: *const c_void,
3492}
3493
3494impl Default for CuLaunchInfoNVX {
3495    #[inline]
3496    fn default() -> Self {
3497        Self {
3498            s_type: StructureType::CU_LAUNCH_INFO_NVX,
3499            next: ptr::null(),
3500            function: CuFunctionNVX::default(),
3501            grid_dim_x: u32::default(),
3502            grid_dim_y: u32::default(),
3503            grid_dim_z: u32::default(),
3504            block_dim_x: u32::default(),
3505            block_dim_y: u32::default(),
3506            block_dim_z: u32::default(),
3507            shared_mem_bytes: u32::default(),
3508            param_count: usize::default(),
3509            params: ptr::null(),
3510            extra_count: usize::default(),
3511            extras: ptr::null(),
3512        }
3513    }
3514}
3515
3516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html>
3517#[repr(C)]
3518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3519pub struct CuModuleCreateInfoNVX {
3520    pub s_type: StructureType,
3521    pub next: *const c_void,
3522    pub data_size: usize,
3523    pub data: *const c_void,
3524}
3525
3526impl Default for CuModuleCreateInfoNVX {
3527    #[inline]
3528    fn default() -> Self {
3529        Self {
3530            s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
3531            next: ptr::null(),
3532            data_size: usize::default(),
3533            data: ptr::null(),
3534        }
3535    }
3536}
3537
3538/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html>
3539#[repr(C)]
3540#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3541pub struct CuModuleTexturingModeCreateInfoNVX {
3542    pub s_type: StructureType,
3543    pub next: *const c_void,
3544    pub use64bit_texturing: Bool32,
3545}
3546
3547impl Default for CuModuleTexturingModeCreateInfoNVX {
3548    #[inline]
3549    fn default() -> Self {
3550        Self {
3551            s_type: StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX,
3552            next: ptr::null(),
3553            use64bit_texturing: Bool32::default(),
3554        }
3555    }
3556}
3557
3558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html>
3559#[repr(C)]
3560#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3561pub struct CudaFunctionCreateInfoNV {
3562    pub s_type: StructureType,
3563    pub next: *const c_void,
3564    pub module: CudaModuleNV,
3565    pub name: *const c_char,
3566}
3567
3568impl Default for CudaFunctionCreateInfoNV {
3569    #[inline]
3570    fn default() -> Self {
3571        Self {
3572            s_type: StructureType::CUDA_FUNCTION_CREATE_INFO_NV,
3573            next: ptr::null(),
3574            module: CudaModuleNV::default(),
3575            name: ptr::null(),
3576        }
3577    }
3578}
3579
3580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html>
3581#[repr(C)]
3582#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3583pub struct CudaLaunchInfoNV {
3584    pub s_type: StructureType,
3585    pub next: *const c_void,
3586    pub function: CudaFunctionNV,
3587    pub grid_dim_x: u32,
3588    pub grid_dim_y: u32,
3589    pub grid_dim_z: u32,
3590    pub block_dim_x: u32,
3591    pub block_dim_y: u32,
3592    pub block_dim_z: u32,
3593    pub shared_mem_bytes: u32,
3594    pub param_count: usize,
3595    pub params: *const c_void,
3596    pub extra_count: usize,
3597    pub extras: *const c_void,
3598}
3599
3600impl Default for CudaLaunchInfoNV {
3601    #[inline]
3602    fn default() -> Self {
3603        Self {
3604            s_type: StructureType::CUDA_LAUNCH_INFO_NV,
3605            next: ptr::null(),
3606            function: CudaFunctionNV::default(),
3607            grid_dim_x: u32::default(),
3608            grid_dim_y: u32::default(),
3609            grid_dim_z: u32::default(),
3610            block_dim_x: u32::default(),
3611            block_dim_y: u32::default(),
3612            block_dim_z: u32::default(),
3613            shared_mem_bytes: u32::default(),
3614            param_count: usize::default(),
3615            params: ptr::null(),
3616            extra_count: usize::default(),
3617            extras: ptr::null(),
3618        }
3619    }
3620}
3621
3622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html>
3623#[repr(C)]
3624#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3625pub struct CudaModuleCreateInfoNV {
3626    pub s_type: StructureType,
3627    pub next: *const c_void,
3628    pub data_size: usize,
3629    pub data: *const c_void,
3630}
3631
3632impl Default for CudaModuleCreateInfoNV {
3633    #[inline]
3634    fn default() -> Self {
3635        Self {
3636            s_type: StructureType::CUDA_MODULE_CREATE_INFO_NV,
3637            next: ptr::null(),
3638            data_size: usize::default(),
3639            data: ptr::null(),
3640        }
3641    }
3642}
3643
3644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html>
3645#[repr(C)]
3646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3647pub struct D3D12FenceSubmitInfoKHR {
3648    pub s_type: StructureType,
3649    pub next: *const c_void,
3650    pub wait_semaphore_values_count: u32,
3651    pub wait_semaphore_values: *const u64,
3652    pub signal_semaphore_values_count: u32,
3653    pub signal_semaphore_values: *const u64,
3654}
3655
3656impl Default for D3D12FenceSubmitInfoKHR {
3657    #[inline]
3658    fn default() -> Self {
3659        Self {
3660            s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
3661            next: ptr::null(),
3662            wait_semaphore_values_count: u32::default(),
3663            wait_semaphore_values: ptr::null(),
3664            signal_semaphore_values_count: u32::default(),
3665            signal_semaphore_values: ptr::null(),
3666        }
3667    }
3668}
3669
3670/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html>
3671#[repr(C)]
3672#[derive(Copy, Clone, Debug, PartialEq)]
3673pub struct DebugMarkerMarkerInfoEXT {
3674    pub s_type: StructureType,
3675    pub next: *const c_void,
3676    pub marker_name: *const c_char,
3677    pub color: [f32; 4],
3678}
3679
3680impl Default for DebugMarkerMarkerInfoEXT {
3681    #[inline]
3682    fn default() -> Self {
3683        Self {
3684            s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
3685            next: ptr::null(),
3686            marker_name: ptr::null(),
3687            color: [f32::default(); 4],
3688        }
3689    }
3690}
3691
3692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html>
3693#[repr(C)]
3694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3695pub struct DebugMarkerObjectNameInfoEXT {
3696    pub s_type: StructureType,
3697    pub next: *const c_void,
3698    pub object_type: DebugReportObjectTypeEXT,
3699    pub object: u64,
3700    pub object_name: *const c_char,
3701}
3702
3703impl Default for DebugMarkerObjectNameInfoEXT {
3704    #[inline]
3705    fn default() -> Self {
3706        Self {
3707            s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
3708            next: ptr::null(),
3709            object_type: DebugReportObjectTypeEXT::default(),
3710            object: u64::default(),
3711            object_name: ptr::null(),
3712        }
3713    }
3714}
3715
3716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html>
3717#[repr(C)]
3718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3719pub struct DebugMarkerObjectTagInfoEXT {
3720    pub s_type: StructureType,
3721    pub next: *const c_void,
3722    pub object_type: DebugReportObjectTypeEXT,
3723    pub object: u64,
3724    pub tag_name: u64,
3725    pub tag_size: usize,
3726    pub tag: *const c_void,
3727}
3728
3729impl Default for DebugMarkerObjectTagInfoEXT {
3730    #[inline]
3731    fn default() -> Self {
3732        Self {
3733            s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
3734            next: ptr::null(),
3735            object_type: DebugReportObjectTypeEXT::default(),
3736            object: u64::default(),
3737            tag_name: u64::default(),
3738            tag_size: usize::default(),
3739            tag: ptr::null(),
3740        }
3741    }
3742}
3743
3744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html>
3745#[repr(C)]
3746#[derive(Copy, Clone)]
3747pub struct DebugReportCallbackCreateInfoEXT {
3748    pub s_type: StructureType,
3749    pub next: *const c_void,
3750    pub flags: DebugReportFlagsEXT,
3751    pub callback: PFN_vkDebugReportCallbackEXT,
3752    pub user_data: *mut c_void,
3753}
3754
3755impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
3756    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3757        f.debug_struct("DebugReportCallbackCreateInfoEXT")
3758            .field("s_type", &self.s_type)
3759            .field("next", &self.next)
3760            .field("flags", &self.flags)
3761            .field("callback", &(self.callback.map(|f| f as *const u8)))
3762            .field("user_data", &self.user_data)
3763            .finish()
3764    }
3765}
3766
3767impl Default for DebugReportCallbackCreateInfoEXT {
3768    #[inline]
3769    fn default() -> Self {
3770        Self {
3771            s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
3772            next: ptr::null(),
3773            flags: DebugReportFlagsEXT::default(),
3774            callback: PFN_vkDebugReportCallbackEXT::default(),
3775            user_data: ptr::null_mut(),
3776        }
3777    }
3778}
3779
3780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html>
3781#[repr(C)]
3782#[derive(Copy, Clone, Debug, PartialEq)]
3783pub struct DebugUtilsLabelEXT {
3784    pub s_type: StructureType,
3785    pub next: *const c_void,
3786    pub label_name: *const c_char,
3787    pub color: [f32; 4],
3788}
3789
3790impl Default for DebugUtilsLabelEXT {
3791    #[inline]
3792    fn default() -> Self {
3793        Self {
3794            s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
3795            next: ptr::null(),
3796            label_name: ptr::null(),
3797            color: [f32::default(); 4],
3798        }
3799    }
3800}
3801
3802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>
3803#[repr(C)]
3804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3805pub struct DebugUtilsMessengerCallbackDataEXT {
3806    pub s_type: StructureType,
3807    pub next: *const c_void,
3808    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
3809    pub message_id_name: *const c_char,
3810    pub message_id_number: i32,
3811    pub message: *const c_char,
3812    pub queue_label_count: u32,
3813    pub queue_labels: *const DebugUtilsLabelEXT,
3814    pub cmd_buf_label_count: u32,
3815    pub cmd_buf_labels: *const DebugUtilsLabelEXT,
3816    pub object_count: u32,
3817    pub objects: *const DebugUtilsObjectNameInfoEXT,
3818}
3819
3820impl Default for DebugUtilsMessengerCallbackDataEXT {
3821    #[inline]
3822    fn default() -> Self {
3823        Self {
3824            s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
3825            next: ptr::null(),
3826            flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
3827            message_id_name: ptr::null(),
3828            message_id_number: i32::default(),
3829            message: ptr::null(),
3830            queue_label_count: u32::default(),
3831            queue_labels: ptr::null(),
3832            cmd_buf_label_count: u32::default(),
3833            cmd_buf_labels: ptr::null(),
3834            object_count: u32::default(),
3835            objects: ptr::null(),
3836        }
3837    }
3838}
3839
3840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>
3841#[repr(C)]
3842#[derive(Copy, Clone)]
3843pub struct DebugUtilsMessengerCreateInfoEXT {
3844    pub s_type: StructureType,
3845    pub next: *const c_void,
3846    pub flags: DebugUtilsMessengerCreateFlagsEXT,
3847    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
3848    pub message_type: DebugUtilsMessageTypeFlagsEXT,
3849    pub user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
3850    pub user_data: *mut c_void,
3851}
3852
3853impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
3854    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3855        f.debug_struct("DebugUtilsMessengerCreateInfoEXT")
3856            .field("s_type", &self.s_type)
3857            .field("next", &self.next)
3858            .field("flags", &self.flags)
3859            .field("message_severity", &self.message_severity)
3860            .field("message_type", &self.message_type)
3861            .field(
3862                "user_callback",
3863                &(self.user_callback.map(|f| f as *const u8)),
3864            )
3865            .field("user_data", &self.user_data)
3866            .finish()
3867    }
3868}
3869
3870impl Default for DebugUtilsMessengerCreateInfoEXT {
3871    #[inline]
3872    fn default() -> Self {
3873        Self {
3874            s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
3875            next: ptr::null(),
3876            flags: DebugUtilsMessengerCreateFlagsEXT::default(),
3877            message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
3878            message_type: DebugUtilsMessageTypeFlagsEXT::default(),
3879            user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
3880            user_data: ptr::null_mut(),
3881        }
3882    }
3883}
3884
3885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html>
3886#[repr(C)]
3887#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3888pub struct DebugUtilsObjectNameInfoEXT {
3889    pub s_type: StructureType,
3890    pub next: *const c_void,
3891    pub object_type: ObjectType,
3892    pub object_handle: u64,
3893    pub object_name: *const c_char,
3894}
3895
3896impl Default for DebugUtilsObjectNameInfoEXT {
3897    #[inline]
3898    fn default() -> Self {
3899        Self {
3900            s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
3901            next: ptr::null(),
3902            object_type: ObjectType::default(),
3903            object_handle: u64::default(),
3904            object_name: ptr::null(),
3905        }
3906    }
3907}
3908
3909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html>
3910#[repr(C)]
3911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3912pub struct DebugUtilsObjectTagInfoEXT {
3913    pub s_type: StructureType,
3914    pub next: *const c_void,
3915    pub object_type: ObjectType,
3916    pub object_handle: u64,
3917    pub tag_name: u64,
3918    pub tag_size: usize,
3919    pub tag: *const c_void,
3920}
3921
3922impl Default for DebugUtilsObjectTagInfoEXT {
3923    #[inline]
3924    fn default() -> Self {
3925        Self {
3926            s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
3927            next: ptr::null(),
3928            object_type: ObjectType::default(),
3929            object_handle: u64::default(),
3930            tag_name: u64::default(),
3931            tag_size: usize::default(),
3932            tag: ptr::null(),
3933        }
3934    }
3935}
3936
3937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html>
3938#[repr(C)]
3939#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3940pub struct DecompressMemoryRegionNV {
3941    pub src_address: DeviceAddress,
3942    pub dst_address: DeviceAddress,
3943    pub compressed_size: DeviceSize,
3944    pub decompressed_size: DeviceSize,
3945    pub decompression_method: MemoryDecompressionMethodFlagsNV,
3946}
3947
3948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>
3949#[repr(C)]
3950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3951pub struct DedicatedAllocationBufferCreateInfoNV {
3952    pub s_type: StructureType,
3953    pub next: *const c_void,
3954    pub dedicated_allocation: Bool32,
3955}
3956
3957impl Default for DedicatedAllocationBufferCreateInfoNV {
3958    #[inline]
3959    fn default() -> Self {
3960        Self {
3961            s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
3962            next: ptr::null(),
3963            dedicated_allocation: Bool32::default(),
3964        }
3965    }
3966}
3967
3968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html>
3969#[repr(C)]
3970#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3971pub struct DedicatedAllocationImageCreateInfoNV {
3972    pub s_type: StructureType,
3973    pub next: *const c_void,
3974    pub dedicated_allocation: Bool32,
3975}
3976
3977impl Default for DedicatedAllocationImageCreateInfoNV {
3978    #[inline]
3979    fn default() -> Self {
3980        Self {
3981            s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
3982            next: ptr::null(),
3983            dedicated_allocation: Bool32::default(),
3984        }
3985    }
3986}
3987
3988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>
3989#[repr(C)]
3990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3991pub struct DedicatedAllocationMemoryAllocateInfoNV {
3992    pub s_type: StructureType,
3993    pub next: *const c_void,
3994    pub image: Image,
3995    pub buffer: Buffer,
3996}
3997
3998impl Default for DedicatedAllocationMemoryAllocateInfoNV {
3999    #[inline]
4000    fn default() -> Self {
4001        Self {
4002            s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
4003            next: ptr::null(),
4004            image: Image::default(),
4005            buffer: Buffer::default(),
4006        }
4007    }
4008}
4009
4010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfo.html>
4011#[repr(C)]
4012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4013pub struct DependencyInfo {
4014    pub s_type: StructureType,
4015    pub next: *const c_void,
4016    pub dependency_flags: DependencyFlags,
4017    pub memory_barrier_count: u32,
4018    pub memory_barriers: *const MemoryBarrier2,
4019    pub buffer_memory_barrier_count: u32,
4020    pub buffer_memory_barriers: *const BufferMemoryBarrier2,
4021    pub image_memory_barrier_count: u32,
4022    pub image_memory_barriers: *const ImageMemoryBarrier2,
4023}
4024
4025impl Default for DependencyInfo {
4026    #[inline]
4027    fn default() -> Self {
4028        Self {
4029            s_type: StructureType::DEPENDENCY_INFO,
4030            next: ptr::null(),
4031            dependency_flags: DependencyFlags::default(),
4032            memory_barrier_count: u32::default(),
4033            memory_barriers: ptr::null(),
4034            buffer_memory_barrier_count: u32::default(),
4035            buffer_memory_barriers: ptr::null(),
4036            image_memory_barrier_count: u32::default(),
4037            image_memory_barriers: ptr::null(),
4038        }
4039    }
4040}
4041
4042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html>
4043#[repr(C)]
4044#[derive(Copy, Clone, Debug, PartialEq)]
4045pub struct DepthBiasInfoEXT {
4046    pub s_type: StructureType,
4047    pub next: *const c_void,
4048    pub depth_bias_constant_factor: f32,
4049    pub depth_bias_clamp: f32,
4050    pub depth_bias_slope_factor: f32,
4051}
4052
4053impl Default for DepthBiasInfoEXT {
4054    #[inline]
4055    fn default() -> Self {
4056        Self {
4057            s_type: StructureType::DEPTH_BIAS_INFO_EXT,
4058            next: ptr::null(),
4059            depth_bias_constant_factor: f32::default(),
4060            depth_bias_clamp: f32::default(),
4061            depth_bias_slope_factor: f32::default(),
4062        }
4063    }
4064}
4065
4066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html>
4067#[repr(C)]
4068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4069pub struct DepthBiasRepresentationInfoEXT {
4070    pub s_type: StructureType,
4071    pub next: *const c_void,
4072    pub depth_bias_representation: DepthBiasRepresentationEXT,
4073    pub depth_bias_exact: Bool32,
4074}
4075
4076impl Default for DepthBiasRepresentationInfoEXT {
4077    #[inline]
4078    fn default() -> Self {
4079        Self {
4080            s_type: StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT,
4081            next: ptr::null(),
4082            depth_bias_representation: DepthBiasRepresentationEXT::default(),
4083            depth_bias_exact: Bool32::default(),
4084        }
4085    }
4086}
4087
4088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html>
4089#[repr(C)]
4090#[derive(Copy, Clone, Default, Debug, PartialEq)]
4091pub struct DepthClampRangeEXT {
4092    pub min_depth_clamp: f32,
4093    pub max_depth_clamp: f32,
4094}
4095
4096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html>
4097#[repr(C)]
4098#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4099pub struct DescriptorAddressInfoEXT {
4100    pub s_type: StructureType,
4101    pub next: *mut c_void,
4102    pub address: DeviceAddress,
4103    pub range: DeviceSize,
4104    pub format: Format,
4105}
4106
4107impl Default for DescriptorAddressInfoEXT {
4108    #[inline]
4109    fn default() -> Self {
4110        Self {
4111            s_type: StructureType::DESCRIPTOR_ADDRESS_INFO_EXT,
4112            next: ptr::null_mut(),
4113            address: DeviceAddress::default(),
4114            range: DeviceSize::default(),
4115            format: Format::default(),
4116        }
4117    }
4118}
4119
4120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html>
4121#[repr(C)]
4122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4123pub struct DescriptorBufferBindingInfoEXT {
4124    pub s_type: StructureType,
4125    pub next: *const c_void,
4126    pub address: DeviceAddress,
4127    pub usage: BufferUsageFlags,
4128}
4129
4130impl Default for DescriptorBufferBindingInfoEXT {
4131    #[inline]
4132    fn default() -> Self {
4133        Self {
4134            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT,
4135            next: ptr::null(),
4136            address: DeviceAddress::default(),
4137            usage: BufferUsageFlags::default(),
4138        }
4139    }
4140}
4141
4142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html>
4143#[repr(C)]
4144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4145pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXT {
4146    pub s_type: StructureType,
4147    pub next: *const c_void,
4148    pub buffer: Buffer,
4149}
4150
4151impl Default for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
4152    #[inline]
4153    fn default() -> Self {
4154        Self {
4155            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT,
4156            next: ptr::null(),
4157            buffer: Buffer::default(),
4158        }
4159    }
4160}
4161
4162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html>
4163#[repr(C)]
4164#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4165pub struct DescriptorBufferInfo {
4166    pub buffer: Buffer,
4167    pub offset: DeviceSize,
4168    pub range: DeviceSize,
4169}
4170
4171/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html>
4172#[repr(C)]
4173#[derive(Copy, Clone, Debug)]
4174pub struct DescriptorGetInfoEXT {
4175    pub s_type: StructureType,
4176    pub next: *const c_void,
4177    pub type_: DescriptorType,
4178    pub data: DescriptorDataEXT,
4179}
4180
4181impl Default for DescriptorGetInfoEXT {
4182    #[inline]
4183    fn default() -> Self {
4184        Self {
4185            s_type: StructureType::DESCRIPTOR_GET_INFO_EXT,
4186            next: ptr::null(),
4187            type_: DescriptorType::default(),
4188            data: DescriptorDataEXT::default(),
4189        }
4190    }
4191}
4192
4193/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html>
4194#[repr(C)]
4195#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4196pub struct DescriptorImageInfo {
4197    pub sampler: Sampler,
4198    pub image_view: ImageView,
4199    pub image_layout: ImageLayout,
4200}
4201
4202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html>
4203#[repr(C)]
4204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4205pub struct DescriptorPoolCreateInfo {
4206    pub s_type: StructureType,
4207    pub next: *const c_void,
4208    pub flags: DescriptorPoolCreateFlags,
4209    pub max_sets: u32,
4210    pub pool_size_count: u32,
4211    pub pool_sizes: *const DescriptorPoolSize,
4212}
4213
4214impl Default for DescriptorPoolCreateInfo {
4215    #[inline]
4216    fn default() -> Self {
4217        Self {
4218            s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
4219            next: ptr::null(),
4220            flags: DescriptorPoolCreateFlags::default(),
4221            max_sets: u32::default(),
4222            pool_size_count: u32::default(),
4223            pool_sizes: ptr::null(),
4224        }
4225    }
4226}
4227
4228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html>
4229#[repr(C)]
4230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4231pub struct DescriptorPoolInlineUniformBlockCreateInfo {
4232    pub s_type: StructureType,
4233    pub next: *const c_void,
4234    pub max_inline_uniform_block_bindings: u32,
4235}
4236
4237impl Default for DescriptorPoolInlineUniformBlockCreateInfo {
4238    #[inline]
4239    fn default() -> Self {
4240        Self {
4241            s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
4242            next: ptr::null(),
4243            max_inline_uniform_block_bindings: u32::default(),
4244        }
4245    }
4246}
4247
4248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html>
4249#[repr(C)]
4250#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4251pub struct DescriptorPoolSize {
4252    pub type_: DescriptorType,
4253    pub descriptor_count: u32,
4254}
4255
4256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html>
4257#[repr(C)]
4258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4259pub struct DescriptorSetAllocateInfo {
4260    pub s_type: StructureType,
4261    pub next: *const c_void,
4262    pub descriptor_pool: DescriptorPool,
4263    pub descriptor_set_count: u32,
4264    pub set_layouts: *const DescriptorSetLayout,
4265}
4266
4267impl Default for DescriptorSetAllocateInfo {
4268    #[inline]
4269    fn default() -> Self {
4270        Self {
4271            s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
4272            next: ptr::null(),
4273            descriptor_pool: DescriptorPool::default(),
4274            descriptor_set_count: u32::default(),
4275            set_layouts: ptr::null(),
4276        }
4277    }
4278}
4279
4280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html>
4281#[repr(C)]
4282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4283pub struct DescriptorSetBindingReferenceVALVE {
4284    pub s_type: StructureType,
4285    pub next: *const c_void,
4286    pub descriptor_set_layout: DescriptorSetLayout,
4287    pub binding: u32,
4288}
4289
4290impl Default for DescriptorSetBindingReferenceVALVE {
4291    #[inline]
4292    fn default() -> Self {
4293        Self {
4294            s_type: StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,
4295            next: ptr::null(),
4296            descriptor_set_layout: DescriptorSetLayout::default(),
4297            binding: u32::default(),
4298        }
4299    }
4300}
4301
4302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html>
4303#[repr(C)]
4304#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4305pub struct DescriptorSetLayoutBinding {
4306    pub binding: u32,
4307    pub descriptor_type: DescriptorType,
4308    pub descriptor_count: u32,
4309    pub stage_flags: ShaderStageFlags,
4310    pub immutable_samplers: *const Sampler,
4311}
4312
4313impl Default for DescriptorSetLayoutBinding {
4314    #[inline]
4315    fn default() -> Self {
4316        Self {
4317            binding: u32::default(),
4318            descriptor_type: DescriptorType::default(),
4319            descriptor_count: u32::default(),
4320            stage_flags: ShaderStageFlags::default(),
4321            immutable_samplers: ptr::null(),
4322        }
4323    }
4324}
4325
4326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>
4327#[repr(C)]
4328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4329pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
4330    pub s_type: StructureType,
4331    pub next: *const c_void,
4332    pub binding_count: u32,
4333    pub binding_flags: *const DescriptorBindingFlags,
4334}
4335
4336impl Default for DescriptorSetLayoutBindingFlagsCreateInfo {
4337    #[inline]
4338    fn default() -> Self {
4339        Self {
4340            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
4341            next: ptr::null(),
4342            binding_count: u32::default(),
4343            binding_flags: ptr::null(),
4344        }
4345    }
4346}
4347
4348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html>
4349#[repr(C)]
4350#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4351pub struct DescriptorSetLayoutCreateInfo {
4352    pub s_type: StructureType,
4353    pub next: *const c_void,
4354    pub flags: DescriptorSetLayoutCreateFlags,
4355    pub binding_count: u32,
4356    pub bindings: *const DescriptorSetLayoutBinding,
4357}
4358
4359impl Default for DescriptorSetLayoutCreateInfo {
4360    #[inline]
4361    fn default() -> Self {
4362        Self {
4363            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
4364            next: ptr::null(),
4365            flags: DescriptorSetLayoutCreateFlags::default(),
4366            binding_count: u32::default(),
4367            bindings: ptr::null(),
4368        }
4369    }
4370}
4371
4372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html>
4373#[repr(C)]
4374#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4375pub struct DescriptorSetLayoutHostMappingInfoVALVE {
4376    pub s_type: StructureType,
4377    pub next: *mut c_void,
4378    pub descriptor_offset: usize,
4379    pub descriptor_size: u32,
4380}
4381
4382impl Default for DescriptorSetLayoutHostMappingInfoVALVE {
4383    #[inline]
4384    fn default() -> Self {
4385        Self {
4386            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
4387            next: ptr::null_mut(),
4388            descriptor_offset: usize::default(),
4389            descriptor_size: u32::default(),
4390        }
4391    }
4392}
4393
4394/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html>
4395#[repr(C)]
4396#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4397pub struct DescriptorSetLayoutSupport {
4398    pub s_type: StructureType,
4399    pub next: *mut c_void,
4400    pub supported: Bool32,
4401}
4402
4403impl Default for DescriptorSetLayoutSupport {
4404    #[inline]
4405    fn default() -> Self {
4406        Self {
4407            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
4408            next: ptr::null_mut(),
4409            supported: Bool32::default(),
4410        }
4411    }
4412}
4413
4414/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>
4415#[repr(C)]
4416#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4417pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
4418    pub s_type: StructureType,
4419    pub next: *const c_void,
4420    pub descriptor_set_count: u32,
4421    pub descriptor_counts: *const u32,
4422}
4423
4424impl Default for DescriptorSetVariableDescriptorCountAllocateInfo {
4425    #[inline]
4426    fn default() -> Self {
4427        Self {
4428            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
4429            next: ptr::null(),
4430            descriptor_set_count: u32::default(),
4431            descriptor_counts: ptr::null(),
4432        }
4433    }
4434}
4435
4436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>
4437#[repr(C)]
4438#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4439pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
4440    pub s_type: StructureType,
4441    pub next: *mut c_void,
4442    pub max_variable_descriptor_count: u32,
4443}
4444
4445impl Default for DescriptorSetVariableDescriptorCountLayoutSupport {
4446    #[inline]
4447    fn default() -> Self {
4448        Self {
4449            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
4450            next: ptr::null_mut(),
4451            max_variable_descriptor_count: u32::default(),
4452        }
4453    }
4454}
4455
4456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html>
4457#[repr(C)]
4458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4459pub struct DescriptorUpdateTemplateCreateInfo {
4460    pub s_type: StructureType,
4461    pub next: *const c_void,
4462    pub flags: DescriptorUpdateTemplateCreateFlags,
4463    pub descriptor_update_entry_count: u32,
4464    pub descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
4465    pub template_type: DescriptorUpdateTemplateType,
4466    pub descriptor_set_layout: DescriptorSetLayout,
4467    pub pipeline_bind_point: PipelineBindPoint,
4468    pub pipeline_layout: PipelineLayout,
4469    pub set: u32,
4470}
4471
4472impl Default for DescriptorUpdateTemplateCreateInfo {
4473    #[inline]
4474    fn default() -> Self {
4475        Self {
4476            s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
4477            next: ptr::null(),
4478            flags: DescriptorUpdateTemplateCreateFlags::default(),
4479            descriptor_update_entry_count: u32::default(),
4480            descriptor_update_entries: ptr::null(),
4481            template_type: DescriptorUpdateTemplateType::default(),
4482            descriptor_set_layout: DescriptorSetLayout::default(),
4483            pipeline_bind_point: PipelineBindPoint::default(),
4484            pipeline_layout: PipelineLayout::default(),
4485            set: u32::default(),
4486        }
4487    }
4488}
4489
4490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html>
4491#[repr(C)]
4492#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4493pub struct DescriptorUpdateTemplateEntry {
4494    pub dst_binding: u32,
4495    pub dst_array_element: u32,
4496    pub descriptor_count: u32,
4497    pub descriptor_type: DescriptorType,
4498    pub offset: usize,
4499    pub stride: usize,
4500}
4501
4502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html>
4503#[repr(C)]
4504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4505pub struct DeviceAddressBindingCallbackDataEXT {
4506    pub s_type: StructureType,
4507    pub next: *mut c_void,
4508    pub flags: DeviceAddressBindingFlagsEXT,
4509    pub base_address: DeviceAddress,
4510    pub size: DeviceSize,
4511    pub binding_type: DeviceAddressBindingTypeEXT,
4512}
4513
4514impl Default for DeviceAddressBindingCallbackDataEXT {
4515    #[inline]
4516    fn default() -> Self {
4517        Self {
4518            s_type: StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT,
4519            next: ptr::null_mut(),
4520            flags: DeviceAddressBindingFlagsEXT::default(),
4521            base_address: DeviceAddress::default(),
4522            size: DeviceSize::default(),
4523            binding_type: DeviceAddressBindingTypeEXT::default(),
4524        }
4525    }
4526}
4527
4528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html>
4529#[repr(C)]
4530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4531pub struct DeviceBufferMemoryRequirements {
4532    pub s_type: StructureType,
4533    pub next: *const c_void,
4534    pub create_info: *const BufferCreateInfo,
4535}
4536
4537impl Default for DeviceBufferMemoryRequirements {
4538    #[inline]
4539    fn default() -> Self {
4540        Self {
4541            s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS,
4542            next: ptr::null(),
4543            create_info: ptr::null(),
4544        }
4545    }
4546}
4547
4548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html>
4549#[repr(C)]
4550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4551pub struct DeviceCreateInfo {
4552    pub s_type: StructureType,
4553    pub next: *const c_void,
4554    pub flags: DeviceCreateFlags,
4555    pub queue_create_info_count: u32,
4556    pub queue_create_infos: *const DeviceQueueCreateInfo,
4557    pub enabled_layer_count: u32,
4558    pub enabled_layer_names: *const *const c_char,
4559    pub enabled_extension_count: u32,
4560    pub enabled_extension_names: *const *const c_char,
4561    pub enabled_features: *const PhysicalDeviceFeatures,
4562}
4563
4564impl Default for DeviceCreateInfo {
4565    #[inline]
4566    fn default() -> Self {
4567        Self {
4568            s_type: StructureType::DEVICE_CREATE_INFO,
4569            next: ptr::null(),
4570            flags: DeviceCreateFlags::default(),
4571            queue_create_info_count: u32::default(),
4572            queue_create_infos: ptr::null(),
4573            enabled_layer_count: u32::default(),
4574            enabled_layer_names: ptr::null(),
4575            enabled_extension_count: u32::default(),
4576            enabled_extension_names: ptr::null(),
4577            enabled_features: ptr::null(),
4578        }
4579    }
4580}
4581
4582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>
4583#[repr(C)]
4584#[derive(Copy, Clone)]
4585pub struct DeviceDeviceMemoryReportCreateInfoEXT {
4586    pub s_type: StructureType,
4587    pub next: *const c_void,
4588    pub flags: DeviceMemoryReportFlagsEXT,
4589    pub user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
4590    pub user_data: *mut c_void,
4591}
4592
4593impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
4594    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4595        f.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
4596            .field("s_type", &self.s_type)
4597            .field("next", &self.next)
4598            .field("flags", &self.flags)
4599            .field(
4600                "user_callback",
4601                &(self.user_callback.map(|f| f as *const u8)),
4602            )
4603            .field("user_data", &self.user_data)
4604            .finish()
4605    }
4606}
4607
4608impl Default for DeviceDeviceMemoryReportCreateInfoEXT {
4609    #[inline]
4610    fn default() -> Self {
4611        Self {
4612            s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
4613            next: ptr::null(),
4614            flags: DeviceMemoryReportFlagsEXT::default(),
4615            user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
4616            user_data: ptr::null_mut(),
4617        }
4618    }
4619}
4620
4621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>
4622#[repr(C)]
4623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4624pub struct DeviceDiagnosticsConfigCreateInfoNV {
4625    pub s_type: StructureType,
4626    pub next: *const c_void,
4627    pub flags: DeviceDiagnosticsConfigFlagsNV,
4628}
4629
4630impl Default for DeviceDiagnosticsConfigCreateInfoNV {
4631    #[inline]
4632    fn default() -> Self {
4633        Self {
4634            s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
4635            next: ptr::null(),
4636            flags: DeviceDiagnosticsConfigFlagsNV::default(),
4637        }
4638    }
4639}
4640
4641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html>
4642#[repr(C)]
4643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4644pub struct DeviceEventInfoEXT {
4645    pub s_type: StructureType,
4646    pub next: *const c_void,
4647    pub device_event: DeviceEventTypeEXT,
4648}
4649
4650impl Default for DeviceEventInfoEXT {
4651    #[inline]
4652    fn default() -> Self {
4653        Self {
4654            s_type: StructureType::DEVICE_EVENT_INFO_EXT,
4655            next: ptr::null(),
4656            device_event: DeviceEventTypeEXT::default(),
4657        }
4658    }
4659}
4660
4661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoEXT.html>
4662#[repr(C)]
4663#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4664pub struct DeviceFaultAddressInfoEXT {
4665    pub address_type: DeviceFaultAddressTypeEXT,
4666    pub reported_address: DeviceAddress,
4667    pub address_precision: DeviceSize,
4668}
4669
4670/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html>
4671#[repr(C)]
4672#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4673pub struct DeviceFaultCountsEXT {
4674    pub s_type: StructureType,
4675    pub next: *mut c_void,
4676    pub address_info_count: u32,
4677    pub vendor_info_count: u32,
4678    pub vendor_binary_size: DeviceSize,
4679}
4680
4681impl Default for DeviceFaultCountsEXT {
4682    #[inline]
4683    fn default() -> Self {
4684        Self {
4685            s_type: StructureType::DEVICE_FAULT_COUNTS_EXT,
4686            next: ptr::null_mut(),
4687            address_info_count: u32::default(),
4688            vendor_info_count: u32::default(),
4689            vendor_binary_size: DeviceSize::default(),
4690        }
4691    }
4692}
4693
4694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html>
4695#[repr(C)]
4696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4697pub struct DeviceFaultInfoEXT {
4698    pub s_type: StructureType,
4699    pub next: *mut c_void,
4700    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
4701    pub address_infos: *mut DeviceFaultAddressInfoEXT,
4702    pub vendor_infos: *mut DeviceFaultVendorInfoEXT,
4703    pub vendor_binary_data: *mut c_void,
4704}
4705
4706impl Default for DeviceFaultInfoEXT {
4707    #[inline]
4708    fn default() -> Self {
4709        Self {
4710            s_type: StructureType::DEVICE_FAULT_INFO_EXT,
4711            next: ptr::null_mut(),
4712            description: StringArray::default(),
4713            address_infos: ptr::null_mut(),
4714            vendor_infos: ptr::null_mut(),
4715            vendor_binary_data: ptr::null_mut(),
4716        }
4717    }
4718}
4719
4720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneEXT.html>
4721#[repr(C)]
4722#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4723pub struct DeviceFaultVendorBinaryHeaderVersionOneEXT {
4724    pub header_size: u32,
4725    pub header_version: DeviceFaultVendorBinaryHeaderVersionEXT,
4726    pub vendor_id: u32,
4727    pub device_id: u32,
4728    pub driver_version: u32,
4729    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
4730    pub application_name_offset: u32,
4731    pub application_version: u32,
4732    pub engine_name_offset: u32,
4733    pub engine_version: u32,
4734    pub api_version: u32,
4735}
4736
4737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoEXT.html>
4738#[repr(C)]
4739#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4740pub struct DeviceFaultVendorInfoEXT {
4741    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
4742    pub vendor_fault_code: u64,
4743    pub vendor_fault_data: u64,
4744}
4745
4746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html>
4747#[repr(C)]
4748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4749pub struct DeviceGroupBindSparseInfo {
4750    pub s_type: StructureType,
4751    pub next: *const c_void,
4752    pub resource_device_index: u32,
4753    pub memory_device_index: u32,
4754}
4755
4756impl Default for DeviceGroupBindSparseInfo {
4757    #[inline]
4758    fn default() -> Self {
4759        Self {
4760            s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
4761            next: ptr::null(),
4762            resource_device_index: u32::default(),
4763            memory_device_index: u32::default(),
4764        }
4765    }
4766}
4767
4768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html>
4769#[repr(C)]
4770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4771pub struct DeviceGroupCommandBufferBeginInfo {
4772    pub s_type: StructureType,
4773    pub next: *const c_void,
4774    pub device_mask: u32,
4775}
4776
4777impl Default for DeviceGroupCommandBufferBeginInfo {
4778    #[inline]
4779    fn default() -> Self {
4780        Self {
4781            s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
4782            next: ptr::null(),
4783            device_mask: u32::default(),
4784        }
4785    }
4786}
4787
4788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html>
4789#[repr(C)]
4790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4791pub struct DeviceGroupDeviceCreateInfo {
4792    pub s_type: StructureType,
4793    pub next: *const c_void,
4794    pub physical_device_count: u32,
4795    pub physical_devices: *const PhysicalDevice,
4796}
4797
4798impl Default for DeviceGroupDeviceCreateInfo {
4799    #[inline]
4800    fn default() -> Self {
4801        Self {
4802            s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
4803            next: ptr::null(),
4804            physical_device_count: u32::default(),
4805            physical_devices: ptr::null(),
4806        }
4807    }
4808}
4809
4810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>
4811#[repr(C)]
4812#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4813pub struct DeviceGroupPresentCapabilitiesKHR {
4814    pub s_type: StructureType,
4815    pub next: *mut c_void,
4816    pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE],
4817    pub modes: DeviceGroupPresentModeFlagsKHR,
4818}
4819
4820impl Default for DeviceGroupPresentCapabilitiesKHR {
4821    #[inline]
4822    fn default() -> Self {
4823        Self {
4824            s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
4825            next: ptr::null_mut(),
4826            present_mask: [u32::default(); MAX_DEVICE_GROUP_SIZE],
4827            modes: DeviceGroupPresentModeFlagsKHR::default(),
4828        }
4829    }
4830}
4831
4832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html>
4833#[repr(C)]
4834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4835pub struct DeviceGroupPresentInfoKHR {
4836    pub s_type: StructureType,
4837    pub next: *const c_void,
4838    pub swapchain_count: u32,
4839    pub device_masks: *const u32,
4840    pub mode: DeviceGroupPresentModeFlagsKHR,
4841}
4842
4843impl Default for DeviceGroupPresentInfoKHR {
4844    #[inline]
4845    fn default() -> Self {
4846        Self {
4847            s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
4848            next: ptr::null(),
4849            swapchain_count: u32::default(),
4850            device_masks: ptr::null(),
4851            mode: DeviceGroupPresentModeFlagsKHR::default(),
4852        }
4853    }
4854}
4855
4856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html>
4857#[repr(C)]
4858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4859pub struct DeviceGroupRenderPassBeginInfo {
4860    pub s_type: StructureType,
4861    pub next: *const c_void,
4862    pub device_mask: u32,
4863    pub device_render_area_count: u32,
4864    pub device_render_areas: *const Rect2D,
4865}
4866
4867impl Default for DeviceGroupRenderPassBeginInfo {
4868    #[inline]
4869    fn default() -> Self {
4870        Self {
4871            s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
4872            next: ptr::null(),
4873            device_mask: u32::default(),
4874            device_render_area_count: u32::default(),
4875            device_render_areas: ptr::null(),
4876        }
4877    }
4878}
4879
4880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html>
4881#[repr(C)]
4882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4883pub struct DeviceGroupSubmitInfo {
4884    pub s_type: StructureType,
4885    pub next: *const c_void,
4886    pub wait_semaphore_count: u32,
4887    pub wait_semaphore_device_indices: *const u32,
4888    pub command_buffer_count: u32,
4889    pub command_buffer_device_masks: *const u32,
4890    pub signal_semaphore_count: u32,
4891    pub signal_semaphore_device_indices: *const u32,
4892}
4893
4894impl Default for DeviceGroupSubmitInfo {
4895    #[inline]
4896    fn default() -> Self {
4897        Self {
4898            s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
4899            next: ptr::null(),
4900            wait_semaphore_count: u32::default(),
4901            wait_semaphore_device_indices: ptr::null(),
4902            command_buffer_count: u32::default(),
4903            command_buffer_device_masks: ptr::null(),
4904            signal_semaphore_count: u32::default(),
4905            signal_semaphore_device_indices: ptr::null(),
4906        }
4907    }
4908}
4909
4910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>
4911#[repr(C)]
4912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4913pub struct DeviceGroupSwapchainCreateInfoKHR {
4914    pub s_type: StructureType,
4915    pub next: *const c_void,
4916    pub modes: DeviceGroupPresentModeFlagsKHR,
4917}
4918
4919impl Default for DeviceGroupSwapchainCreateInfoKHR {
4920    #[inline]
4921    fn default() -> Self {
4922        Self {
4923            s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
4924            next: ptr::null(),
4925            modes: DeviceGroupPresentModeFlagsKHR::default(),
4926        }
4927    }
4928}
4929
4930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html>
4931#[repr(C)]
4932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4933pub struct DeviceImageMemoryRequirements {
4934    pub s_type: StructureType,
4935    pub next: *const c_void,
4936    pub create_info: *const ImageCreateInfo,
4937    pub plane_aspect: ImageAspectFlags,
4938}
4939
4940impl Default for DeviceImageMemoryRequirements {
4941    #[inline]
4942    fn default() -> Self {
4943        Self {
4944            s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS,
4945            next: ptr::null(),
4946            create_info: ptr::null(),
4947            plane_aspect: ImageAspectFlags::default(),
4948        }
4949    }
4950}
4951
4952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html>
4953#[repr(C)]
4954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4955pub struct DeviceImageSubresourceInfo {
4956    pub s_type: StructureType,
4957    pub next: *const c_void,
4958    pub create_info: *const ImageCreateInfo,
4959    pub subresource: *const ImageSubresource2,
4960}
4961
4962impl Default for DeviceImageSubresourceInfo {
4963    #[inline]
4964    fn default() -> Self {
4965        Self {
4966            s_type: StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO,
4967            next: ptr::null(),
4968            create_info: ptr::null(),
4969            subresource: ptr::null(),
4970        }
4971    }
4972}
4973
4974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>
4975#[repr(C)]
4976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4977pub struct DeviceMemoryOpaqueCaptureAddressInfo {
4978    pub s_type: StructureType,
4979    pub next: *const c_void,
4980    pub memory: DeviceMemory,
4981}
4982
4983impl Default for DeviceMemoryOpaqueCaptureAddressInfo {
4984    #[inline]
4985    fn default() -> Self {
4986        Self {
4987            s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
4988            next: ptr::null(),
4989            memory: DeviceMemory::default(),
4990        }
4991    }
4992}
4993
4994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>
4995#[repr(C)]
4996#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4997pub struct DeviceMemoryOverallocationCreateInfoAMD {
4998    pub s_type: StructureType,
4999    pub next: *const c_void,
5000    pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
5001}
5002
5003impl Default for DeviceMemoryOverallocationCreateInfoAMD {
5004    #[inline]
5005    fn default() -> Self {
5006        Self {
5007            s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
5008            next: ptr::null(),
5009            overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
5010        }
5011    }
5012}
5013
5014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html>
5015#[repr(C)]
5016#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5017pub struct DeviceMemoryReportCallbackDataEXT {
5018    pub s_type: StructureType,
5019    pub next: *mut c_void,
5020    pub flags: DeviceMemoryReportFlagsEXT,
5021    pub type_: DeviceMemoryReportEventTypeEXT,
5022    pub memory_object_id: u64,
5023    pub size: DeviceSize,
5024    pub object_type: ObjectType,
5025    pub object_handle: u64,
5026    pub heap_index: u32,
5027}
5028
5029impl Default for DeviceMemoryReportCallbackDataEXT {
5030    #[inline]
5031    fn default() -> Self {
5032        Self {
5033            s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
5034            next: ptr::null_mut(),
5035            flags: DeviceMemoryReportFlagsEXT::default(),
5036            type_: DeviceMemoryReportEventTypeEXT::default(),
5037            memory_object_id: u64::default(),
5038            size: DeviceSize::default(),
5039            object_type: ObjectType::default(),
5040            object_handle: u64::default(),
5041            heap_index: u32::default(),
5042        }
5043    }
5044}
5045
5046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html>
5047#[repr(C)]
5048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5049pub struct DevicePipelineBinaryInternalCacheControlKHR {
5050    pub s_type: StructureType,
5051    pub next: *const c_void,
5052    pub disable_internal_cache: Bool32,
5053}
5054
5055impl Default for DevicePipelineBinaryInternalCacheControlKHR {
5056    #[inline]
5057    fn default() -> Self {
5058        Self {
5059            s_type: StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR,
5060            next: ptr::null(),
5061            disable_internal_cache: Bool32::default(),
5062        }
5063    }
5064}
5065
5066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html>
5067#[repr(C)]
5068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5069pub struct DevicePrivateDataCreateInfo {
5070    pub s_type: StructureType,
5071    pub next: *const c_void,
5072    pub private_data_slot_request_count: u32,
5073}
5074
5075impl Default for DevicePrivateDataCreateInfo {
5076    #[inline]
5077    fn default() -> Self {
5078        Self {
5079            s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO,
5080            next: ptr::null(),
5081            private_data_slot_request_count: u32::default(),
5082        }
5083    }
5084}
5085
5086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html>
5087#[repr(C)]
5088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5089pub struct DeviceQueueCreateInfo {
5090    pub s_type: StructureType,
5091    pub next: *const c_void,
5092    pub flags: DeviceQueueCreateFlags,
5093    pub queue_family_index: u32,
5094    pub queue_count: u32,
5095    pub queue_priorities: *const f32,
5096}
5097
5098impl Default for DeviceQueueCreateInfo {
5099    #[inline]
5100    fn default() -> Self {
5101        Self {
5102            s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
5103            next: ptr::null(),
5104            flags: DeviceQueueCreateFlags::default(),
5105            queue_family_index: u32::default(),
5106            queue_count: u32::default(),
5107            queue_priorities: ptr::null(),
5108        }
5109    }
5110}
5111
5112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html>
5113#[repr(C)]
5114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5115pub struct DeviceQueueGlobalPriorityCreateInfo {
5116    pub s_type: StructureType,
5117    pub next: *const c_void,
5118    pub global_priority: QueueGlobalPriority,
5119}
5120
5121impl Default for DeviceQueueGlobalPriorityCreateInfo {
5122    #[inline]
5123    fn default() -> Self {
5124        Self {
5125            s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,
5126            next: ptr::null(),
5127            global_priority: QueueGlobalPriority::default(),
5128        }
5129    }
5130}
5131
5132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html>
5133#[repr(C)]
5134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5135pub struct DeviceQueueInfo2 {
5136    pub s_type: StructureType,
5137    pub next: *const c_void,
5138    pub flags: DeviceQueueCreateFlags,
5139    pub queue_family_index: u32,
5140    pub queue_index: u32,
5141}
5142
5143impl Default for DeviceQueueInfo2 {
5144    #[inline]
5145    fn default() -> Self {
5146        Self {
5147            s_type: StructureType::DEVICE_QUEUE_INFO_2,
5148            next: ptr::null(),
5149            flags: DeviceQueueCreateFlags::default(),
5150            queue_family_index: u32::default(),
5151            queue_index: u32::default(),
5152        }
5153    }
5154}
5155
5156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html>
5157#[repr(C)]
5158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5159pub struct DeviceQueueShaderCoreControlCreateInfoARM {
5160    pub s_type: StructureType,
5161    pub next: *mut c_void,
5162    pub shader_core_count: u32,
5163}
5164
5165impl Default for DeviceQueueShaderCoreControlCreateInfoARM {
5166    #[inline]
5167    fn default() -> Self {
5168        Self {
5169            s_type: StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM,
5170            next: ptr::null_mut(),
5171            shader_core_count: u32::default(),
5172        }
5173    }
5174}
5175
5176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.html>
5177#[repr(C)]
5178#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5179pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
5180    pub s_type: StructureType,
5181    pub next: *const c_void,
5182    pub semaphore_sci_sync_pool_request_count: u32,
5183}
5184
5185impl Default for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
5186    #[inline]
5187    fn default() -> Self {
5188        Self {
5189            s_type: StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV,
5190            next: ptr::null(),
5191            semaphore_sci_sync_pool_request_count: u32::default(),
5192        }
5193    }
5194}
5195
5196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html>
5197#[repr(C)]
5198#[derive(Copy, Clone)]
5199pub struct DirectDriverLoadingInfoLUNARG {
5200    pub s_type: StructureType,
5201    pub next: *mut c_void,
5202    pub flags: DirectDriverLoadingFlagsLUNARG,
5203    pub get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG,
5204}
5205
5206impl fmt::Debug for DirectDriverLoadingInfoLUNARG {
5207    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5208        f.debug_struct("DirectDriverLoadingInfoLUNARG")
5209            .field("s_type", &self.s_type)
5210            .field("next", &self.next)
5211            .field("flags", &self.flags)
5212            .field(
5213                "get_instance_proc_addr",
5214                &(self.get_instance_proc_addr.map(|f| f as *const u8)),
5215            )
5216            .finish()
5217    }
5218}
5219
5220impl Default for DirectDriverLoadingInfoLUNARG {
5221    #[inline]
5222    fn default() -> Self {
5223        Self {
5224            s_type: StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG,
5225            next: ptr::null_mut(),
5226            flags: DirectDriverLoadingFlagsLUNARG::default(),
5227            get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG::default(),
5228        }
5229    }
5230}
5231
5232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html>
5233#[repr(C)]
5234#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5235pub struct DirectDriverLoadingListLUNARG {
5236    pub s_type: StructureType,
5237    pub next: *const c_void,
5238    pub mode: DirectDriverLoadingModeLUNARG,
5239    pub driver_count: u32,
5240    pub drivers: *const DirectDriverLoadingInfoLUNARG,
5241}
5242
5243impl Default for DirectDriverLoadingListLUNARG {
5244    #[inline]
5245    fn default() -> Self {
5246        Self {
5247            s_type: StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG,
5248            next: ptr::null(),
5249            mode: DirectDriverLoadingModeLUNARG::default(),
5250            driver_count: u32::default(),
5251            drivers: ptr::null(),
5252        }
5253    }
5254}
5255
5256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html>
5257#[repr(C)]
5258#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5259pub struct DirectFBSurfaceCreateInfoEXT {
5260    pub s_type: StructureType,
5261    pub next: *const c_void,
5262    pub flags: DirectFBSurfaceCreateFlagsEXT,
5263    pub dfb: *mut IDirectFB,
5264    pub surface: *mut IDirectFBSurface,
5265}
5266
5267impl Default for DirectFBSurfaceCreateInfoEXT {
5268    #[inline]
5269    fn default() -> Self {
5270        Self {
5271            s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
5272            next: ptr::null(),
5273            flags: DirectFBSurfaceCreateFlagsEXT::default(),
5274            dfb: ptr::null_mut(),
5275            surface: ptr::null_mut(),
5276        }
5277    }
5278}
5279
5280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html>
5281#[repr(C)]
5282#[derive(Copy, Clone, Default, Debug)]
5283pub struct DispatchGraphCountInfoAMDX {
5284    pub count: u32,
5285    pub infos: DeviceOrHostAddressConstAMDX,
5286    pub stride: u64,
5287}
5288
5289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html>
5290#[repr(C)]
5291#[derive(Copy, Clone, Default, Debug)]
5292pub struct DispatchGraphInfoAMDX {
5293    pub node_index: u32,
5294    pub payload_count: u32,
5295    pub payloads: DeviceOrHostAddressConstAMDX,
5296    pub payload_stride: u64,
5297}
5298
5299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html>
5300#[repr(C)]
5301#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5302pub struct DispatchIndirectCommand {
5303    pub x: u32,
5304    pub y: u32,
5305    pub z: u32,
5306}
5307
5308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html>
5309#[repr(C)]
5310#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5311pub struct DisplayEventInfoEXT {
5312    pub s_type: StructureType,
5313    pub next: *const c_void,
5314    pub display_event: DisplayEventTypeEXT,
5315}
5316
5317impl Default for DisplayEventInfoEXT {
5318    #[inline]
5319    fn default() -> Self {
5320        Self {
5321            s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
5322            next: ptr::null(),
5323            display_event: DisplayEventTypeEXT::default(),
5324        }
5325    }
5326}
5327
5328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html>
5329#[repr(C)]
5330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5331pub struct DisplayModeCreateInfoKHR {
5332    pub s_type: StructureType,
5333    pub next: *const c_void,
5334    pub flags: DisplayModeCreateFlagsKHR,
5335    pub parameters: DisplayModeParametersKHR,
5336}
5337
5338impl Default for DisplayModeCreateInfoKHR {
5339    #[inline]
5340    fn default() -> Self {
5341        Self {
5342            s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
5343            next: ptr::null(),
5344            flags: DisplayModeCreateFlagsKHR::default(),
5345            parameters: DisplayModeParametersKHR::default(),
5346        }
5347    }
5348}
5349
5350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html>
5351#[repr(C)]
5352#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5353pub struct DisplayModeParametersKHR {
5354    pub visible_region: Extent2D,
5355    pub refresh_rate: u32,
5356}
5357
5358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html>
5359#[repr(C)]
5360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5361pub struct DisplayModeProperties2KHR {
5362    pub s_type: StructureType,
5363    pub next: *mut c_void,
5364    pub display_mode_properties: DisplayModePropertiesKHR,
5365}
5366
5367impl Default for DisplayModeProperties2KHR {
5368    #[inline]
5369    fn default() -> Self {
5370        Self {
5371            s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
5372            next: ptr::null_mut(),
5373            display_mode_properties: DisplayModePropertiesKHR::default(),
5374        }
5375    }
5376}
5377
5378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html>
5379#[repr(C)]
5380#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5381pub struct DisplayModePropertiesKHR {
5382    pub display_mode: DisplayModeKHR,
5383    pub parameters: DisplayModeParametersKHR,
5384}
5385
5386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html>
5387#[repr(C)]
5388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5389pub struct DisplayModeStereoPropertiesNV {
5390    pub s_type: StructureType,
5391    pub next: *const c_void,
5392    pub hdmi_3d_supported: Bool32,
5393}
5394
5395impl Default for DisplayModeStereoPropertiesNV {
5396    #[inline]
5397    fn default() -> Self {
5398        Self {
5399            s_type: StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV,
5400            next: ptr::null(),
5401            hdmi_3d_supported: Bool32::default(),
5402        }
5403    }
5404}
5405
5406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>
5407#[repr(C)]
5408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5409pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
5410    pub s_type: StructureType,
5411    pub next: *mut c_void,
5412    pub local_dimming_support: Bool32,
5413}
5414
5415impl Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
5416    #[inline]
5417    fn default() -> Self {
5418        Self {
5419            s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
5420            next: ptr::null_mut(),
5421            local_dimming_support: Bool32::default(),
5422        }
5423    }
5424}
5425
5426/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html>
5427#[repr(C)]
5428#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5429pub struct DisplayPlaneCapabilities2KHR {
5430    pub s_type: StructureType,
5431    pub next: *mut c_void,
5432    pub capabilities: DisplayPlaneCapabilitiesKHR,
5433}
5434
5435impl Default for DisplayPlaneCapabilities2KHR {
5436    #[inline]
5437    fn default() -> Self {
5438        Self {
5439            s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
5440            next: ptr::null_mut(),
5441            capabilities: DisplayPlaneCapabilitiesKHR::default(),
5442        }
5443    }
5444}
5445
5446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html>
5447#[repr(C)]
5448#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5449pub struct DisplayPlaneCapabilitiesKHR {
5450    pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
5451    pub min_src_position: Offset2D,
5452    pub max_src_position: Offset2D,
5453    pub min_src_extent: Extent2D,
5454    pub max_src_extent: Extent2D,
5455    pub min_dst_position: Offset2D,
5456    pub max_dst_position: Offset2D,
5457    pub min_dst_extent: Extent2D,
5458    pub max_dst_extent: Extent2D,
5459}
5460
5461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html>
5462#[repr(C)]
5463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5464pub struct DisplayPlaneInfo2KHR {
5465    pub s_type: StructureType,
5466    pub next: *const c_void,
5467    pub mode: DisplayModeKHR,
5468    pub plane_index: u32,
5469}
5470
5471impl Default for DisplayPlaneInfo2KHR {
5472    #[inline]
5473    fn default() -> Self {
5474        Self {
5475            s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
5476            next: ptr::null(),
5477            mode: DisplayModeKHR::default(),
5478            plane_index: u32::default(),
5479        }
5480    }
5481}
5482
5483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html>
5484#[repr(C)]
5485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5486pub struct DisplayPlaneProperties2KHR {
5487    pub s_type: StructureType,
5488    pub next: *mut c_void,
5489    pub display_plane_properties: DisplayPlanePropertiesKHR,
5490}
5491
5492impl Default for DisplayPlaneProperties2KHR {
5493    #[inline]
5494    fn default() -> Self {
5495        Self {
5496            s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
5497            next: ptr::null_mut(),
5498            display_plane_properties: DisplayPlanePropertiesKHR::default(),
5499        }
5500    }
5501}
5502
5503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html>
5504#[repr(C)]
5505#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5506pub struct DisplayPlanePropertiesKHR {
5507    pub current_display: DisplayKHR,
5508    pub current_stack_index: u32,
5509}
5510
5511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html>
5512#[repr(C)]
5513#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5514pub struct DisplayPowerInfoEXT {
5515    pub s_type: StructureType,
5516    pub next: *const c_void,
5517    pub power_state: DisplayPowerStateEXT,
5518}
5519
5520impl Default for DisplayPowerInfoEXT {
5521    #[inline]
5522    fn default() -> Self {
5523        Self {
5524            s_type: StructureType::DISPLAY_POWER_INFO_EXT,
5525            next: ptr::null(),
5526            power_state: DisplayPowerStateEXT::default(),
5527        }
5528    }
5529}
5530
5531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html>
5532#[repr(C)]
5533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5534pub struct DisplayPresentInfoKHR {
5535    pub s_type: StructureType,
5536    pub next: *const c_void,
5537    pub src_rect: Rect2D,
5538    pub dst_rect: Rect2D,
5539    pub persistent: Bool32,
5540}
5541
5542impl Default for DisplayPresentInfoKHR {
5543    #[inline]
5544    fn default() -> Self {
5545        Self {
5546            s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
5547            next: ptr::null(),
5548            src_rect: Rect2D::default(),
5549            dst_rect: Rect2D::default(),
5550            persistent: Bool32::default(),
5551        }
5552    }
5553}
5554
5555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html>
5556#[repr(C)]
5557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5558pub struct DisplayProperties2KHR {
5559    pub s_type: StructureType,
5560    pub next: *mut c_void,
5561    pub display_properties: DisplayPropertiesKHR,
5562}
5563
5564impl Default for DisplayProperties2KHR {
5565    #[inline]
5566    fn default() -> Self {
5567        Self {
5568            s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
5569            next: ptr::null_mut(),
5570            display_properties: DisplayPropertiesKHR::default(),
5571        }
5572    }
5573}
5574
5575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html>
5576#[repr(C)]
5577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5578pub struct DisplayPropertiesKHR {
5579    pub display: DisplayKHR,
5580    pub display_name: *const c_char,
5581    pub physical_dimensions: Extent2D,
5582    pub physical_resolution: Extent2D,
5583    pub supported_transforms: SurfaceTransformFlagsKHR,
5584    pub plane_reorder_possible: Bool32,
5585    pub persistent_content: Bool32,
5586}
5587
5588impl Default for DisplayPropertiesKHR {
5589    #[inline]
5590    fn default() -> Self {
5591        Self {
5592            display: DisplayKHR::default(),
5593            display_name: ptr::null(),
5594            physical_dimensions: Extent2D::default(),
5595            physical_resolution: Extent2D::default(),
5596            supported_transforms: SurfaceTransformFlagsKHR::default(),
5597            plane_reorder_possible: Bool32::default(),
5598            persistent_content: Bool32::default(),
5599        }
5600    }
5601}
5602
5603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html>
5604#[repr(C)]
5605#[derive(Copy, Clone, Debug, PartialEq)]
5606pub struct DisplaySurfaceCreateInfoKHR {
5607    pub s_type: StructureType,
5608    pub next: *const c_void,
5609    pub flags: DisplaySurfaceCreateFlagsKHR,
5610    pub display_mode: DisplayModeKHR,
5611    pub plane_index: u32,
5612    pub plane_stack_index: u32,
5613    pub transform: SurfaceTransformFlagsKHR,
5614    pub global_alpha: f32,
5615    pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
5616    pub image_extent: Extent2D,
5617}
5618
5619impl Default for DisplaySurfaceCreateInfoKHR {
5620    #[inline]
5621    fn default() -> Self {
5622        Self {
5623            s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
5624            next: ptr::null(),
5625            flags: DisplaySurfaceCreateFlagsKHR::default(),
5626            display_mode: DisplayModeKHR::default(),
5627            plane_index: u32::default(),
5628            plane_stack_index: u32::default(),
5629            transform: SurfaceTransformFlagsKHR::default(),
5630            global_alpha: f32::default(),
5631            alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
5632            image_extent: Extent2D::default(),
5633        }
5634    }
5635}
5636
5637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html>
5638#[repr(C)]
5639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5640pub struct DisplaySurfaceStereoCreateInfoNV {
5641    pub s_type: StructureType,
5642    pub next: *const c_void,
5643    pub stereo_type: DisplaySurfaceStereoTypeNV,
5644}
5645
5646impl Default for DisplaySurfaceStereoCreateInfoNV {
5647    #[inline]
5648    fn default() -> Self {
5649        Self {
5650            s_type: StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV,
5651            next: ptr::null(),
5652            stereo_type: DisplaySurfaceStereoTypeNV::default(),
5653        }
5654    }
5655}
5656
5657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html>
5658#[repr(C)]
5659#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5660pub struct DrawIndexedIndirectCommand {
5661    pub index_count: u32,
5662    pub instance_count: u32,
5663    pub first_index: u32,
5664    pub vertex_offset: i32,
5665    pub first_instance: u32,
5666}
5667
5668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html>
5669#[repr(C)]
5670#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5671pub struct DrawIndirectCommand {
5672    pub vertex_count: u32,
5673    pub instance_count: u32,
5674    pub first_vertex: u32,
5675    pub first_instance: u32,
5676}
5677
5678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html>
5679#[repr(C)]
5680#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5681pub struct DrawIndirectCountIndirectCommandEXT {
5682    pub buffer_address: DeviceAddress,
5683    pub stride: u32,
5684    pub command_count: u32,
5685}
5686
5687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html>
5688#[repr(C)]
5689#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5690pub struct DrawMeshTasksIndirectCommandEXT {
5691    pub group_count_x: u32,
5692    pub group_count_y: u32,
5693    pub group_count_z: u32,
5694}
5695
5696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html>
5697#[repr(C)]
5698#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5699pub struct DrawMeshTasksIndirectCommandNV {
5700    pub task_count: u32,
5701    pub first_task: u32,
5702}
5703
5704/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html>
5705#[repr(C)]
5706#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5707pub struct DrmFormatModifierProperties2EXT {
5708    pub drm_format_modifier: u64,
5709    pub drm_format_modifier_plane_count: u32,
5710    pub drm_format_modifier_tiling_features: FormatFeatureFlags2,
5711}
5712
5713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html>
5714#[repr(C)]
5715#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5716pub struct DrmFormatModifierPropertiesEXT {
5717    pub drm_format_modifier: u64,
5718    pub drm_format_modifier_plane_count: u32,
5719    pub drm_format_modifier_tiling_features: FormatFeatureFlags,
5720}
5721
5722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html>
5723#[repr(C)]
5724#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5725pub struct DrmFormatModifierPropertiesList2EXT {
5726    pub s_type: StructureType,
5727    pub next: *mut c_void,
5728    pub drm_format_modifier_count: u32,
5729    pub drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
5730}
5731
5732impl Default for DrmFormatModifierPropertiesList2EXT {
5733    #[inline]
5734    fn default() -> Self {
5735        Self {
5736            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
5737            next: ptr::null_mut(),
5738            drm_format_modifier_count: u32::default(),
5739            drm_format_modifier_properties: ptr::null_mut(),
5740        }
5741    }
5742}
5743
5744/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html>
5745#[repr(C)]
5746#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5747pub struct DrmFormatModifierPropertiesListEXT {
5748    pub s_type: StructureType,
5749    pub next: *mut c_void,
5750    pub drm_format_modifier_count: u32,
5751    pub drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
5752}
5753
5754impl Default for DrmFormatModifierPropertiesListEXT {
5755    #[inline]
5756    fn default() -> Self {
5757        Self {
5758            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
5759            next: ptr::null_mut(),
5760            drm_format_modifier_count: u32::default(),
5761            drm_format_modifier_properties: ptr::null_mut(),
5762        }
5763    }
5764}
5765
5766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateInfo.html>
5767#[repr(C)]
5768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5769pub struct EventCreateInfo {
5770    pub s_type: StructureType,
5771    pub next: *const c_void,
5772    pub flags: EventCreateFlags,
5773}
5774
5775impl Default for EventCreateInfo {
5776    #[inline]
5777    fn default() -> Self {
5778        Self {
5779            s_type: StructureType::EVENT_CREATE_INFO,
5780            next: ptr::null(),
5781            flags: EventCreateFlags::default(),
5782        }
5783    }
5784}
5785
5786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html>
5787#[repr(C)]
5788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5789pub struct ExecutionGraphPipelineCreateInfoAMDX {
5790    pub s_type: StructureType,
5791    pub next: *const c_void,
5792    pub flags: PipelineCreateFlags,
5793    pub stage_count: u32,
5794    pub stages: *const PipelineShaderStageCreateInfo,
5795    pub library_info: *const PipelineLibraryCreateInfoKHR,
5796    pub layout: PipelineLayout,
5797    pub base_pipeline_handle: Pipeline,
5798    pub base_pipeline_index: i32,
5799}
5800
5801impl Default for ExecutionGraphPipelineCreateInfoAMDX {
5802    #[inline]
5803    fn default() -> Self {
5804        Self {
5805            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX,
5806            next: ptr::null(),
5807            flags: PipelineCreateFlags::default(),
5808            stage_count: u32::default(),
5809            stages: ptr::null(),
5810            library_info: ptr::null(),
5811            layout: PipelineLayout::default(),
5812            base_pipeline_handle: Pipeline::default(),
5813            base_pipeline_index: i32::default(),
5814        }
5815    }
5816}
5817
5818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html>
5819#[repr(C)]
5820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5821pub struct ExecutionGraphPipelineScratchSizeAMDX {
5822    pub s_type: StructureType,
5823    pub next: *mut c_void,
5824    pub min_size: DeviceSize,
5825    pub max_size: DeviceSize,
5826    pub size_granularity: DeviceSize,
5827}
5828
5829impl Default for ExecutionGraphPipelineScratchSizeAMDX {
5830    #[inline]
5831    fn default() -> Self {
5832        Self {
5833            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX,
5834            next: ptr::null_mut(),
5835            min_size: DeviceSize::default(),
5836            max_size: DeviceSize::default(),
5837            size_granularity: DeviceSize::default(),
5838        }
5839    }
5840}
5841
5842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html>
5843#[repr(C)]
5844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5845pub struct ExportFenceCreateInfo {
5846    pub s_type: StructureType,
5847    pub next: *const c_void,
5848    pub handle_types: ExternalFenceHandleTypeFlags,
5849}
5850
5851impl Default for ExportFenceCreateInfo {
5852    #[inline]
5853    fn default() -> Self {
5854        Self {
5855            s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
5856            next: ptr::null(),
5857            handle_types: ExternalFenceHandleTypeFlags::default(),
5858        }
5859    }
5860}
5861
5862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceSciSyncInfoNV.html>
5863#[repr(C)]
5864#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5865pub struct ExportFenceSciSyncInfoNV {
5866    pub s_type: StructureType,
5867    pub next: *const c_void,
5868    pub attributes: NvSciSyncAttrList,
5869}
5870
5871impl Default for ExportFenceSciSyncInfoNV {
5872    #[inline]
5873    fn default() -> Self {
5874        Self {
5875            s_type: StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV,
5876            next: ptr::null(),
5877            attributes: ptr::null_mut(),
5878        }
5879    }
5880}
5881
5882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html>
5883#[repr(C)]
5884#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5885pub struct ExportFenceWin32HandleInfoKHR {
5886    pub s_type: StructureType,
5887    pub next: *const c_void,
5888    pub attributes: *const SECURITY_ATTRIBUTES,
5889    pub dw_access: DWORD,
5890    pub name: LPCWSTR,
5891}
5892
5893impl Default for ExportFenceWin32HandleInfoKHR {
5894    #[inline]
5895    fn default() -> Self {
5896        Self {
5897            s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
5898            next: ptr::null(),
5899            attributes: ptr::null(),
5900            dw_access: DWORD::default(),
5901            name: ptr::null_mut(),
5902        }
5903    }
5904}
5905
5906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html>
5907#[repr(C)]
5908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5909pub struct ExportMemoryAllocateInfo {
5910    pub s_type: StructureType,
5911    pub next: *const c_void,
5912    pub handle_types: ExternalMemoryHandleTypeFlags,
5913}
5914
5915impl Default for ExportMemoryAllocateInfo {
5916    #[inline]
5917    fn default() -> Self {
5918        Self {
5919            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
5920            next: ptr::null(),
5921            handle_types: ExternalMemoryHandleTypeFlags::default(),
5922        }
5923    }
5924}
5925
5926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html>
5927#[repr(C)]
5928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5929pub struct ExportMemoryAllocateInfoNV {
5930    pub s_type: StructureType,
5931    pub next: *const c_void,
5932    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
5933}
5934
5935impl Default for ExportMemoryAllocateInfoNV {
5936    #[inline]
5937    fn default() -> Self {
5938        Self {
5939            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
5940            next: ptr::null(),
5941            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
5942        }
5943    }
5944}
5945
5946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemorySciBufInfoNV.html>
5947#[repr(C)]
5948#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5949pub struct ExportMemorySciBufInfoNV {
5950    pub s_type: StructureType,
5951    pub next: *const c_void,
5952    pub attributes: NvSciBufAttrList,
5953}
5954
5955impl Default for ExportMemorySciBufInfoNV {
5956    #[inline]
5957    fn default() -> Self {
5958        Self {
5959            s_type: StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV,
5960            next: ptr::null(),
5961            attributes: ptr::null_mut(),
5962        }
5963    }
5964}
5965
5966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html>
5967#[repr(C)]
5968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5969pub struct ExportMemoryWin32HandleInfoKHR {
5970    pub s_type: StructureType,
5971    pub next: *const c_void,
5972    pub attributes: *const SECURITY_ATTRIBUTES,
5973    pub dw_access: DWORD,
5974    pub name: LPCWSTR,
5975}
5976
5977impl Default for ExportMemoryWin32HandleInfoKHR {
5978    #[inline]
5979    fn default() -> Self {
5980        Self {
5981            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
5982            next: ptr::null(),
5983            attributes: ptr::null(),
5984            dw_access: DWORD::default(),
5985            name: ptr::null_mut(),
5986        }
5987    }
5988}
5989
5990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html>
5991#[repr(C)]
5992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5993pub struct ExportMemoryWin32HandleInfoNV {
5994    pub s_type: StructureType,
5995    pub next: *const c_void,
5996    pub attributes: *const SECURITY_ATTRIBUTES,
5997    pub dw_access: DWORD,
5998}
5999
6000impl Default for ExportMemoryWin32HandleInfoNV {
6001    #[inline]
6002    fn default() -> Self {
6003        Self {
6004            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6005            next: ptr::null(),
6006            attributes: ptr::null(),
6007            dw_access: DWORD::default(),
6008        }
6009    }
6010}
6011
6012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html>
6013#[repr(C)]
6014#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6015pub struct ExportMetalBufferInfoEXT {
6016    pub s_type: StructureType,
6017    pub next: *const c_void,
6018    pub memory: DeviceMemory,
6019    pub mtl_buffer: MTLBuffer_id,
6020}
6021
6022impl Default for ExportMetalBufferInfoEXT {
6023    #[inline]
6024    fn default() -> Self {
6025        Self {
6026            s_type: StructureType::EXPORT_METAL_BUFFER_INFO_EXT,
6027            next: ptr::null(),
6028            memory: DeviceMemory::default(),
6029            mtl_buffer: ptr::null_mut(),
6030        }
6031    }
6032}
6033
6034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html>
6035#[repr(C)]
6036#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6037pub struct ExportMetalCommandQueueInfoEXT {
6038    pub s_type: StructureType,
6039    pub next: *const c_void,
6040    pub queue: Queue,
6041    pub mtl_command_queue: MTLCommandQueue_id,
6042}
6043
6044impl Default for ExportMetalCommandQueueInfoEXT {
6045    #[inline]
6046    fn default() -> Self {
6047        Self {
6048            s_type: StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT,
6049            next: ptr::null(),
6050            queue: Queue::default(),
6051            mtl_command_queue: ptr::null_mut(),
6052        }
6053    }
6054}
6055
6056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html>
6057#[repr(C)]
6058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6059pub struct ExportMetalDeviceInfoEXT {
6060    pub s_type: StructureType,
6061    pub next: *const c_void,
6062    pub mtl_device: MTLDevice_id,
6063}
6064
6065impl Default for ExportMetalDeviceInfoEXT {
6066    #[inline]
6067    fn default() -> Self {
6068        Self {
6069            s_type: StructureType::EXPORT_METAL_DEVICE_INFO_EXT,
6070            next: ptr::null(),
6071            mtl_device: ptr::null_mut(),
6072        }
6073    }
6074}
6075
6076/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html>
6077#[repr(C)]
6078#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6079pub struct ExportMetalIOSurfaceInfoEXT {
6080    pub s_type: StructureType,
6081    pub next: *const c_void,
6082    pub image: Image,
6083    pub io_surface: IOSurfaceRef,
6084}
6085
6086impl Default for ExportMetalIOSurfaceInfoEXT {
6087    #[inline]
6088    fn default() -> Self {
6089        Self {
6090            s_type: StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT,
6091            next: ptr::null(),
6092            image: Image::default(),
6093            io_surface: ptr::null_mut(),
6094        }
6095    }
6096}
6097
6098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html>
6099#[repr(C)]
6100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6101pub struct ExportMetalObjectCreateInfoEXT {
6102    pub s_type: StructureType,
6103    pub next: *const c_void,
6104    pub export_object_type: ExportMetalObjectTypeFlagsEXT,
6105}
6106
6107impl Default for ExportMetalObjectCreateInfoEXT {
6108    #[inline]
6109    fn default() -> Self {
6110        Self {
6111            s_type: StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
6112            next: ptr::null(),
6113            export_object_type: ExportMetalObjectTypeFlagsEXT::default(),
6114        }
6115    }
6116}
6117
6118/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html>
6119#[repr(C)]
6120#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6121pub struct ExportMetalObjectsInfoEXT {
6122    pub s_type: StructureType,
6123    pub next: *const c_void,
6124}
6125
6126impl Default for ExportMetalObjectsInfoEXT {
6127    #[inline]
6128    fn default() -> Self {
6129        Self {
6130            s_type: StructureType::EXPORT_METAL_OBJECTS_INFO_EXT,
6131            next: ptr::null(),
6132        }
6133    }
6134}
6135
6136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html>
6137#[repr(C)]
6138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6139pub struct ExportMetalSharedEventInfoEXT {
6140    pub s_type: StructureType,
6141    pub next: *const c_void,
6142    pub semaphore: Semaphore,
6143    pub event: Event,
6144    pub mtl_shared_event: MTLSharedEvent_id,
6145}
6146
6147impl Default for ExportMetalSharedEventInfoEXT {
6148    #[inline]
6149    fn default() -> Self {
6150        Self {
6151            s_type: StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT,
6152            next: ptr::null(),
6153            semaphore: Semaphore::default(),
6154            event: Event::default(),
6155            mtl_shared_event: ptr::null_mut(),
6156        }
6157    }
6158}
6159
6160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html>
6161#[repr(C)]
6162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6163pub struct ExportMetalTextureInfoEXT {
6164    pub s_type: StructureType,
6165    pub next: *const c_void,
6166    pub image: Image,
6167    pub image_view: ImageView,
6168    pub buffer_view: BufferView,
6169    pub plane: ImageAspectFlags,
6170    pub mtl_texture: MTLTexture_id,
6171}
6172
6173impl Default for ExportMetalTextureInfoEXT {
6174    #[inline]
6175    fn default() -> Self {
6176        Self {
6177            s_type: StructureType::EXPORT_METAL_TEXTURE_INFO_EXT,
6178            next: ptr::null(),
6179            image: Image::default(),
6180            image_view: ImageView::default(),
6181            buffer_view: BufferView::default(),
6182            plane: ImageAspectFlags::default(),
6183            mtl_texture: ptr::null_mut(),
6184        }
6185    }
6186}
6187
6188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html>
6189#[repr(C)]
6190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6191pub struct ExportSemaphoreCreateInfo {
6192    pub s_type: StructureType,
6193    pub next: *const c_void,
6194    pub handle_types: ExternalSemaphoreHandleTypeFlags,
6195}
6196
6197impl Default for ExportSemaphoreCreateInfo {
6198    #[inline]
6199    fn default() -> Self {
6200        Self {
6201            s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
6202            next: ptr::null(),
6203            handle_types: ExternalSemaphoreHandleTypeFlags::default(),
6204        }
6205    }
6206}
6207
6208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreSciSyncInfoNV.html>
6209#[repr(C)]
6210#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6211pub struct ExportSemaphoreSciSyncInfoNV {
6212    pub s_type: StructureType,
6213    pub next: *const c_void,
6214    pub attributes: NvSciSyncAttrList,
6215}
6216
6217impl Default for ExportSemaphoreSciSyncInfoNV {
6218    #[inline]
6219    fn default() -> Self {
6220        Self {
6221            s_type: StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
6222            next: ptr::null(),
6223            attributes: ptr::null_mut(),
6224        }
6225    }
6226}
6227
6228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>
6229#[repr(C)]
6230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6231pub struct ExportSemaphoreWin32HandleInfoKHR {
6232    pub s_type: StructureType,
6233    pub next: *const c_void,
6234    pub attributes: *const SECURITY_ATTRIBUTES,
6235    pub dw_access: DWORD,
6236    pub name: LPCWSTR,
6237}
6238
6239impl Default for ExportSemaphoreWin32HandleInfoKHR {
6240    #[inline]
6241    fn default() -> Self {
6242        Self {
6243            s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6244            next: ptr::null(),
6245            attributes: ptr::null(),
6246            dw_access: DWORD::default(),
6247            name: ptr::null_mut(),
6248        }
6249    }
6250}
6251
6252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtensionProperties.html>
6253#[repr(C)]
6254#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6255pub struct ExtensionProperties {
6256    pub extension_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
6257    pub spec_version: u32,
6258}
6259
6260/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent2D.html>
6261#[repr(C)]
6262#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6263pub struct Extent2D {
6264    pub width: u32,
6265    pub height: u32,
6266}
6267
6268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent3D.html>
6269#[repr(C)]
6270#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6271pub struct Extent3D {
6272    pub width: u32,
6273    pub height: u32,
6274    pub depth: u32,
6275}
6276
6277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferProperties.html>
6278#[repr(C)]
6279#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6280pub struct ExternalBufferProperties {
6281    pub s_type: StructureType,
6282    pub next: *mut c_void,
6283    pub external_memory_properties: ExternalMemoryProperties,
6284}
6285
6286impl Default for ExternalBufferProperties {
6287    #[inline]
6288    fn default() -> Self {
6289        Self {
6290            s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
6291            next: ptr::null_mut(),
6292            external_memory_properties: ExternalMemoryProperties::default(),
6293        }
6294    }
6295}
6296
6297/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceProperties.html>
6298#[repr(C)]
6299#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6300pub struct ExternalFenceProperties {
6301    pub s_type: StructureType,
6302    pub next: *mut c_void,
6303    pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
6304    pub compatible_handle_types: ExternalFenceHandleTypeFlags,
6305    pub external_fence_features: ExternalFenceFeatureFlags,
6306}
6307
6308impl Default for ExternalFenceProperties {
6309    #[inline]
6310    fn default() -> Self {
6311        Self {
6312            s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
6313            next: ptr::null_mut(),
6314            export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
6315            compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
6316            external_fence_features: ExternalFenceFeatureFlags::default(),
6317        }
6318    }
6319}
6320
6321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html>
6322#[repr(C)]
6323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6324pub struct ExternalFormatANDROID {
6325    pub s_type: StructureType,
6326    pub next: *mut c_void,
6327    pub external_format: u64,
6328}
6329
6330impl Default for ExternalFormatANDROID {
6331    #[inline]
6332    fn default() -> Self {
6333        Self {
6334            s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
6335            next: ptr::null_mut(),
6336            external_format: u64::default(),
6337        }
6338    }
6339}
6340
6341/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatQNX.html>
6342#[repr(C)]
6343#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6344pub struct ExternalFormatQNX {
6345    pub s_type: StructureType,
6346    pub next: *mut c_void,
6347    pub external_format: u64,
6348}
6349
6350impl Default for ExternalFormatQNX {
6351    #[inline]
6352    fn default() -> Self {
6353        Self {
6354            s_type: StructureType::EXTERNAL_FORMAT_QNX,
6355            next: ptr::null_mut(),
6356            external_format: u64::default(),
6357        }
6358    }
6359}
6360
6361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html>
6362#[repr(C)]
6363#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6364pub struct ExternalImageFormatProperties {
6365    pub s_type: StructureType,
6366    pub next: *mut c_void,
6367    pub external_memory_properties: ExternalMemoryProperties,
6368}
6369
6370impl Default for ExternalImageFormatProperties {
6371    #[inline]
6372    fn default() -> Self {
6373        Self {
6374            s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
6375            next: ptr::null_mut(),
6376            external_memory_properties: ExternalMemoryProperties::default(),
6377        }
6378    }
6379}
6380
6381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html>
6382#[repr(C)]
6383#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6384pub struct ExternalImageFormatPropertiesNV {
6385    pub image_format_properties: ImageFormatProperties,
6386    pub external_memory_features: ExternalMemoryFeatureFlagsNV,
6387    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
6388    pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
6389}
6390
6391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html>
6392#[repr(C)]
6393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6394pub struct ExternalMemoryAcquireUnmodifiedEXT {
6395    pub s_type: StructureType,
6396    pub next: *const c_void,
6397    pub acquire_unmodified_memory: Bool32,
6398}
6399
6400impl Default for ExternalMemoryAcquireUnmodifiedEXT {
6401    #[inline]
6402    fn default() -> Self {
6403        Self {
6404            s_type: StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT,
6405            next: ptr::null(),
6406            acquire_unmodified_memory: Bool32::default(),
6407        }
6408    }
6409}
6410
6411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html>
6412#[repr(C)]
6413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6414pub struct ExternalMemoryBufferCreateInfo {
6415    pub s_type: StructureType,
6416    pub next: *const c_void,
6417    pub handle_types: ExternalMemoryHandleTypeFlags,
6418}
6419
6420impl Default for ExternalMemoryBufferCreateInfo {
6421    #[inline]
6422    fn default() -> Self {
6423        Self {
6424            s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
6425            next: ptr::null(),
6426            handle_types: ExternalMemoryHandleTypeFlags::default(),
6427        }
6428    }
6429}
6430
6431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html>
6432#[repr(C)]
6433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6434pub struct ExternalMemoryImageCreateInfo {
6435    pub s_type: StructureType,
6436    pub next: *const c_void,
6437    pub handle_types: ExternalMemoryHandleTypeFlags,
6438}
6439
6440impl Default for ExternalMemoryImageCreateInfo {
6441    #[inline]
6442    fn default() -> Self {
6443        Self {
6444            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
6445            next: ptr::null(),
6446            handle_types: ExternalMemoryHandleTypeFlags::default(),
6447        }
6448    }
6449}
6450
6451/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html>
6452#[repr(C)]
6453#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6454pub struct ExternalMemoryImageCreateInfoNV {
6455    pub s_type: StructureType,
6456    pub next: *const c_void,
6457    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
6458}
6459
6460impl Default for ExternalMemoryImageCreateInfoNV {
6461    #[inline]
6462    fn default() -> Self {
6463        Self {
6464            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6465            next: ptr::null(),
6466            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
6467        }
6468    }
6469}
6470
6471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html>
6472#[repr(C)]
6473#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6474pub struct ExternalMemoryProperties {
6475    pub external_memory_features: ExternalMemoryFeatureFlags,
6476    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
6477    pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
6478}
6479
6480/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html>
6481#[repr(C)]
6482#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6483pub struct ExternalSemaphoreProperties {
6484    pub s_type: StructureType,
6485    pub next: *mut c_void,
6486    pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
6487    pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
6488    pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
6489}
6490
6491impl Default for ExternalSemaphoreProperties {
6492    #[inline]
6493    fn default() -> Self {
6494        Self {
6495            s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
6496            next: ptr::null_mut(),
6497            export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
6498            compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
6499            external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
6500        }
6501    }
6502}
6503
6504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateInfo.html>
6505#[repr(C)]
6506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6507pub struct FenceCreateInfo {
6508    pub s_type: StructureType,
6509    pub next: *const c_void,
6510    pub flags: FenceCreateFlags,
6511}
6512
6513impl Default for FenceCreateInfo {
6514    #[inline]
6515    fn default() -> Self {
6516        Self {
6517            s_type: StructureType::FENCE_CREATE_INFO,
6518            next: ptr::null(),
6519            flags: FenceCreateFlags::default(),
6520        }
6521    }
6522}
6523
6524/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html>
6525#[repr(C)]
6526#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6527pub struct FenceGetFdInfoKHR {
6528    pub s_type: StructureType,
6529    pub next: *const c_void,
6530    pub fence: Fence,
6531    pub handle_type: ExternalFenceHandleTypeFlags,
6532}
6533
6534impl Default for FenceGetFdInfoKHR {
6535    #[inline]
6536    fn default() -> Self {
6537        Self {
6538            s_type: StructureType::FENCE_GET_FD_INFO_KHR,
6539            next: ptr::null(),
6540            fence: Fence::default(),
6541            handle_type: ExternalFenceHandleTypeFlags::default(),
6542        }
6543    }
6544}
6545
6546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetSciSyncInfoNV.html>
6547#[repr(C)]
6548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6549pub struct FenceGetSciSyncInfoNV {
6550    pub s_type: StructureType,
6551    pub next: *const c_void,
6552    pub fence: Fence,
6553    pub handle_type: ExternalFenceHandleTypeFlags,
6554}
6555
6556impl Default for FenceGetSciSyncInfoNV {
6557    #[inline]
6558    fn default() -> Self {
6559        Self {
6560            s_type: StructureType::FENCE_GET_SCI_SYNC_INFO_NV,
6561            next: ptr::null(),
6562            fence: Fence::default(),
6563            handle_type: ExternalFenceHandleTypeFlags::default(),
6564        }
6565    }
6566}
6567
6568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html>
6569#[repr(C)]
6570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6571pub struct FenceGetWin32HandleInfoKHR {
6572    pub s_type: StructureType,
6573    pub next: *const c_void,
6574    pub fence: Fence,
6575    pub handle_type: ExternalFenceHandleTypeFlags,
6576}
6577
6578impl Default for FenceGetWin32HandleInfoKHR {
6579    #[inline]
6580    fn default() -> Self {
6581        Self {
6582            s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
6583            next: ptr::null(),
6584            fence: Fence::default(),
6585            handle_type: ExternalFenceHandleTypeFlags::default(),
6586        }
6587    }
6588}
6589
6590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>
6591#[repr(C)]
6592#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6593pub struct FilterCubicImageViewImageFormatPropertiesEXT {
6594    pub s_type: StructureType,
6595    pub next: *mut c_void,
6596    pub filter_cubic: Bool32,
6597    pub filter_cubic_minmax: Bool32,
6598}
6599
6600impl Default for FilterCubicImageViewImageFormatPropertiesEXT {
6601    #[inline]
6602    fn default() -> Self {
6603        Self {
6604            s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
6605            next: ptr::null_mut(),
6606            filter_cubic: Bool32::default(),
6607            filter_cubic_minmax: Bool32::default(),
6608        }
6609    }
6610}
6611
6612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties.html>
6613#[repr(C)]
6614#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6615pub struct FormatProperties {
6616    pub linear_tiling_features: FormatFeatureFlags,
6617    pub optimal_tiling_features: FormatFeatureFlags,
6618    pub buffer_features: FormatFeatureFlags,
6619}
6620
6621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2.html>
6622#[repr(C)]
6623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6624pub struct FormatProperties2 {
6625    pub s_type: StructureType,
6626    pub next: *mut c_void,
6627    pub format_properties: FormatProperties,
6628}
6629
6630impl Default for FormatProperties2 {
6631    #[inline]
6632    fn default() -> Self {
6633        Self {
6634            s_type: StructureType::FORMAT_PROPERTIES_2,
6635            next: ptr::null_mut(),
6636            format_properties: FormatProperties::default(),
6637        }
6638    }
6639}
6640
6641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3.html>
6642#[repr(C)]
6643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6644pub struct FormatProperties3 {
6645    pub s_type: StructureType,
6646    pub next: *mut c_void,
6647    pub linear_tiling_features: FormatFeatureFlags2,
6648    pub optimal_tiling_features: FormatFeatureFlags2,
6649    pub buffer_features: FormatFeatureFlags2,
6650}
6651
6652impl Default for FormatProperties3 {
6653    #[inline]
6654    fn default() -> Self {
6655        Self {
6656            s_type: StructureType::FORMAT_PROPERTIES_3,
6657            next: ptr::null_mut(),
6658            linear_tiling_features: FormatFeatureFlags2::default(),
6659            optimal_tiling_features: FormatFeatureFlags2::default(),
6660            buffer_features: FormatFeatureFlags2::default(),
6661        }
6662    }
6663}
6664
6665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>
6666#[repr(C)]
6667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6668pub struct FragmentShadingRateAttachmentInfoKHR {
6669    pub s_type: StructureType,
6670    pub next: *const c_void,
6671    pub fragment_shading_rate_attachment: *const AttachmentReference2,
6672    pub shading_rate_attachment_texel_size: Extent2D,
6673}
6674
6675impl Default for FragmentShadingRateAttachmentInfoKHR {
6676    #[inline]
6677    fn default() -> Self {
6678        Self {
6679            s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
6680            next: ptr::null(),
6681            fragment_shading_rate_attachment: ptr::null(),
6682            shading_rate_attachment_texel_size: Extent2D::default(),
6683        }
6684    }
6685}
6686
6687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html>
6688#[repr(C)]
6689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6690pub struct FrameBoundaryEXT {
6691    pub s_type: StructureType,
6692    pub next: *const c_void,
6693    pub flags: FrameBoundaryFlagsEXT,
6694    pub frame_id: u64,
6695    pub image_count: u32,
6696    pub images: *const Image,
6697    pub buffer_count: u32,
6698    pub buffers: *const Buffer,
6699    pub tag_name: u64,
6700    pub tag_size: usize,
6701    pub tag: *const c_void,
6702}
6703
6704impl Default for FrameBoundaryEXT {
6705    #[inline]
6706    fn default() -> Self {
6707        Self {
6708            s_type: StructureType::FRAME_BOUNDARY_EXT,
6709            next: ptr::null(),
6710            flags: FrameBoundaryFlagsEXT::default(),
6711            frame_id: u64::default(),
6712            image_count: u32::default(),
6713            images: ptr::null(),
6714            buffer_count: u32::default(),
6715            buffers: ptr::null(),
6716            tag_name: u64::default(),
6717            tag_size: usize::default(),
6718            tag: ptr::null(),
6719        }
6720    }
6721}
6722
6723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html>
6724#[repr(C)]
6725#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6726pub struct FramebufferAttachmentImageInfo {
6727    pub s_type: StructureType,
6728    pub next: *const c_void,
6729    pub flags: ImageCreateFlags,
6730    pub usage: ImageUsageFlags,
6731    pub width: u32,
6732    pub height: u32,
6733    pub layer_count: u32,
6734    pub view_format_count: u32,
6735    pub view_formats: *const Format,
6736}
6737
6738impl Default for FramebufferAttachmentImageInfo {
6739    #[inline]
6740    fn default() -> Self {
6741        Self {
6742            s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
6743            next: ptr::null(),
6744            flags: ImageCreateFlags::default(),
6745            usage: ImageUsageFlags::default(),
6746            width: u32::default(),
6747            height: u32::default(),
6748            layer_count: u32::default(),
6749            view_format_count: u32::default(),
6750            view_formats: ptr::null(),
6751        }
6752    }
6753}
6754
6755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html>
6756#[repr(C)]
6757#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6758pub struct FramebufferAttachmentsCreateInfo {
6759    pub s_type: StructureType,
6760    pub next: *const c_void,
6761    pub attachment_image_info_count: u32,
6762    pub attachment_image_infos: *const FramebufferAttachmentImageInfo,
6763}
6764
6765impl Default for FramebufferAttachmentsCreateInfo {
6766    #[inline]
6767    fn default() -> Self {
6768        Self {
6769            s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
6770            next: ptr::null(),
6771            attachment_image_info_count: u32::default(),
6772            attachment_image_infos: ptr::null(),
6773        }
6774    }
6775}
6776
6777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html>
6778#[repr(C)]
6779#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6780pub struct FramebufferCreateInfo {
6781    pub s_type: StructureType,
6782    pub next: *const c_void,
6783    pub flags: FramebufferCreateFlags,
6784    pub render_pass: RenderPass,
6785    pub attachment_count: u32,
6786    pub attachments: *const ImageView,
6787    pub width: u32,
6788    pub height: u32,
6789    pub layers: u32,
6790}
6791
6792impl Default for FramebufferCreateInfo {
6793    #[inline]
6794    fn default() -> Self {
6795        Self {
6796            s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
6797            next: ptr::null(),
6798            flags: FramebufferCreateFlags::default(),
6799            render_pass: RenderPass::default(),
6800            attachment_count: u32::default(),
6801            attachments: ptr::null(),
6802            width: u32::default(),
6803            height: u32::default(),
6804            layers: u32::default(),
6805        }
6806    }
6807}
6808
6809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html>
6810#[repr(C)]
6811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6812pub struct FramebufferMixedSamplesCombinationNV {
6813    pub s_type: StructureType,
6814    pub next: *mut c_void,
6815    pub coverage_reduction_mode: CoverageReductionModeNV,
6816    pub rasterization_samples: SampleCountFlags,
6817    pub depth_stencil_samples: SampleCountFlags,
6818    pub color_samples: SampleCountFlags,
6819}
6820
6821impl Default for FramebufferMixedSamplesCombinationNV {
6822    #[inline]
6823    fn default() -> Self {
6824        Self {
6825            s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
6826            next: ptr::null_mut(),
6827            coverage_reduction_mode: CoverageReductionModeNV::default(),
6828            rasterization_samples: SampleCountFlags::default(),
6829            depth_stencil_samples: SampleCountFlags::default(),
6830            color_samples: SampleCountFlags::default(),
6831        }
6832    }
6833}
6834
6835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html>
6836#[repr(C)]
6837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6838pub struct GeneratedCommandsInfoEXT {
6839    pub s_type: StructureType,
6840    pub next: *const c_void,
6841    pub shader_stages: ShaderStageFlags,
6842    pub indirect_execution_set: IndirectExecutionSetEXT,
6843    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
6844    pub indirect_address: DeviceAddress,
6845    pub indirect_address_size: DeviceSize,
6846    pub preprocess_address: DeviceAddress,
6847    pub preprocess_size: DeviceSize,
6848    pub max_sequence_count: u32,
6849    pub sequence_count_address: DeviceAddress,
6850    pub max_draw_count: u32,
6851}
6852
6853impl Default for GeneratedCommandsInfoEXT {
6854    #[inline]
6855    fn default() -> Self {
6856        Self {
6857            s_type: StructureType::GENERATED_COMMANDS_INFO_EXT,
6858            next: ptr::null(),
6859            shader_stages: ShaderStageFlags::default(),
6860            indirect_execution_set: IndirectExecutionSetEXT::default(),
6861            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
6862            indirect_address: DeviceAddress::default(),
6863            indirect_address_size: DeviceSize::default(),
6864            preprocess_address: DeviceAddress::default(),
6865            preprocess_size: DeviceSize::default(),
6866            max_sequence_count: u32::default(),
6867            sequence_count_address: DeviceAddress::default(),
6868            max_draw_count: u32::default(),
6869        }
6870    }
6871}
6872
6873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html>
6874#[repr(C)]
6875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6876pub struct GeneratedCommandsInfoNV {
6877    pub s_type: StructureType,
6878    pub next: *const c_void,
6879    pub pipeline_bind_point: PipelineBindPoint,
6880    pub pipeline: Pipeline,
6881    pub indirect_commands_layout: IndirectCommandsLayoutNV,
6882    pub stream_count: u32,
6883    pub streams: *const IndirectCommandsStreamNV,
6884    pub sequences_count: u32,
6885    pub preprocess_buffer: Buffer,
6886    pub preprocess_offset: DeviceSize,
6887    pub preprocess_size: DeviceSize,
6888    pub sequences_count_buffer: Buffer,
6889    pub sequences_count_offset: DeviceSize,
6890    pub sequences_index_buffer: Buffer,
6891    pub sequences_index_offset: DeviceSize,
6892}
6893
6894impl Default for GeneratedCommandsInfoNV {
6895    #[inline]
6896    fn default() -> Self {
6897        Self {
6898            s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
6899            next: ptr::null(),
6900            pipeline_bind_point: PipelineBindPoint::default(),
6901            pipeline: Pipeline::default(),
6902            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
6903            stream_count: u32::default(),
6904            streams: ptr::null(),
6905            sequences_count: u32::default(),
6906            preprocess_buffer: Buffer::default(),
6907            preprocess_offset: DeviceSize::default(),
6908            preprocess_size: DeviceSize::default(),
6909            sequences_count_buffer: Buffer::default(),
6910            sequences_count_offset: DeviceSize::default(),
6911            sequences_index_buffer: Buffer::default(),
6912            sequences_index_offset: DeviceSize::default(),
6913        }
6914    }
6915}
6916
6917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html>
6918#[repr(C)]
6919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6920pub struct GeneratedCommandsMemoryRequirementsInfoEXT {
6921    pub s_type: StructureType,
6922    pub next: *const c_void,
6923    pub indirect_execution_set: IndirectExecutionSetEXT,
6924    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
6925    pub max_sequence_count: u32,
6926    pub max_draw_count: u32,
6927}
6928
6929impl Default for GeneratedCommandsMemoryRequirementsInfoEXT {
6930    #[inline]
6931    fn default() -> Self {
6932        Self {
6933            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT,
6934            next: ptr::null(),
6935            indirect_execution_set: IndirectExecutionSetEXT::default(),
6936            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
6937            max_sequence_count: u32::default(),
6938            max_draw_count: u32::default(),
6939        }
6940    }
6941}
6942
6943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>
6944#[repr(C)]
6945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6946pub struct GeneratedCommandsMemoryRequirementsInfoNV {
6947    pub s_type: StructureType,
6948    pub next: *const c_void,
6949    pub pipeline_bind_point: PipelineBindPoint,
6950    pub pipeline: Pipeline,
6951    pub indirect_commands_layout: IndirectCommandsLayoutNV,
6952    pub max_sequences_count: u32,
6953}
6954
6955impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
6956    #[inline]
6957    fn default() -> Self {
6958        Self {
6959            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
6960            next: ptr::null(),
6961            pipeline_bind_point: PipelineBindPoint::default(),
6962            pipeline: Pipeline::default(),
6963            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
6964            max_sequences_count: u32::default(),
6965        }
6966    }
6967}
6968
6969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html>
6970#[repr(C)]
6971#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6972pub struct GeneratedCommandsPipelineInfoEXT {
6973    pub s_type: StructureType,
6974    pub next: *mut c_void,
6975    pub pipeline: Pipeline,
6976}
6977
6978impl Default for GeneratedCommandsPipelineInfoEXT {
6979    #[inline]
6980    fn default() -> Self {
6981        Self {
6982            s_type: StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT,
6983            next: ptr::null_mut(),
6984            pipeline: Pipeline::default(),
6985        }
6986    }
6987}
6988
6989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html>
6990#[repr(C)]
6991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6992pub struct GeneratedCommandsShaderInfoEXT {
6993    pub s_type: StructureType,
6994    pub next: *mut c_void,
6995    pub shader_count: u32,
6996    pub shaders: *const ShaderEXT,
6997}
6998
6999impl Default for GeneratedCommandsShaderInfoEXT {
7000    #[inline]
7001    fn default() -> Self {
7002        Self {
7003            s_type: StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT,
7004            next: ptr::null_mut(),
7005            shader_count: u32::default(),
7006            shaders: ptr::null(),
7007        }
7008    }
7009}
7010
7011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryAABBNV.html>
7012#[repr(C)]
7013#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7014pub struct GeometryAABBNV {
7015    pub s_type: StructureType,
7016    pub next: *const c_void,
7017    pub aabb_data: Buffer,
7018    pub num_aab_bs: u32,
7019    pub stride: u32,
7020    pub offset: DeviceSize,
7021}
7022
7023impl Default for GeometryAABBNV {
7024    #[inline]
7025    fn default() -> Self {
7026        Self {
7027            s_type: StructureType::GEOMETRY_AABB_NV,
7028            next: ptr::null(),
7029            aabb_data: Buffer::default(),
7030            num_aab_bs: u32::default(),
7031            stride: u32::default(),
7032            offset: DeviceSize::default(),
7033        }
7034    }
7035}
7036
7037/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryDataNV.html>
7038#[repr(C)]
7039#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7040pub struct GeometryDataNV {
7041    pub triangles: GeometryTrianglesNV,
7042    pub aabbs: GeometryAABBNV,
7043}
7044
7045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryNV.html>
7046#[repr(C)]
7047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7048pub struct GeometryNV {
7049    pub s_type: StructureType,
7050    pub next: *const c_void,
7051    pub geometry_type: GeometryTypeKHR,
7052    pub geometry: GeometryDataNV,
7053    pub flags: GeometryFlagsKHR,
7054}
7055
7056impl Default for GeometryNV {
7057    #[inline]
7058    fn default() -> Self {
7059        Self {
7060            s_type: StructureType::GEOMETRY_NV,
7061            next: ptr::null(),
7062            geometry_type: GeometryTypeKHR::default(),
7063            geometry: GeometryDataNV::default(),
7064            flags: GeometryFlagsKHR::default(),
7065        }
7066    }
7067}
7068
7069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html>
7070#[repr(C)]
7071#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7072pub struct GeometryTrianglesNV {
7073    pub s_type: StructureType,
7074    pub next: *const c_void,
7075    pub vertex_data: Buffer,
7076    pub vertex_offset: DeviceSize,
7077    pub vertex_count: u32,
7078    pub vertex_stride: DeviceSize,
7079    pub vertex_format: Format,
7080    pub index_data: Buffer,
7081    pub index_offset: DeviceSize,
7082    pub index_count: u32,
7083    pub index_type: IndexType,
7084    pub transform_data: Buffer,
7085    pub transform_offset: DeviceSize,
7086}
7087
7088impl Default for GeometryTrianglesNV {
7089    #[inline]
7090    fn default() -> Self {
7091        Self {
7092            s_type: StructureType::GEOMETRY_TRIANGLES_NV,
7093            next: ptr::null(),
7094            vertex_data: Buffer::default(),
7095            vertex_offset: DeviceSize::default(),
7096            vertex_count: u32::default(),
7097            vertex_stride: DeviceSize::default(),
7098            vertex_format: Format::default(),
7099            index_data: Buffer::default(),
7100            index_offset: DeviceSize::default(),
7101            index_count: u32::default(),
7102            index_type: IndexType::default(),
7103            transform_data: Buffer::default(),
7104            transform_offset: DeviceSize::default(),
7105        }
7106    }
7107}
7108
7109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html>
7110#[repr(C)]
7111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7112pub struct GetLatencyMarkerInfoNV {
7113    pub s_type: StructureType,
7114    pub next: *const c_void,
7115    pub timing_count: u32,
7116    pub timings: *mut LatencyTimingsFrameReportNV,
7117}
7118
7119impl Default for GetLatencyMarkerInfoNV {
7120    #[inline]
7121    fn default() -> Self {
7122        Self {
7123            s_type: StructureType::GET_LATENCY_MARKER_INFO_NV,
7124            next: ptr::null(),
7125            timing_count: u32::default(),
7126            timings: ptr::null_mut(),
7127        }
7128    }
7129}
7130
7131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html>
7132#[repr(C)]
7133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7134pub struct GraphicsPipelineCreateInfo {
7135    pub s_type: StructureType,
7136    pub next: *const c_void,
7137    pub flags: PipelineCreateFlags,
7138    pub stage_count: u32,
7139    pub stages: *const PipelineShaderStageCreateInfo,
7140    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
7141    pub input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
7142    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
7143    pub viewport_state: *const PipelineViewportStateCreateInfo,
7144    pub rasterization_state: *const PipelineRasterizationStateCreateInfo,
7145    pub multisample_state: *const PipelineMultisampleStateCreateInfo,
7146    pub depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
7147    pub color_blend_state: *const PipelineColorBlendStateCreateInfo,
7148    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
7149    pub layout: PipelineLayout,
7150    pub render_pass: RenderPass,
7151    pub subpass: u32,
7152    pub base_pipeline_handle: Pipeline,
7153    pub base_pipeline_index: i32,
7154}
7155
7156impl Default for GraphicsPipelineCreateInfo {
7157    #[inline]
7158    fn default() -> Self {
7159        Self {
7160            s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
7161            next: ptr::null(),
7162            flags: PipelineCreateFlags::default(),
7163            stage_count: u32::default(),
7164            stages: ptr::null(),
7165            vertex_input_state: ptr::null(),
7166            input_assembly_state: ptr::null(),
7167            tessellation_state: ptr::null(),
7168            viewport_state: ptr::null(),
7169            rasterization_state: ptr::null(),
7170            multisample_state: ptr::null(),
7171            depth_stencil_state: ptr::null(),
7172            color_blend_state: ptr::null(),
7173            dynamic_state: ptr::null(),
7174            layout: PipelineLayout::default(),
7175            render_pass: RenderPass::default(),
7176            subpass: u32::default(),
7177            base_pipeline_handle: Pipeline::default(),
7178            base_pipeline_index: i32::default(),
7179        }
7180    }
7181}
7182
7183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html>
7184#[repr(C)]
7185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7186pub struct GraphicsPipelineLibraryCreateInfoEXT {
7187    pub s_type: StructureType,
7188    pub next: *const c_void,
7189    pub flags: GraphicsPipelineLibraryFlagsEXT,
7190}
7191
7192impl Default for GraphicsPipelineLibraryCreateInfoEXT {
7193    #[inline]
7194    fn default() -> Self {
7195        Self {
7196            s_type: StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,
7197            next: ptr::null(),
7198            flags: GraphicsPipelineLibraryFlagsEXT::default(),
7199        }
7200    }
7201}
7202
7203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>
7204#[repr(C)]
7205#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7206pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
7207    pub s_type: StructureType,
7208    pub next: *const c_void,
7209    pub group_count: u32,
7210    pub groups: *const GraphicsShaderGroupCreateInfoNV,
7211    pub pipeline_count: u32,
7212    pub pipelines: *const Pipeline,
7213}
7214
7215impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
7216    #[inline]
7217    fn default() -> Self {
7218        Self {
7219            s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
7220            next: ptr::null(),
7221            group_count: u32::default(),
7222            groups: ptr::null(),
7223            pipeline_count: u32::default(),
7224            pipelines: ptr::null(),
7225        }
7226    }
7227}
7228
7229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html>
7230#[repr(C)]
7231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7232pub struct GraphicsShaderGroupCreateInfoNV {
7233    pub s_type: StructureType,
7234    pub next: *const c_void,
7235    pub stage_count: u32,
7236    pub stages: *const PipelineShaderStageCreateInfo,
7237    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
7238    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
7239}
7240
7241impl Default for GraphicsShaderGroupCreateInfoNV {
7242    #[inline]
7243    fn default() -> Self {
7244        Self {
7245            s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
7246            next: ptr::null(),
7247            stage_count: u32::default(),
7248            stages: ptr::null(),
7249            vertex_input_state: ptr::null(),
7250            tessellation_state: ptr::null(),
7251        }
7252    }
7253}
7254
7255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html>
7256#[repr(C)]
7257#[derive(Copy, Clone, Debug, PartialEq)]
7258pub struct HdrMetadataEXT {
7259    pub s_type: StructureType,
7260    pub next: *const c_void,
7261    pub display_primary_red: XYColorEXT,
7262    pub display_primary_green: XYColorEXT,
7263    pub display_primary_blue: XYColorEXT,
7264    pub white_point: XYColorEXT,
7265    pub max_luminance: f32,
7266    pub min_luminance: f32,
7267    pub max_content_light_level: f32,
7268    pub max_frame_average_light_level: f32,
7269}
7270
7271impl Default for HdrMetadataEXT {
7272    #[inline]
7273    fn default() -> Self {
7274        Self {
7275            s_type: StructureType::HDR_METADATA_EXT,
7276            next: ptr::null(),
7277            display_primary_red: XYColorEXT::default(),
7278            display_primary_green: XYColorEXT::default(),
7279            display_primary_blue: XYColorEXT::default(),
7280            white_point: XYColorEXT::default(),
7281            max_luminance: f32::default(),
7282            min_luminance: f32::default(),
7283            max_content_light_level: f32::default(),
7284            max_frame_average_light_level: f32::default(),
7285        }
7286    }
7287}
7288
7289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html>
7290#[repr(C)]
7291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7292pub struct HdrVividDynamicMetadataHUAWEI {
7293    pub s_type: StructureType,
7294    pub next: *const c_void,
7295    pub dynamic_metadata_size: usize,
7296    pub dynamic_metadata: *const c_void,
7297}
7298
7299impl Default for HdrVividDynamicMetadataHUAWEI {
7300    #[inline]
7301    fn default() -> Self {
7302        Self {
7303            s_type: StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI,
7304            next: ptr::null(),
7305            dynamic_metadata_size: usize::default(),
7306            dynamic_metadata: ptr::null(),
7307        }
7308    }
7309}
7310
7311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html>
7312#[repr(C)]
7313#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7314pub struct HeadlessSurfaceCreateInfoEXT {
7315    pub s_type: StructureType,
7316    pub next: *const c_void,
7317    pub flags: HeadlessSurfaceCreateFlagsEXT,
7318}
7319
7320impl Default for HeadlessSurfaceCreateInfoEXT {
7321    #[inline]
7322    fn default() -> Self {
7323        Self {
7324            s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
7325            next: ptr::null(),
7326            flags: HeadlessSurfaceCreateFlagsEXT::default(),
7327        }
7328    }
7329}
7330
7331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html>
7332#[repr(C)]
7333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7334pub struct HostImageCopyDevicePerformanceQuery {
7335    pub s_type: StructureType,
7336    pub next: *mut c_void,
7337    pub optimal_device_access: Bool32,
7338    pub identical_memory_layout: Bool32,
7339}
7340
7341impl Default for HostImageCopyDevicePerformanceQuery {
7342    #[inline]
7343    fn default() -> Self {
7344        Self {
7345            s_type: StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,
7346            next: ptr::null_mut(),
7347            optimal_device_access: Bool32::default(),
7348            identical_memory_layout: Bool32::default(),
7349        }
7350    }
7351}
7352
7353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html>
7354#[repr(C)]
7355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7356pub struct HostImageLayoutTransitionInfo {
7357    pub s_type: StructureType,
7358    pub next: *const c_void,
7359    pub image: Image,
7360    pub old_layout: ImageLayout,
7361    pub new_layout: ImageLayout,
7362    pub subresource_range: ImageSubresourceRange,
7363}
7364
7365impl Default for HostImageLayoutTransitionInfo {
7366    #[inline]
7367    fn default() -> Self {
7368        Self {
7369            s_type: StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO,
7370            next: ptr::null(),
7371            image: Image::default(),
7372            old_layout: ImageLayout::default(),
7373            new_layout: ImageLayout::default(),
7374            subresource_range: ImageSubresourceRange::default(),
7375        }
7376    }
7377}
7378
7379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html>
7380#[repr(C)]
7381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7382pub struct IOSSurfaceCreateInfoMVK {
7383    pub s_type: StructureType,
7384    pub next: *const c_void,
7385    pub flags: IOSSurfaceCreateFlagsMVK,
7386    pub view: *const c_void,
7387}
7388
7389impl Default for IOSSurfaceCreateInfoMVK {
7390    #[inline]
7391    fn default() -> Self {
7392        Self {
7393            s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
7394            next: ptr::null(),
7395            flags: IOSSurfaceCreateFlagsMVK::default(),
7396            view: ptr::null(),
7397        }
7398    }
7399}
7400
7401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html>
7402#[repr(C)]
7403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7404pub struct ImageAlignmentControlCreateInfoMESA {
7405    pub s_type: StructureType,
7406    pub next: *const c_void,
7407    pub maximum_requested_alignment: u32,
7408}
7409
7410impl Default for ImageAlignmentControlCreateInfoMESA {
7411    #[inline]
7412    fn default() -> Self {
7413        Self {
7414            s_type: StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA,
7415            next: ptr::null(),
7416            maximum_requested_alignment: u32::default(),
7417        }
7418    }
7419}
7420
7421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit.html>
7422#[repr(C)]
7423#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7424pub struct ImageBlit {
7425    pub src_subresource: ImageSubresourceLayers,
7426    pub src_offsets: [Offset3D; 2],
7427    pub dst_subresource: ImageSubresourceLayers,
7428    pub dst_offsets: [Offset3D; 2],
7429}
7430
7431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2.html>
7432#[repr(C)]
7433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7434pub struct ImageBlit2 {
7435    pub s_type: StructureType,
7436    pub next: *const c_void,
7437    pub src_subresource: ImageSubresourceLayers,
7438    pub src_offsets: [Offset3D; 2],
7439    pub dst_subresource: ImageSubresourceLayers,
7440    pub dst_offsets: [Offset3D; 2],
7441}
7442
7443impl Default for ImageBlit2 {
7444    #[inline]
7445    fn default() -> Self {
7446        Self {
7447            s_type: StructureType::IMAGE_BLIT_2,
7448            next: ptr::null(),
7449            src_subresource: ImageSubresourceLayers::default(),
7450            src_offsets: [Offset3D::default(); 2],
7451            dst_subresource: ImageSubresourceLayers::default(),
7452            dst_offsets: [Offset3D::default(); 2],
7453        }
7454    }
7455}
7456
7457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html>
7458#[repr(C)]
7459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7460pub struct ImageCaptureDescriptorDataInfoEXT {
7461    pub s_type: StructureType,
7462    pub next: *const c_void,
7463    pub image: Image,
7464}
7465
7466impl Default for ImageCaptureDescriptorDataInfoEXT {
7467    #[inline]
7468    fn default() -> Self {
7469        Self {
7470            s_type: StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
7471            next: ptr::null(),
7472            image: Image::default(),
7473        }
7474    }
7475}
7476
7477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html>
7478#[repr(C)]
7479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7480pub struct ImageCompressionControlEXT {
7481    pub s_type: StructureType,
7482    pub next: *const c_void,
7483    pub flags: ImageCompressionFlagsEXT,
7484    pub compression_control_plane_count: u32,
7485    pub fixed_rate_flags: *mut ImageCompressionFixedRateFlagsEXT,
7486}
7487
7488impl Default for ImageCompressionControlEXT {
7489    #[inline]
7490    fn default() -> Self {
7491        Self {
7492            s_type: StructureType::IMAGE_COMPRESSION_CONTROL_EXT,
7493            next: ptr::null(),
7494            flags: ImageCompressionFlagsEXT::default(),
7495            compression_control_plane_count: u32::default(),
7496            fixed_rate_flags: ptr::null_mut(),
7497        }
7498    }
7499}
7500
7501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html>
7502#[repr(C)]
7503#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7504pub struct ImageCompressionPropertiesEXT {
7505    pub s_type: StructureType,
7506    pub next: *mut c_void,
7507    pub image_compression_flags: ImageCompressionFlagsEXT,
7508    pub image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT,
7509}
7510
7511impl Default for ImageCompressionPropertiesEXT {
7512    #[inline]
7513    fn default() -> Self {
7514        Self {
7515            s_type: StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT,
7516            next: ptr::null_mut(),
7517            image_compression_flags: ImageCompressionFlagsEXT::default(),
7518            image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT::default(),
7519        }
7520    }
7521}
7522
7523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html>
7524#[repr(C)]
7525#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7526pub struct ImageConstraintsInfoFUCHSIA {
7527    pub s_type: StructureType,
7528    pub next: *const c_void,
7529    pub format_constraints_count: u32,
7530    pub format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
7531    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
7532    pub flags: ImageConstraintsInfoFlagsFUCHSIA,
7533}
7534
7535impl Default for ImageConstraintsInfoFUCHSIA {
7536    #[inline]
7537    fn default() -> Self {
7538        Self {
7539            s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
7540            next: ptr::null(),
7541            format_constraints_count: u32::default(),
7542            format_constraints: ptr::null(),
7543            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
7544            flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
7545        }
7546    }
7547}
7548
7549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy.html>
7550#[repr(C)]
7551#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7552pub struct ImageCopy {
7553    pub src_subresource: ImageSubresourceLayers,
7554    pub src_offset: Offset3D,
7555    pub dst_subresource: ImageSubresourceLayers,
7556    pub dst_offset: Offset3D,
7557    pub extent: Extent3D,
7558}
7559
7560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2.html>
7561#[repr(C)]
7562#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7563pub struct ImageCopy2 {
7564    pub s_type: StructureType,
7565    pub next: *const c_void,
7566    pub src_subresource: ImageSubresourceLayers,
7567    pub src_offset: Offset3D,
7568    pub dst_subresource: ImageSubresourceLayers,
7569    pub dst_offset: Offset3D,
7570    pub extent: Extent3D,
7571}
7572
7573impl Default for ImageCopy2 {
7574    #[inline]
7575    fn default() -> Self {
7576        Self {
7577            s_type: StructureType::IMAGE_COPY_2,
7578            next: ptr::null(),
7579            src_subresource: ImageSubresourceLayers::default(),
7580            src_offset: Offset3D::default(),
7581            dst_subresource: ImageSubresourceLayers::default(),
7582            dst_offset: Offset3D::default(),
7583            extent: Extent3D::default(),
7584        }
7585    }
7586}
7587
7588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateInfo.html>
7589#[repr(C)]
7590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7591pub struct ImageCreateInfo {
7592    pub s_type: StructureType,
7593    pub next: *const c_void,
7594    pub flags: ImageCreateFlags,
7595    pub image_type: ImageType,
7596    pub format: Format,
7597    pub extent: Extent3D,
7598    pub mip_levels: u32,
7599    pub array_layers: u32,
7600    pub samples: SampleCountFlags,
7601    pub tiling: ImageTiling,
7602    pub usage: ImageUsageFlags,
7603    pub sharing_mode: SharingMode,
7604    pub queue_family_index_count: u32,
7605    pub queue_family_indices: *const u32,
7606    pub initial_layout: ImageLayout,
7607}
7608
7609impl Default for ImageCreateInfo {
7610    #[inline]
7611    fn default() -> Self {
7612        Self {
7613            s_type: StructureType::IMAGE_CREATE_INFO,
7614            next: ptr::null(),
7615            flags: ImageCreateFlags::default(),
7616            image_type: ImageType::default(),
7617            format: Format::default(),
7618            extent: Extent3D::default(),
7619            mip_levels: u32::default(),
7620            array_layers: u32::default(),
7621            samples: SampleCountFlags::default(),
7622            tiling: ImageTiling::default(),
7623            usage: ImageUsageFlags::default(),
7624            sharing_mode: SharingMode::default(),
7625            queue_family_index_count: u32::default(),
7626            queue_family_indices: ptr::null(),
7627            initial_layout: ImageLayout::default(),
7628        }
7629    }
7630}
7631
7632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>
7633#[repr(C)]
7634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7635pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
7636    pub s_type: StructureType,
7637    pub next: *const c_void,
7638    pub drm_format_modifier: u64,
7639    pub drm_format_modifier_plane_count: u32,
7640    pub plane_layouts: *const SubresourceLayout,
7641}
7642
7643impl Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
7644    #[inline]
7645    fn default() -> Self {
7646        Self {
7647            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
7648            next: ptr::null(),
7649            drm_format_modifier: u64::default(),
7650            drm_format_modifier_plane_count: u32::default(),
7651            plane_layouts: ptr::null(),
7652        }
7653    }
7654}
7655
7656/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>
7657#[repr(C)]
7658#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7659pub struct ImageDrmFormatModifierListCreateInfoEXT {
7660    pub s_type: StructureType,
7661    pub next: *const c_void,
7662    pub drm_format_modifier_count: u32,
7663    pub drm_format_modifiers: *const u64,
7664}
7665
7666impl Default for ImageDrmFormatModifierListCreateInfoEXT {
7667    #[inline]
7668    fn default() -> Self {
7669        Self {
7670            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
7671            next: ptr::null(),
7672            drm_format_modifier_count: u32::default(),
7673            drm_format_modifiers: ptr::null(),
7674        }
7675    }
7676}
7677
7678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html>
7679#[repr(C)]
7680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7681pub struct ImageDrmFormatModifierPropertiesEXT {
7682    pub s_type: StructureType,
7683    pub next: *mut c_void,
7684    pub drm_format_modifier: u64,
7685}
7686
7687impl Default for ImageDrmFormatModifierPropertiesEXT {
7688    #[inline]
7689    fn default() -> Self {
7690        Self {
7691            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
7692            next: ptr::null_mut(),
7693            drm_format_modifier: u64::default(),
7694        }
7695    }
7696}
7697
7698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>
7699#[repr(C)]
7700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7701pub struct ImageFormatConstraintsInfoFUCHSIA {
7702    pub s_type: StructureType,
7703    pub next: *const c_void,
7704    pub image_create_info: ImageCreateInfo,
7705    pub required_format_features: FormatFeatureFlags,
7706    pub flags: ImageFormatConstraintsFlagsFUCHSIA,
7707    pub sysmem_pixel_format: u64,
7708    pub color_space_count: u32,
7709    pub color_spaces: *const SysmemColorSpaceFUCHSIA,
7710}
7711
7712impl Default for ImageFormatConstraintsInfoFUCHSIA {
7713    #[inline]
7714    fn default() -> Self {
7715        Self {
7716            s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
7717            next: ptr::null(),
7718            image_create_info: ImageCreateInfo::default(),
7719            required_format_features: FormatFeatureFlags::default(),
7720            flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
7721            sysmem_pixel_format: u64::default(),
7722            color_space_count: u32::default(),
7723            color_spaces: ptr::null(),
7724        }
7725    }
7726}
7727
7728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html>
7729#[repr(C)]
7730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7731pub struct ImageFormatListCreateInfo {
7732    pub s_type: StructureType,
7733    pub next: *const c_void,
7734    pub view_format_count: u32,
7735    pub view_formats: *const Format,
7736}
7737
7738impl Default for ImageFormatListCreateInfo {
7739    #[inline]
7740    fn default() -> Self {
7741        Self {
7742            s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
7743            next: ptr::null(),
7744            view_format_count: u32::default(),
7745            view_formats: ptr::null(),
7746        }
7747    }
7748}
7749
7750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties.html>
7751#[repr(C)]
7752#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7753pub struct ImageFormatProperties {
7754    pub max_extent: Extent3D,
7755    pub max_mip_levels: u32,
7756    pub max_array_layers: u32,
7757    pub sample_counts: SampleCountFlags,
7758    pub max_resource_size: DeviceSize,
7759}
7760
7761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2.html>
7762#[repr(C)]
7763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7764pub struct ImageFormatProperties2 {
7765    pub s_type: StructureType,
7766    pub next: *mut c_void,
7767    pub image_format_properties: ImageFormatProperties,
7768}
7769
7770impl Default for ImageFormatProperties2 {
7771    #[inline]
7772    fn default() -> Self {
7773        Self {
7774            s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
7775            next: ptr::null_mut(),
7776            image_format_properties: ImageFormatProperties::default(),
7777        }
7778    }
7779}
7780
7781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html>
7782#[repr(C)]
7783#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7784pub struct ImageMemoryBarrier {
7785    pub s_type: StructureType,
7786    pub next: *const c_void,
7787    pub src_access_mask: AccessFlags,
7788    pub dst_access_mask: AccessFlags,
7789    pub old_layout: ImageLayout,
7790    pub new_layout: ImageLayout,
7791    pub src_queue_family_index: u32,
7792    pub dst_queue_family_index: u32,
7793    pub image: Image,
7794    pub subresource_range: ImageSubresourceRange,
7795}
7796
7797impl Default for ImageMemoryBarrier {
7798    #[inline]
7799    fn default() -> Self {
7800        Self {
7801            s_type: StructureType::IMAGE_MEMORY_BARRIER,
7802            next: ptr::null(),
7803            src_access_mask: AccessFlags::default(),
7804            dst_access_mask: AccessFlags::default(),
7805            old_layout: ImageLayout::default(),
7806            new_layout: ImageLayout::default(),
7807            src_queue_family_index: u32::default(),
7808            dst_queue_family_index: u32::default(),
7809            image: Image::default(),
7810            subresource_range: ImageSubresourceRange::default(),
7811        }
7812    }
7813}
7814
7815/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html>
7816#[repr(C)]
7817#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7818pub struct ImageMemoryBarrier2 {
7819    pub s_type: StructureType,
7820    pub next: *const c_void,
7821    pub src_stage_mask: PipelineStageFlags2,
7822    pub src_access_mask: AccessFlags2,
7823    pub dst_stage_mask: PipelineStageFlags2,
7824    pub dst_access_mask: AccessFlags2,
7825    pub old_layout: ImageLayout,
7826    pub new_layout: ImageLayout,
7827    pub src_queue_family_index: u32,
7828    pub dst_queue_family_index: u32,
7829    pub image: Image,
7830    pub subresource_range: ImageSubresourceRange,
7831}
7832
7833impl Default for ImageMemoryBarrier2 {
7834    #[inline]
7835    fn default() -> Self {
7836        Self {
7837            s_type: StructureType::IMAGE_MEMORY_BARRIER_2,
7838            next: ptr::null(),
7839            src_stage_mask: PipelineStageFlags2::default(),
7840            src_access_mask: AccessFlags2::default(),
7841            dst_stage_mask: PipelineStageFlags2::default(),
7842            dst_access_mask: AccessFlags2::default(),
7843            old_layout: ImageLayout::default(),
7844            new_layout: ImageLayout::default(),
7845            src_queue_family_index: u32::default(),
7846            dst_queue_family_index: u32::default(),
7847            image: Image::default(),
7848            subresource_range: ImageSubresourceRange::default(),
7849        }
7850    }
7851}
7852
7853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html>
7854#[repr(C)]
7855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7856pub struct ImageMemoryRequirementsInfo2 {
7857    pub s_type: StructureType,
7858    pub next: *const c_void,
7859    pub image: Image,
7860}
7861
7862impl Default for ImageMemoryRequirementsInfo2 {
7863    #[inline]
7864    fn default() -> Self {
7865        Self {
7866            s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
7867            next: ptr::null(),
7868            image: Image::default(),
7869        }
7870    }
7871}
7872
7873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>
7874#[repr(C)]
7875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7876pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
7877    pub s_type: StructureType,
7878    pub next: *const c_void,
7879    pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
7880    pub image_pipe_handle: zx_handle_t,
7881}
7882
7883impl Default for ImagePipeSurfaceCreateInfoFUCHSIA {
7884    #[inline]
7885    fn default() -> Self {
7886        Self {
7887            s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
7888            next: ptr::null(),
7889            flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
7890            image_pipe_handle: zx_handle_t::default(),
7891        }
7892    }
7893}
7894
7895/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html>
7896#[repr(C)]
7897#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7898pub struct ImagePlaneMemoryRequirementsInfo {
7899    pub s_type: StructureType,
7900    pub next: *const c_void,
7901    pub plane_aspect: ImageAspectFlags,
7902}
7903
7904impl Default for ImagePlaneMemoryRequirementsInfo {
7905    #[inline]
7906    fn default() -> Self {
7907        Self {
7908            s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
7909            next: ptr::null(),
7910            plane_aspect: ImageAspectFlags::default(),
7911        }
7912    }
7913}
7914
7915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve.html>
7916#[repr(C)]
7917#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7918pub struct ImageResolve {
7919    pub src_subresource: ImageSubresourceLayers,
7920    pub src_offset: Offset3D,
7921    pub dst_subresource: ImageSubresourceLayers,
7922    pub dst_offset: Offset3D,
7923    pub extent: Extent3D,
7924}
7925
7926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2.html>
7927#[repr(C)]
7928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7929pub struct ImageResolve2 {
7930    pub s_type: StructureType,
7931    pub next: *const c_void,
7932    pub src_subresource: ImageSubresourceLayers,
7933    pub src_offset: Offset3D,
7934    pub dst_subresource: ImageSubresourceLayers,
7935    pub dst_offset: Offset3D,
7936    pub extent: Extent3D,
7937}
7938
7939impl Default for ImageResolve2 {
7940    #[inline]
7941    fn default() -> Self {
7942        Self {
7943            s_type: StructureType::IMAGE_RESOLVE_2,
7944            next: ptr::null(),
7945            src_subresource: ImageSubresourceLayers::default(),
7946            src_offset: Offset3D::default(),
7947            dst_subresource: ImageSubresourceLayers::default(),
7948            dst_offset: Offset3D::default(),
7949            extent: Extent3D::default(),
7950        }
7951    }
7952}
7953
7954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html>
7955#[repr(C)]
7956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7957pub struct ImageSparseMemoryRequirementsInfo2 {
7958    pub s_type: StructureType,
7959    pub next: *const c_void,
7960    pub image: Image,
7961}
7962
7963impl Default for ImageSparseMemoryRequirementsInfo2 {
7964    #[inline]
7965    fn default() -> Self {
7966        Self {
7967            s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
7968            next: ptr::null(),
7969            image: Image::default(),
7970        }
7971    }
7972}
7973
7974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html>
7975#[repr(C)]
7976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7977pub struct ImageStencilUsageCreateInfo {
7978    pub s_type: StructureType,
7979    pub next: *const c_void,
7980    pub stencil_usage: ImageUsageFlags,
7981}
7982
7983impl Default for ImageStencilUsageCreateInfo {
7984    #[inline]
7985    fn default() -> Self {
7986        Self {
7987            s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
7988            next: ptr::null(),
7989            stencil_usage: ImageUsageFlags::default(),
7990        }
7991    }
7992}
7993
7994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource.html>
7995#[repr(C)]
7996#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7997pub struct ImageSubresource {
7998    pub aspect_mask: ImageAspectFlags,
7999    pub mip_level: u32,
8000    pub array_layer: u32,
8001}
8002
8003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2.html>
8004#[repr(C)]
8005#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8006pub struct ImageSubresource2 {
8007    pub s_type: StructureType,
8008    pub next: *mut c_void,
8009    pub image_subresource: ImageSubresource,
8010}
8011
8012impl Default for ImageSubresource2 {
8013    #[inline]
8014    fn default() -> Self {
8015        Self {
8016            s_type: StructureType::IMAGE_SUBRESOURCE_2,
8017            next: ptr::null_mut(),
8018            image_subresource: ImageSubresource::default(),
8019        }
8020    }
8021}
8022
8023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html>
8024#[repr(C)]
8025#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8026pub struct ImageSubresourceLayers {
8027    pub aspect_mask: ImageAspectFlags,
8028    pub mip_level: u32,
8029    pub base_array_layer: u32,
8030    pub layer_count: u32,
8031}
8032
8033/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceRange.html>
8034#[repr(C)]
8035#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8036pub struct ImageSubresourceRange {
8037    pub aspect_mask: ImageAspectFlags,
8038    pub base_mip_level: u32,
8039    pub level_count: u32,
8040    pub base_array_layer: u32,
8041    pub layer_count: u32,
8042}
8043
8044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html>
8045#[repr(C)]
8046#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8047pub struct ImageSwapchainCreateInfoKHR {
8048    pub s_type: StructureType,
8049    pub next: *const c_void,
8050    pub swapchain: SwapchainKHR,
8051}
8052
8053impl Default for ImageSwapchainCreateInfoKHR {
8054    #[inline]
8055    fn default() -> Self {
8056        Self {
8057            s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
8058            next: ptr::null(),
8059            swapchain: SwapchainKHR::default(),
8060        }
8061    }
8062}
8063
8064/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html>
8065#[repr(C)]
8066#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8067pub struct ImageToMemoryCopy {
8068    pub s_type: StructureType,
8069    pub next: *const c_void,
8070    pub host_pointer: *mut c_void,
8071    pub memory_row_length: u32,
8072    pub memory_image_height: u32,
8073    pub image_subresource: ImageSubresourceLayers,
8074    pub image_offset: Offset3D,
8075    pub image_extent: Extent3D,
8076}
8077
8078impl Default for ImageToMemoryCopy {
8079    #[inline]
8080    fn default() -> Self {
8081        Self {
8082            s_type: StructureType::IMAGE_TO_MEMORY_COPY,
8083            next: ptr::null(),
8084            host_pointer: ptr::null_mut(),
8085            memory_row_length: u32::default(),
8086            memory_image_height: u32::default(),
8087            image_subresource: ImageSubresourceLayers::default(),
8088            image_offset: Offset3D::default(),
8089            image_extent: Extent3D::default(),
8090        }
8091    }
8092}
8093
8094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html>
8095#[repr(C)]
8096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8097pub struct ImageViewASTCDecodeModeEXT {
8098    pub s_type: StructureType,
8099    pub next: *const c_void,
8100    pub decode_mode: Format,
8101}
8102
8103impl Default for ImageViewASTCDecodeModeEXT {
8104    #[inline]
8105    fn default() -> Self {
8106        Self {
8107            s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
8108            next: ptr::null(),
8109            decode_mode: Format::default(),
8110        }
8111    }
8112}
8113
8114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html>
8115#[repr(C)]
8116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8117pub struct ImageViewAddressPropertiesNVX {
8118    pub s_type: StructureType,
8119    pub next: *mut c_void,
8120    pub device_address: DeviceAddress,
8121    pub size: DeviceSize,
8122}
8123
8124impl Default for ImageViewAddressPropertiesNVX {
8125    #[inline]
8126    fn default() -> Self {
8127        Self {
8128            s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
8129            next: ptr::null_mut(),
8130            device_address: DeviceAddress::default(),
8131            size: DeviceSize::default(),
8132        }
8133    }
8134}
8135
8136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html>
8137#[repr(C)]
8138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8139pub struct ImageViewCaptureDescriptorDataInfoEXT {
8140    pub s_type: StructureType,
8141    pub next: *const c_void,
8142    pub image_view: ImageView,
8143}
8144
8145impl Default for ImageViewCaptureDescriptorDataInfoEXT {
8146    #[inline]
8147    fn default() -> Self {
8148        Self {
8149            s_type: StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
8150            next: ptr::null(),
8151            image_view: ImageView::default(),
8152        }
8153    }
8154}
8155
8156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html>
8157#[repr(C)]
8158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8159pub struct ImageViewCreateInfo {
8160    pub s_type: StructureType,
8161    pub next: *const c_void,
8162    pub flags: ImageViewCreateFlags,
8163    pub image: Image,
8164    pub view_type: ImageViewType,
8165    pub format: Format,
8166    pub components: ComponentMapping,
8167    pub subresource_range: ImageSubresourceRange,
8168}
8169
8170impl Default for ImageViewCreateInfo {
8171    #[inline]
8172    fn default() -> Self {
8173        Self {
8174            s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
8175            next: ptr::null(),
8176            flags: ImageViewCreateFlags::default(),
8177            image: Image::default(),
8178            view_type: ImageViewType::default(),
8179            format: Format::default(),
8180            components: ComponentMapping::default(),
8181            subresource_range: ImageSubresourceRange::default(),
8182        }
8183    }
8184}
8185
8186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html>
8187#[repr(C)]
8188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8189pub struct ImageViewHandleInfoNVX {
8190    pub s_type: StructureType,
8191    pub next: *const c_void,
8192    pub image_view: ImageView,
8193    pub descriptor_type: DescriptorType,
8194    pub sampler: Sampler,
8195}
8196
8197impl Default for ImageViewHandleInfoNVX {
8198    #[inline]
8199    fn default() -> Self {
8200        Self {
8201            s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
8202            next: ptr::null(),
8203            image_view: ImageView::default(),
8204            descriptor_type: DescriptorType::default(),
8205            sampler: Sampler::default(),
8206        }
8207    }
8208}
8209
8210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html>
8211#[repr(C)]
8212#[derive(Copy, Clone, Debug, PartialEq)]
8213pub struct ImageViewMinLodCreateInfoEXT {
8214    pub s_type: StructureType,
8215    pub next: *const c_void,
8216    pub min_lod: f32,
8217}
8218
8219impl Default for ImageViewMinLodCreateInfoEXT {
8220    #[inline]
8221    fn default() -> Self {
8222        Self {
8223            s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
8224            next: ptr::null(),
8225            min_lod: f32::default(),
8226        }
8227    }
8228}
8229
8230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html>
8231#[repr(C)]
8232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8233pub struct ImageViewSampleWeightCreateInfoQCOM {
8234    pub s_type: StructureType,
8235    pub next: *const c_void,
8236    pub filter_center: Offset2D,
8237    pub filter_size: Extent2D,
8238    pub num_phases: u32,
8239}
8240
8241impl Default for ImageViewSampleWeightCreateInfoQCOM {
8242    #[inline]
8243    fn default() -> Self {
8244        Self {
8245            s_type: StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM,
8246            next: ptr::null(),
8247            filter_center: Offset2D::default(),
8248            filter_size: Extent2D::default(),
8249            num_phases: u32::default(),
8250        }
8251    }
8252}
8253
8254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html>
8255#[repr(C)]
8256#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8257pub struct ImageViewSlicedCreateInfoEXT {
8258    pub s_type: StructureType,
8259    pub next: *const c_void,
8260    pub slice_offset: u32,
8261    pub slice_count: u32,
8262}
8263
8264impl Default for ImageViewSlicedCreateInfoEXT {
8265    #[inline]
8266    fn default() -> Self {
8267        Self {
8268            s_type: StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT,
8269            next: ptr::null(),
8270            slice_offset: u32::default(),
8271            slice_count: u32::default(),
8272        }
8273    }
8274}
8275
8276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html>
8277#[repr(C)]
8278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8279pub struct ImageViewUsageCreateInfo {
8280    pub s_type: StructureType,
8281    pub next: *const c_void,
8282    pub usage: ImageUsageFlags,
8283}
8284
8285impl Default for ImageViewUsageCreateInfo {
8286    #[inline]
8287    fn default() -> Self {
8288        Self {
8289            s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
8290            next: ptr::null(),
8291            usage: ImageUsageFlags::default(),
8292        }
8293    }
8294}
8295
8296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>
8297#[repr(C)]
8298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8299pub struct ImportAndroidHardwareBufferInfoANDROID {
8300    pub s_type: StructureType,
8301    pub next: *const c_void,
8302    pub buffer: *mut AHardwareBuffer,
8303}
8304
8305impl Default for ImportAndroidHardwareBufferInfoANDROID {
8306    #[inline]
8307    fn default() -> Self {
8308        Self {
8309            s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
8310            next: ptr::null(),
8311            buffer: ptr::null_mut(),
8312        }
8313    }
8314}
8315
8316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html>
8317#[repr(C)]
8318#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8319pub struct ImportFenceFdInfoKHR {
8320    pub s_type: StructureType,
8321    pub next: *const c_void,
8322    pub fence: Fence,
8323    pub flags: FenceImportFlags,
8324    pub handle_type: ExternalFenceHandleTypeFlags,
8325    pub fd: c_int,
8326}
8327
8328impl Default for ImportFenceFdInfoKHR {
8329    #[inline]
8330    fn default() -> Self {
8331        Self {
8332            s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
8333            next: ptr::null(),
8334            fence: Fence::default(),
8335            flags: FenceImportFlags::default(),
8336            handle_type: ExternalFenceHandleTypeFlags::default(),
8337            fd: c_int::default(),
8338        }
8339    }
8340}
8341
8342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceSciSyncInfoNV.html>
8343#[repr(C)]
8344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8345pub struct ImportFenceSciSyncInfoNV {
8346    pub s_type: StructureType,
8347    pub next: *const c_void,
8348    pub fence: Fence,
8349    pub handle_type: ExternalFenceHandleTypeFlags,
8350    pub handle: *mut c_void,
8351}
8352
8353impl Default for ImportFenceSciSyncInfoNV {
8354    #[inline]
8355    fn default() -> Self {
8356        Self {
8357            s_type: StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV,
8358            next: ptr::null(),
8359            fence: Fence::default(),
8360            handle_type: ExternalFenceHandleTypeFlags::default(),
8361            handle: ptr::null_mut(),
8362        }
8363    }
8364}
8365
8366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html>
8367#[repr(C)]
8368#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8369pub struct ImportFenceWin32HandleInfoKHR {
8370    pub s_type: StructureType,
8371    pub next: *const c_void,
8372    pub fence: Fence,
8373    pub flags: FenceImportFlags,
8374    pub handle_type: ExternalFenceHandleTypeFlags,
8375    pub handle: HANDLE,
8376    pub name: LPCWSTR,
8377}
8378
8379impl Default for ImportFenceWin32HandleInfoKHR {
8380    #[inline]
8381    fn default() -> Self {
8382        Self {
8383            s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
8384            next: ptr::null(),
8385            fence: Fence::default(),
8386            flags: FenceImportFlags::default(),
8387            handle_type: ExternalFenceHandleTypeFlags::default(),
8388            handle: ptr::null_mut(),
8389            name: ptr::null_mut(),
8390        }
8391    }
8392}
8393
8394/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>
8395#[repr(C)]
8396#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8397pub struct ImportMemoryBufferCollectionFUCHSIA {
8398    pub s_type: StructureType,
8399    pub next: *const c_void,
8400    pub collection: BufferCollectionFUCHSIA,
8401    pub index: u32,
8402}
8403
8404impl Default for ImportMemoryBufferCollectionFUCHSIA {
8405    #[inline]
8406    fn default() -> Self {
8407        Self {
8408            s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
8409            next: ptr::null(),
8410            collection: BufferCollectionFUCHSIA::default(),
8411            index: u32::default(),
8412        }
8413    }
8414}
8415
8416/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html>
8417#[repr(C)]
8418#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8419pub struct ImportMemoryFdInfoKHR {
8420    pub s_type: StructureType,
8421    pub next: *const c_void,
8422    pub handle_type: ExternalMemoryHandleTypeFlags,
8423    pub fd: c_int,
8424}
8425
8426impl Default for ImportMemoryFdInfoKHR {
8427    #[inline]
8428    fn default() -> Self {
8429        Self {
8430            s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
8431            next: ptr::null(),
8432            handle_type: ExternalMemoryHandleTypeFlags::default(),
8433            fd: c_int::default(),
8434        }
8435    }
8436}
8437
8438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html>
8439#[repr(C)]
8440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8441pub struct ImportMemoryHostPointerInfoEXT {
8442    pub s_type: StructureType,
8443    pub next: *const c_void,
8444    pub handle_type: ExternalMemoryHandleTypeFlags,
8445    pub host_pointer: *mut c_void,
8446}
8447
8448impl Default for ImportMemoryHostPointerInfoEXT {
8449    #[inline]
8450    fn default() -> Self {
8451        Self {
8452            s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
8453            next: ptr::null(),
8454            handle_type: ExternalMemoryHandleTypeFlags::default(),
8455            host_pointer: ptr::null_mut(),
8456        }
8457    }
8458}
8459
8460/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html>
8461#[repr(C)]
8462#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8463pub struct ImportMemoryMetalHandleInfoEXT {
8464    pub s_type: StructureType,
8465    pub next: *const c_void,
8466    pub handle_type: ExternalMemoryHandleTypeFlags,
8467    pub handle: *mut c_void,
8468}
8469
8470impl Default for ImportMemoryMetalHandleInfoEXT {
8471    #[inline]
8472    fn default() -> Self {
8473        Self {
8474            s_type: StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT,
8475            next: ptr::null(),
8476            handle_type: ExternalMemoryHandleTypeFlags::default(),
8477            handle: ptr::null_mut(),
8478        }
8479    }
8480}
8481
8482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemorySciBufInfoNV.html>
8483#[repr(C)]
8484#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8485pub struct ImportMemorySciBufInfoNV {
8486    pub s_type: StructureType,
8487    pub next: *const c_void,
8488    pub handle_type: ExternalMemoryHandleTypeFlags,
8489    pub handle: NvSciBufObj,
8490}
8491
8492impl Default for ImportMemorySciBufInfoNV {
8493    #[inline]
8494    fn default() -> Self {
8495        Self {
8496            s_type: StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV,
8497            next: ptr::null(),
8498            handle_type: ExternalMemoryHandleTypeFlags::default(),
8499            handle: ptr::null_mut(),
8500        }
8501    }
8502}
8503
8504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html>
8505#[repr(C)]
8506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8507pub struct ImportMemoryWin32HandleInfoKHR {
8508    pub s_type: StructureType,
8509    pub next: *const c_void,
8510    pub handle_type: ExternalMemoryHandleTypeFlags,
8511    pub handle: HANDLE,
8512    pub name: LPCWSTR,
8513}
8514
8515impl Default for ImportMemoryWin32HandleInfoKHR {
8516    #[inline]
8517    fn default() -> Self {
8518        Self {
8519            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
8520            next: ptr::null(),
8521            handle_type: ExternalMemoryHandleTypeFlags::default(),
8522            handle: ptr::null_mut(),
8523            name: ptr::null_mut(),
8524        }
8525    }
8526}
8527
8528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html>
8529#[repr(C)]
8530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8531pub struct ImportMemoryWin32HandleInfoNV {
8532    pub s_type: StructureType,
8533    pub next: *const c_void,
8534    pub handle_type: ExternalMemoryHandleTypeFlagsNV,
8535    pub handle: HANDLE,
8536}
8537
8538impl Default for ImportMemoryWin32HandleInfoNV {
8539    #[inline]
8540    fn default() -> Self {
8541        Self {
8542            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
8543            next: ptr::null(),
8544            handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
8545            handle: ptr::null_mut(),
8546        }
8547    }
8548}
8549
8550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>
8551#[repr(C)]
8552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8553pub struct ImportMemoryZirconHandleInfoFUCHSIA {
8554    pub s_type: StructureType,
8555    pub next: *const c_void,
8556    pub handle_type: ExternalMemoryHandleTypeFlags,
8557    pub handle: zx_handle_t,
8558}
8559
8560impl Default for ImportMemoryZirconHandleInfoFUCHSIA {
8561    #[inline]
8562    fn default() -> Self {
8563        Self {
8564            s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
8565            next: ptr::null(),
8566            handle_type: ExternalMemoryHandleTypeFlags::default(),
8567            handle: zx_handle_t::default(),
8568        }
8569    }
8570}
8571
8572/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html>
8573#[repr(C)]
8574#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8575pub struct ImportMetalBufferInfoEXT {
8576    pub s_type: StructureType,
8577    pub next: *const c_void,
8578    pub mtl_buffer: MTLBuffer_id,
8579}
8580
8581impl Default for ImportMetalBufferInfoEXT {
8582    #[inline]
8583    fn default() -> Self {
8584        Self {
8585            s_type: StructureType::IMPORT_METAL_BUFFER_INFO_EXT,
8586            next: ptr::null(),
8587            mtl_buffer: ptr::null_mut(),
8588        }
8589    }
8590}
8591
8592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html>
8593#[repr(C)]
8594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8595pub struct ImportMetalIOSurfaceInfoEXT {
8596    pub s_type: StructureType,
8597    pub next: *const c_void,
8598    pub io_surface: IOSurfaceRef,
8599}
8600
8601impl Default for ImportMetalIOSurfaceInfoEXT {
8602    #[inline]
8603    fn default() -> Self {
8604        Self {
8605            s_type: StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT,
8606            next: ptr::null(),
8607            io_surface: ptr::null_mut(),
8608        }
8609    }
8610}
8611
8612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html>
8613#[repr(C)]
8614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8615pub struct ImportMetalSharedEventInfoEXT {
8616    pub s_type: StructureType,
8617    pub next: *const c_void,
8618    pub mtl_shared_event: MTLSharedEvent_id,
8619}
8620
8621impl Default for ImportMetalSharedEventInfoEXT {
8622    #[inline]
8623    fn default() -> Self {
8624        Self {
8625            s_type: StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT,
8626            next: ptr::null(),
8627            mtl_shared_event: ptr::null_mut(),
8628        }
8629    }
8630}
8631
8632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html>
8633#[repr(C)]
8634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8635pub struct ImportMetalTextureInfoEXT {
8636    pub s_type: StructureType,
8637    pub next: *const c_void,
8638    pub plane: ImageAspectFlags,
8639    pub mtl_texture: MTLTexture_id,
8640}
8641
8642impl Default for ImportMetalTextureInfoEXT {
8643    #[inline]
8644    fn default() -> Self {
8645        Self {
8646            s_type: StructureType::IMPORT_METAL_TEXTURE_INFO_EXT,
8647            next: ptr::null(),
8648            plane: ImageAspectFlags::default(),
8649            mtl_texture: ptr::null_mut(),
8650        }
8651    }
8652}
8653
8654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html>
8655#[repr(C)]
8656#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8657pub struct ImportScreenBufferInfoQNX {
8658    pub s_type: StructureType,
8659    pub next: *const c_void,
8660    pub buffer: *mut _screen_buffer,
8661}
8662
8663impl Default for ImportScreenBufferInfoQNX {
8664    #[inline]
8665    fn default() -> Self {
8666        Self {
8667            s_type: StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX,
8668            next: ptr::null(),
8669            buffer: ptr::null_mut(),
8670        }
8671    }
8672}
8673
8674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html>
8675#[repr(C)]
8676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8677pub struct ImportSemaphoreFdInfoKHR {
8678    pub s_type: StructureType,
8679    pub next: *const c_void,
8680    pub semaphore: Semaphore,
8681    pub flags: SemaphoreImportFlags,
8682    pub handle_type: ExternalSemaphoreHandleTypeFlags,
8683    pub fd: c_int,
8684}
8685
8686impl Default for ImportSemaphoreFdInfoKHR {
8687    #[inline]
8688    fn default() -> Self {
8689        Self {
8690            s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
8691            next: ptr::null(),
8692            semaphore: Semaphore::default(),
8693            flags: SemaphoreImportFlags::default(),
8694            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
8695            fd: c_int::default(),
8696        }
8697    }
8698}
8699
8700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreSciSyncInfoNV.html>
8701#[repr(C)]
8702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8703pub struct ImportSemaphoreSciSyncInfoNV {
8704    pub s_type: StructureType,
8705    pub next: *const c_void,
8706    pub semaphore: Semaphore,
8707    pub handle_type: ExternalSemaphoreHandleTypeFlags,
8708    pub handle: *mut c_void,
8709}
8710
8711impl Default for ImportSemaphoreSciSyncInfoNV {
8712    #[inline]
8713    fn default() -> Self {
8714        Self {
8715            s_type: StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
8716            next: ptr::null(),
8717            semaphore: Semaphore::default(),
8718            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
8719            handle: ptr::null_mut(),
8720        }
8721    }
8722}
8723
8724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>
8725#[repr(C)]
8726#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8727pub struct ImportSemaphoreWin32HandleInfoKHR {
8728    pub s_type: StructureType,
8729    pub next: *const c_void,
8730    pub semaphore: Semaphore,
8731    pub flags: SemaphoreImportFlags,
8732    pub handle_type: ExternalSemaphoreHandleTypeFlags,
8733    pub handle: HANDLE,
8734    pub name: LPCWSTR,
8735}
8736
8737impl Default for ImportSemaphoreWin32HandleInfoKHR {
8738    #[inline]
8739    fn default() -> Self {
8740        Self {
8741            s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
8742            next: ptr::null(),
8743            semaphore: Semaphore::default(),
8744            flags: SemaphoreImportFlags::default(),
8745            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
8746            handle: ptr::null_mut(),
8747            name: ptr::null_mut(),
8748        }
8749    }
8750}
8751
8752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>
8753#[repr(C)]
8754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8755pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
8756    pub s_type: StructureType,
8757    pub next: *const c_void,
8758    pub semaphore: Semaphore,
8759    pub flags: SemaphoreImportFlags,
8760    pub handle_type: ExternalSemaphoreHandleTypeFlags,
8761    pub zircon_handle: zx_handle_t,
8762}
8763
8764impl Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
8765    #[inline]
8766    fn default() -> Self {
8767        Self {
8768            s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
8769            next: ptr::null(),
8770            semaphore: Semaphore::default(),
8771            flags: SemaphoreImportFlags::default(),
8772            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
8773            zircon_handle: zx_handle_t::default(),
8774        }
8775    }
8776}
8777
8778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html>
8779#[repr(C)]
8780#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8781pub struct IndirectCommandsExecutionSetTokenEXT {
8782    pub type_: IndirectExecutionSetInfoTypeEXT,
8783    pub shader_stages: ShaderStageFlags,
8784}
8785
8786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html>
8787#[repr(C)]
8788#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8789pub struct IndirectCommandsIndexBufferTokenEXT {
8790    pub mode: IndirectCommandsInputModeFlagsEXT,
8791}
8792
8793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html>
8794#[repr(C)]
8795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8796pub struct IndirectCommandsLayoutCreateInfoEXT {
8797    pub s_type: StructureType,
8798    pub next: *const c_void,
8799    pub flags: IndirectCommandsLayoutUsageFlagsEXT,
8800    pub shader_stages: ShaderStageFlags,
8801    pub indirect_stride: u32,
8802    pub pipeline_layout: PipelineLayout,
8803    pub token_count: u32,
8804    pub tokens: *const IndirectCommandsLayoutTokenEXT,
8805}
8806
8807impl Default for IndirectCommandsLayoutCreateInfoEXT {
8808    #[inline]
8809    fn default() -> Self {
8810        Self {
8811            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT,
8812            next: ptr::null(),
8813            flags: IndirectCommandsLayoutUsageFlagsEXT::default(),
8814            shader_stages: ShaderStageFlags::default(),
8815            indirect_stride: u32::default(),
8816            pipeline_layout: PipelineLayout::default(),
8817            token_count: u32::default(),
8818            tokens: ptr::null(),
8819        }
8820    }
8821}
8822
8823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>
8824#[repr(C)]
8825#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8826pub struct IndirectCommandsLayoutCreateInfoNV {
8827    pub s_type: StructureType,
8828    pub next: *const c_void,
8829    pub flags: IndirectCommandsLayoutUsageFlagsNV,
8830    pub pipeline_bind_point: PipelineBindPoint,
8831    pub token_count: u32,
8832    pub tokens: *const IndirectCommandsLayoutTokenNV,
8833    pub stream_count: u32,
8834    pub stream_strides: *const u32,
8835}
8836
8837impl Default for IndirectCommandsLayoutCreateInfoNV {
8838    #[inline]
8839    fn default() -> Self {
8840        Self {
8841            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
8842            next: ptr::null(),
8843            flags: IndirectCommandsLayoutUsageFlagsNV::default(),
8844            pipeline_bind_point: PipelineBindPoint::default(),
8845            token_count: u32::default(),
8846            tokens: ptr::null(),
8847            stream_count: u32::default(),
8848            stream_strides: ptr::null(),
8849        }
8850    }
8851}
8852
8853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html>
8854#[repr(C)]
8855#[derive(Copy, Clone, Debug)]
8856pub struct IndirectCommandsLayoutTokenEXT {
8857    pub s_type: StructureType,
8858    pub next: *const c_void,
8859    pub type_: IndirectCommandsTokenTypeEXT,
8860    pub data: IndirectCommandsTokenDataEXT,
8861    pub offset: u32,
8862}
8863
8864impl Default for IndirectCommandsLayoutTokenEXT {
8865    #[inline]
8866    fn default() -> Self {
8867        Self {
8868            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT,
8869            next: ptr::null(),
8870            type_: IndirectCommandsTokenTypeEXT::default(),
8871            data: IndirectCommandsTokenDataEXT::default(),
8872            offset: u32::default(),
8873        }
8874    }
8875}
8876
8877/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html>
8878#[repr(C)]
8879#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8880pub struct IndirectCommandsLayoutTokenNV {
8881    pub s_type: StructureType,
8882    pub next: *const c_void,
8883    pub token_type: IndirectCommandsTokenTypeNV,
8884    pub stream: u32,
8885    pub offset: u32,
8886    pub vertex_binding_unit: u32,
8887    pub vertex_dynamic_stride: Bool32,
8888    pub pushconstant_pipeline_layout: PipelineLayout,
8889    pub pushconstant_shader_stage_flags: ShaderStageFlags,
8890    pub pushconstant_offset: u32,
8891    pub pushconstant_size: u32,
8892    pub indirect_state_flags: IndirectStateFlagsNV,
8893    pub index_type_count: u32,
8894    pub index_types: *const IndexType,
8895    pub index_type_values: *const u32,
8896}
8897
8898impl Default for IndirectCommandsLayoutTokenNV {
8899    #[inline]
8900    fn default() -> Self {
8901        Self {
8902            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
8903            next: ptr::null(),
8904            token_type: IndirectCommandsTokenTypeNV::default(),
8905            stream: u32::default(),
8906            offset: u32::default(),
8907            vertex_binding_unit: u32::default(),
8908            vertex_dynamic_stride: Bool32::default(),
8909            pushconstant_pipeline_layout: PipelineLayout::default(),
8910            pushconstant_shader_stage_flags: ShaderStageFlags::default(),
8911            pushconstant_offset: u32::default(),
8912            pushconstant_size: u32::default(),
8913            indirect_state_flags: IndirectStateFlagsNV::default(),
8914            index_type_count: u32::default(),
8915            index_types: ptr::null(),
8916            index_type_values: ptr::null(),
8917        }
8918    }
8919}
8920
8921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html>
8922#[repr(C)]
8923#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8924pub struct IndirectCommandsPushConstantTokenEXT {
8925    pub update_range: PushConstantRange,
8926}
8927
8928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html>
8929#[repr(C)]
8930#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8931pub struct IndirectCommandsStreamNV {
8932    pub buffer: Buffer,
8933    pub offset: DeviceSize,
8934}
8935
8936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html>
8937#[repr(C)]
8938#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8939pub struct IndirectCommandsVertexBufferTokenEXT {
8940    pub vertex_binding_unit: u32,
8941}
8942
8943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html>
8944#[repr(C)]
8945#[derive(Copy, Clone, Debug)]
8946pub struct IndirectExecutionSetCreateInfoEXT {
8947    pub s_type: StructureType,
8948    pub next: *const c_void,
8949    pub type_: IndirectExecutionSetInfoTypeEXT,
8950    pub info: IndirectExecutionSetInfoEXT,
8951}
8952
8953impl Default for IndirectExecutionSetCreateInfoEXT {
8954    #[inline]
8955    fn default() -> Self {
8956        Self {
8957            s_type: StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT,
8958            next: ptr::null(),
8959            type_: IndirectExecutionSetInfoTypeEXT::default(),
8960            info: IndirectExecutionSetInfoEXT::default(),
8961        }
8962    }
8963}
8964
8965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html>
8966#[repr(C)]
8967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8968pub struct IndirectExecutionSetPipelineInfoEXT {
8969    pub s_type: StructureType,
8970    pub next: *const c_void,
8971    pub initial_pipeline: Pipeline,
8972    pub max_pipeline_count: u32,
8973}
8974
8975impl Default for IndirectExecutionSetPipelineInfoEXT {
8976    #[inline]
8977    fn default() -> Self {
8978        Self {
8979            s_type: StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT,
8980            next: ptr::null(),
8981            initial_pipeline: Pipeline::default(),
8982            max_pipeline_count: u32::default(),
8983        }
8984    }
8985}
8986
8987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html>
8988#[repr(C)]
8989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8990pub struct IndirectExecutionSetShaderInfoEXT {
8991    pub s_type: StructureType,
8992    pub next: *const c_void,
8993    pub shader_count: u32,
8994    pub initial_shaders: *const ShaderEXT,
8995    pub set_layout_infos: *const IndirectExecutionSetShaderLayoutInfoEXT,
8996    pub max_shader_count: u32,
8997    pub push_constant_range_count: u32,
8998    pub push_constant_ranges: *const PushConstantRange,
8999}
9000
9001impl Default for IndirectExecutionSetShaderInfoEXT {
9002    #[inline]
9003    fn default() -> Self {
9004        Self {
9005            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT,
9006            next: ptr::null(),
9007            shader_count: u32::default(),
9008            initial_shaders: ptr::null(),
9009            set_layout_infos: ptr::null(),
9010            max_shader_count: u32::default(),
9011            push_constant_range_count: u32::default(),
9012            push_constant_ranges: ptr::null(),
9013        }
9014    }
9015}
9016
9017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html>
9018#[repr(C)]
9019#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9020pub struct IndirectExecutionSetShaderLayoutInfoEXT {
9021    pub s_type: StructureType,
9022    pub next: *const c_void,
9023    pub set_layout_count: u32,
9024    pub set_layouts: *const DescriptorSetLayout,
9025}
9026
9027impl Default for IndirectExecutionSetShaderLayoutInfoEXT {
9028    #[inline]
9029    fn default() -> Self {
9030        Self {
9031            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT,
9032            next: ptr::null(),
9033            set_layout_count: u32::default(),
9034            set_layouts: ptr::null(),
9035        }
9036    }
9037}
9038
9039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html>
9040#[repr(C)]
9041#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9042pub struct InitializePerformanceApiInfoINTEL {
9043    pub s_type: StructureType,
9044    pub next: *const c_void,
9045    pub user_data: *mut c_void,
9046}
9047
9048impl Default for InitializePerformanceApiInfoINTEL {
9049    #[inline]
9050    fn default() -> Self {
9051        Self {
9052            s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
9053            next: ptr::null(),
9054            user_data: ptr::null_mut(),
9055        }
9056    }
9057}
9058
9059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html>
9060#[repr(C)]
9061#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9062pub struct InputAttachmentAspectReference {
9063    pub subpass: u32,
9064    pub input_attachment_index: u32,
9065    pub aspect_mask: ImageAspectFlags,
9066}
9067
9068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html>
9069#[repr(C)]
9070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9071pub struct InstanceCreateInfo {
9072    pub s_type: StructureType,
9073    pub next: *const c_void,
9074    pub flags: InstanceCreateFlags,
9075    pub application_info: *const ApplicationInfo,
9076    pub enabled_layer_count: u32,
9077    pub enabled_layer_names: *const *const c_char,
9078    pub enabled_extension_count: u32,
9079    pub enabled_extension_names: *const *const c_char,
9080}
9081
9082impl Default for InstanceCreateInfo {
9083    #[inline]
9084    fn default() -> Self {
9085        Self {
9086            s_type: StructureType::INSTANCE_CREATE_INFO,
9087            next: ptr::null(),
9088            flags: InstanceCreateFlags::default(),
9089            application_info: ptr::null(),
9090            enabled_layer_count: u32::default(),
9091            enabled_layer_names: ptr::null(),
9092            enabled_extension_count: u32::default(),
9093            enabled_extension_names: ptr::null(),
9094        }
9095    }
9096}
9097
9098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html>
9099#[repr(C)]
9100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9101pub struct LatencySleepInfoNV {
9102    pub s_type: StructureType,
9103    pub next: *const c_void,
9104    pub signal_semaphore: Semaphore,
9105    pub value: u64,
9106}
9107
9108impl Default for LatencySleepInfoNV {
9109    #[inline]
9110    fn default() -> Self {
9111        Self {
9112            s_type: StructureType::LATENCY_SLEEP_INFO_NV,
9113            next: ptr::null(),
9114            signal_semaphore: Semaphore::default(),
9115            value: u64::default(),
9116        }
9117    }
9118}
9119
9120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html>
9121#[repr(C)]
9122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9123pub struct LatencySleepModeInfoNV {
9124    pub s_type: StructureType,
9125    pub next: *const c_void,
9126    pub low_latency_mode: Bool32,
9127    pub low_latency_boost: Bool32,
9128    pub minimum_interval_us: u32,
9129}
9130
9131impl Default for LatencySleepModeInfoNV {
9132    #[inline]
9133    fn default() -> Self {
9134        Self {
9135            s_type: StructureType::LATENCY_SLEEP_MODE_INFO_NV,
9136            next: ptr::null(),
9137            low_latency_mode: Bool32::default(),
9138            low_latency_boost: Bool32::default(),
9139            minimum_interval_us: u32::default(),
9140        }
9141    }
9142}
9143
9144/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html>
9145#[repr(C)]
9146#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9147pub struct LatencySubmissionPresentIdNV {
9148    pub s_type: StructureType,
9149    pub next: *const c_void,
9150    pub present_id: u64,
9151}
9152
9153impl Default for LatencySubmissionPresentIdNV {
9154    #[inline]
9155    fn default() -> Self {
9156        Self {
9157            s_type: StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV,
9158            next: ptr::null(),
9159            present_id: u64::default(),
9160        }
9161    }
9162}
9163
9164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html>
9165#[repr(C)]
9166#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9167pub struct LatencySurfaceCapabilitiesNV {
9168    pub s_type: StructureType,
9169    pub next: *const c_void,
9170    pub present_mode_count: u32,
9171    pub present_modes: *mut PresentModeKHR,
9172}
9173
9174impl Default for LatencySurfaceCapabilitiesNV {
9175    #[inline]
9176    fn default() -> Self {
9177        Self {
9178            s_type: StructureType::LATENCY_SURFACE_CAPABILITIES_NV,
9179            next: ptr::null(),
9180            present_mode_count: u32::default(),
9181            present_modes: ptr::null_mut(),
9182        }
9183    }
9184}
9185
9186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html>
9187#[repr(C)]
9188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9189pub struct LatencyTimingsFrameReportNV {
9190    pub s_type: StructureType,
9191    pub next: *const c_void,
9192    pub present_id: u64,
9193    pub input_sample_time_us: u64,
9194    pub sim_start_time_us: u64,
9195    pub sim_end_time_us: u64,
9196    pub render_submit_start_time_us: u64,
9197    pub render_submit_end_time_us: u64,
9198    pub present_start_time_us: u64,
9199    pub present_end_time_us: u64,
9200    pub driver_start_time_us: u64,
9201    pub driver_end_time_us: u64,
9202    pub os_render_queue_start_time_us: u64,
9203    pub os_render_queue_end_time_us: u64,
9204    pub gpu_render_start_time_us: u64,
9205    pub gpu_render_end_time_us: u64,
9206}
9207
9208impl Default for LatencyTimingsFrameReportNV {
9209    #[inline]
9210    fn default() -> Self {
9211        Self {
9212            s_type: StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV,
9213            next: ptr::null(),
9214            present_id: u64::default(),
9215            input_sample_time_us: u64::default(),
9216            sim_start_time_us: u64::default(),
9217            sim_end_time_us: u64::default(),
9218            render_submit_start_time_us: u64::default(),
9219            render_submit_end_time_us: u64::default(),
9220            present_start_time_us: u64::default(),
9221            present_end_time_us: u64::default(),
9222            driver_start_time_us: u64::default(),
9223            driver_end_time_us: u64::default(),
9224            os_render_queue_start_time_us: u64::default(),
9225            os_render_queue_end_time_us: u64::default(),
9226            gpu_render_start_time_us: u64::default(),
9227            gpu_render_end_time_us: u64::default(),
9228        }
9229    }
9230}
9231
9232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerProperties.html>
9233#[repr(C)]
9234#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9235pub struct LayerProperties {
9236    pub layer_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
9237    pub spec_version: u32,
9238    pub implementation_version: u32,
9239    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
9240}
9241
9242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingEXT.html>
9243#[repr(C)]
9244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9245pub struct LayerSettingEXT {
9246    pub layer_name: *const c_char,
9247    pub setting_name: *const c_char,
9248    pub type_: LayerSettingTypeEXT,
9249    pub value_count: u32,
9250    pub values: *const c_void,
9251}
9252
9253impl Default for LayerSettingEXT {
9254    #[inline]
9255    fn default() -> Self {
9256        Self {
9257            layer_name: ptr::null(),
9258            setting_name: ptr::null(),
9259            type_: LayerSettingTypeEXT::default(),
9260            value_count: u32::default(),
9261            values: ptr::null(),
9262        }
9263    }
9264}
9265
9266/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html>
9267#[repr(C)]
9268#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9269pub struct LayerSettingsCreateInfoEXT {
9270    pub s_type: StructureType,
9271    pub next: *const c_void,
9272    pub setting_count: u32,
9273    pub settings: *const LayerSettingEXT,
9274}
9275
9276impl Default for LayerSettingsCreateInfoEXT {
9277    #[inline]
9278    fn default() -> Self {
9279        Self {
9280            s_type: StructureType::LAYER_SETTINGS_CREATE_INFO_EXT,
9281            next: ptr::null(),
9282            setting_count: u32::default(),
9283            settings: ptr::null(),
9284        }
9285    }
9286}
9287
9288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html>
9289#[repr(C)]
9290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9291pub struct MacOSSurfaceCreateInfoMVK {
9292    pub s_type: StructureType,
9293    pub next: *const c_void,
9294    pub flags: MacOSSurfaceCreateFlagsMVK,
9295    pub view: *const c_void,
9296}
9297
9298impl Default for MacOSSurfaceCreateInfoMVK {
9299    #[inline]
9300    fn default() -> Self {
9301        Self {
9302            s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
9303            next: ptr::null(),
9304            flags: MacOSSurfaceCreateFlagsMVK::default(),
9305            view: ptr::null(),
9306        }
9307    }
9308}
9309
9310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMappedMemoryRange.html>
9311#[repr(C)]
9312#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9313pub struct MappedMemoryRange {
9314    pub s_type: StructureType,
9315    pub next: *const c_void,
9316    pub memory: DeviceMemory,
9317    pub offset: DeviceSize,
9318    pub size: DeviceSize,
9319}
9320
9321impl Default for MappedMemoryRange {
9322    #[inline]
9323    fn default() -> Self {
9324        Self {
9325            s_type: StructureType::MAPPED_MEMORY_RANGE,
9326            next: ptr::null(),
9327            memory: DeviceMemory::default(),
9328            offset: DeviceSize::default(),
9329            size: DeviceSize::default(),
9330        }
9331    }
9332}
9333
9334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html>
9335#[repr(C)]
9336#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9337pub struct MemoryAllocateFlagsInfo {
9338    pub s_type: StructureType,
9339    pub next: *const c_void,
9340    pub flags: MemoryAllocateFlags,
9341    pub device_mask: u32,
9342}
9343
9344impl Default for MemoryAllocateFlagsInfo {
9345    #[inline]
9346    fn default() -> Self {
9347        Self {
9348            s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
9349            next: ptr::null(),
9350            flags: MemoryAllocateFlags::default(),
9351            device_mask: u32::default(),
9352        }
9353    }
9354}
9355
9356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html>
9357#[repr(C)]
9358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9359pub struct MemoryAllocateInfo {
9360    pub s_type: StructureType,
9361    pub next: *const c_void,
9362    pub allocation_size: DeviceSize,
9363    pub memory_type_index: u32,
9364}
9365
9366impl Default for MemoryAllocateInfo {
9367    #[inline]
9368    fn default() -> Self {
9369        Self {
9370            s_type: StructureType::MEMORY_ALLOCATE_INFO,
9371            next: ptr::null(),
9372            allocation_size: DeviceSize::default(),
9373            memory_type_index: u32::default(),
9374        }
9375    }
9376}
9377
9378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier.html>
9379#[repr(C)]
9380#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9381pub struct MemoryBarrier {
9382    pub s_type: StructureType,
9383    pub next: *const c_void,
9384    pub src_access_mask: AccessFlags,
9385    pub dst_access_mask: AccessFlags,
9386}
9387
9388impl Default for MemoryBarrier {
9389    #[inline]
9390    fn default() -> Self {
9391        Self {
9392            s_type: StructureType::MEMORY_BARRIER,
9393            next: ptr::null(),
9394            src_access_mask: AccessFlags::default(),
9395            dst_access_mask: AccessFlags::default(),
9396        }
9397    }
9398}
9399
9400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2.html>
9401#[repr(C)]
9402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9403pub struct MemoryBarrier2 {
9404    pub s_type: StructureType,
9405    pub next: *const c_void,
9406    pub src_stage_mask: PipelineStageFlags2,
9407    pub src_access_mask: AccessFlags2,
9408    pub dst_stage_mask: PipelineStageFlags2,
9409    pub dst_access_mask: AccessFlags2,
9410}
9411
9412impl Default for MemoryBarrier2 {
9413    #[inline]
9414    fn default() -> Self {
9415        Self {
9416            s_type: StructureType::MEMORY_BARRIER_2,
9417            next: ptr::null(),
9418            src_stage_mask: PipelineStageFlags2::default(),
9419            src_access_mask: AccessFlags2::default(),
9420            dst_stage_mask: PipelineStageFlags2::default(),
9421            dst_access_mask: AccessFlags2::default(),
9422        }
9423    }
9424}
9425
9426/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html>
9427#[repr(C)]
9428#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9429pub struct MemoryBarrierAccessFlags3KHR {
9430    pub s_type: StructureType,
9431    pub next: *const c_void,
9432    pub src_access_mask3: AccessFlags3KHR,
9433    pub dst_access_mask3: AccessFlags3KHR,
9434}
9435
9436impl Default for MemoryBarrierAccessFlags3KHR {
9437    #[inline]
9438    fn default() -> Self {
9439        Self {
9440            s_type: StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR,
9441            next: ptr::null(),
9442            src_access_mask3: AccessFlags3KHR::default(),
9443            dst_access_mask3: AccessFlags3KHR::default(),
9444        }
9445    }
9446}
9447
9448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html>
9449#[repr(C)]
9450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9451pub struct MemoryDedicatedAllocateInfo {
9452    pub s_type: StructureType,
9453    pub next: *const c_void,
9454    pub image: Image,
9455    pub buffer: Buffer,
9456}
9457
9458impl Default for MemoryDedicatedAllocateInfo {
9459    #[inline]
9460    fn default() -> Self {
9461        Self {
9462            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
9463            next: ptr::null(),
9464            image: Image::default(),
9465            buffer: Buffer::default(),
9466        }
9467    }
9468}
9469
9470/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html>
9471#[repr(C)]
9472#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9473pub struct MemoryDedicatedRequirements {
9474    pub s_type: StructureType,
9475    pub next: *mut c_void,
9476    pub prefers_dedicated_allocation: Bool32,
9477    pub requires_dedicated_allocation: Bool32,
9478}
9479
9480impl Default for MemoryDedicatedRequirements {
9481    #[inline]
9482    fn default() -> Self {
9483        Self {
9484            s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
9485            next: ptr::null_mut(),
9486            prefers_dedicated_allocation: Bool32::default(),
9487            requires_dedicated_allocation: Bool32::default(),
9488        }
9489    }
9490}
9491
9492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html>
9493#[repr(C)]
9494#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9495pub struct MemoryFdPropertiesKHR {
9496    pub s_type: StructureType,
9497    pub next: *mut c_void,
9498    pub memory_type_bits: u32,
9499}
9500
9501impl Default for MemoryFdPropertiesKHR {
9502    #[inline]
9503    fn default() -> Self {
9504        Self {
9505            s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
9506            next: ptr::null_mut(),
9507            memory_type_bits: u32::default(),
9508        }
9509    }
9510}
9511
9512/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>
9513#[repr(C)]
9514#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9515pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
9516    pub s_type: StructureType,
9517    pub next: *const c_void,
9518    pub memory: DeviceMemory,
9519}
9520
9521impl Default for MemoryGetAndroidHardwareBufferInfoANDROID {
9522    #[inline]
9523    fn default() -> Self {
9524        Self {
9525            s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
9526            next: ptr::null(),
9527            memory: DeviceMemory::default(),
9528        }
9529    }
9530}
9531
9532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html>
9533#[repr(C)]
9534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9535pub struct MemoryGetFdInfoKHR {
9536    pub s_type: StructureType,
9537    pub next: *const c_void,
9538    pub memory: DeviceMemory,
9539    pub handle_type: ExternalMemoryHandleTypeFlags,
9540}
9541
9542impl Default for MemoryGetFdInfoKHR {
9543    #[inline]
9544    fn default() -> Self {
9545        Self {
9546            s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
9547            next: ptr::null(),
9548            memory: DeviceMemory::default(),
9549            handle_type: ExternalMemoryHandleTypeFlags::default(),
9550        }
9551    }
9552}
9553
9554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html>
9555#[repr(C)]
9556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9557pub struct MemoryGetMetalHandleInfoEXT {
9558    pub s_type: StructureType,
9559    pub next: *const c_void,
9560    pub memory: DeviceMemory,
9561    pub handle_type: ExternalMemoryHandleTypeFlags,
9562}
9563
9564impl Default for MemoryGetMetalHandleInfoEXT {
9565    #[inline]
9566    fn default() -> Self {
9567        Self {
9568            s_type: StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT,
9569            next: ptr::null(),
9570            memory: DeviceMemory::default(),
9571            handle_type: ExternalMemoryHandleTypeFlags::default(),
9572        }
9573    }
9574}
9575
9576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html>
9577#[repr(C)]
9578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9579pub struct MemoryGetRemoteAddressInfoNV {
9580    pub s_type: StructureType,
9581    pub next: *const c_void,
9582    pub memory: DeviceMemory,
9583    pub handle_type: ExternalMemoryHandleTypeFlags,
9584}
9585
9586impl Default for MemoryGetRemoteAddressInfoNV {
9587    #[inline]
9588    fn default() -> Self {
9589        Self {
9590            s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
9591            next: ptr::null(),
9592            memory: DeviceMemory::default(),
9593            handle_type: ExternalMemoryHandleTypeFlags::default(),
9594        }
9595    }
9596}
9597
9598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetSciBufInfoNV.html>
9599#[repr(C)]
9600#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9601pub struct MemoryGetSciBufInfoNV {
9602    pub s_type: StructureType,
9603    pub next: *const c_void,
9604    pub memory: DeviceMemory,
9605    pub handle_type: ExternalMemoryHandleTypeFlags,
9606}
9607
9608impl Default for MemoryGetSciBufInfoNV {
9609    #[inline]
9610    fn default() -> Self {
9611        Self {
9612            s_type: StructureType::MEMORY_GET_SCI_BUF_INFO_NV,
9613            next: ptr::null(),
9614            memory: DeviceMemory::default(),
9615            handle_type: ExternalMemoryHandleTypeFlags::default(),
9616        }
9617    }
9618}
9619
9620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html>
9621#[repr(C)]
9622#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9623pub struct MemoryGetWin32HandleInfoKHR {
9624    pub s_type: StructureType,
9625    pub next: *const c_void,
9626    pub memory: DeviceMemory,
9627    pub handle_type: ExternalMemoryHandleTypeFlags,
9628}
9629
9630impl Default for MemoryGetWin32HandleInfoKHR {
9631    #[inline]
9632    fn default() -> Self {
9633        Self {
9634            s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
9635            next: ptr::null(),
9636            memory: DeviceMemory::default(),
9637            handle_type: ExternalMemoryHandleTypeFlags::default(),
9638        }
9639    }
9640}
9641
9642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>
9643#[repr(C)]
9644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9645pub struct MemoryGetZirconHandleInfoFUCHSIA {
9646    pub s_type: StructureType,
9647    pub next: *const c_void,
9648    pub memory: DeviceMemory,
9649    pub handle_type: ExternalMemoryHandleTypeFlags,
9650}
9651
9652impl Default for MemoryGetZirconHandleInfoFUCHSIA {
9653    #[inline]
9654    fn default() -> Self {
9655        Self {
9656            s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
9657            next: ptr::null(),
9658            memory: DeviceMemory::default(),
9659            handle_type: ExternalMemoryHandleTypeFlags::default(),
9660        }
9661    }
9662}
9663
9664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeap.html>
9665#[repr(C)]
9666#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9667pub struct MemoryHeap {
9668    pub size: DeviceSize,
9669    pub flags: MemoryHeapFlags,
9670}
9671
9672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html>
9673#[repr(C)]
9674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9675pub struct MemoryHostPointerPropertiesEXT {
9676    pub s_type: StructureType,
9677    pub next: *mut c_void,
9678    pub memory_type_bits: u32,
9679}
9680
9681impl Default for MemoryHostPointerPropertiesEXT {
9682    #[inline]
9683    fn default() -> Self {
9684        Self {
9685            s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
9686            next: ptr::null_mut(),
9687            memory_type_bits: u32::default(),
9688        }
9689    }
9690}
9691
9692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfo.html>
9693#[repr(C)]
9694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9695pub struct MemoryMapInfo {
9696    pub s_type: StructureType,
9697    pub next: *const c_void,
9698    pub flags: MemoryMapFlags,
9699    pub memory: DeviceMemory,
9700    pub offset: DeviceSize,
9701    pub size: DeviceSize,
9702}
9703
9704impl Default for MemoryMapInfo {
9705    #[inline]
9706    fn default() -> Self {
9707        Self {
9708            s_type: StructureType::MEMORY_MAP_INFO,
9709            next: ptr::null(),
9710            flags: MemoryMapFlags::default(),
9711            memory: DeviceMemory::default(),
9712            offset: DeviceSize::default(),
9713            size: DeviceSize::default(),
9714        }
9715    }
9716}
9717
9718/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html>
9719#[repr(C)]
9720#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9721pub struct MemoryMapPlacedInfoEXT {
9722    pub s_type: StructureType,
9723    pub next: *const c_void,
9724    pub placed_address: *mut c_void,
9725}
9726
9727impl Default for MemoryMapPlacedInfoEXT {
9728    #[inline]
9729    fn default() -> Self {
9730        Self {
9731            s_type: StructureType::MEMORY_MAP_PLACED_INFO_EXT,
9732            next: ptr::null(),
9733            placed_address: ptr::null_mut(),
9734        }
9735    }
9736}
9737
9738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html>
9739#[repr(C)]
9740#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9741pub struct MemoryMetalHandlePropertiesEXT {
9742    pub s_type: StructureType,
9743    pub next: *mut c_void,
9744    pub memory_type_bits: u32,
9745}
9746
9747impl Default for MemoryMetalHandlePropertiesEXT {
9748    #[inline]
9749    fn default() -> Self {
9750        Self {
9751            s_type: StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT,
9752            next: ptr::null_mut(),
9753            memory_type_bits: u32::default(),
9754        }
9755    }
9756}
9757
9758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>
9759#[repr(C)]
9760#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9761pub struct MemoryOpaqueCaptureAddressAllocateInfo {
9762    pub s_type: StructureType,
9763    pub next: *const c_void,
9764    pub opaque_capture_address: u64,
9765}
9766
9767impl Default for MemoryOpaqueCaptureAddressAllocateInfo {
9768    #[inline]
9769    fn default() -> Self {
9770        Self {
9771            s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
9772            next: ptr::null(),
9773            opaque_capture_address: u64::default(),
9774        }
9775    }
9776}
9777
9778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html>
9779#[repr(C)]
9780#[derive(Copy, Clone, Debug, PartialEq)]
9781pub struct MemoryPriorityAllocateInfoEXT {
9782    pub s_type: StructureType,
9783    pub next: *const c_void,
9784    pub priority: f32,
9785}
9786
9787impl Default for MemoryPriorityAllocateInfoEXT {
9788    #[inline]
9789    fn default() -> Self {
9790        Self {
9791            s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
9792            next: ptr::null(),
9793            priority: f32::default(),
9794        }
9795    }
9796}
9797
9798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements.html>
9799#[repr(C)]
9800#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9801pub struct MemoryRequirements {
9802    pub size: DeviceSize,
9803    pub alignment: DeviceSize,
9804    pub memory_type_bits: u32,
9805}
9806
9807/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2.html>
9808#[repr(C)]
9809#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9810pub struct MemoryRequirements2 {
9811    pub s_type: StructureType,
9812    pub next: *mut c_void,
9813    pub memory_requirements: MemoryRequirements,
9814}
9815
9816impl Default for MemoryRequirements2 {
9817    #[inline]
9818    fn default() -> Self {
9819        Self {
9820            s_type: StructureType::MEMORY_REQUIREMENTS_2,
9821            next: ptr::null_mut(),
9822            memory_requirements: MemoryRequirements::default(),
9823        }
9824    }
9825}
9826
9827/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemorySciBufPropertiesNV.html>
9828#[repr(C)]
9829#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9830pub struct MemorySciBufPropertiesNV {
9831    pub s_type: StructureType,
9832    pub next: *const c_void,
9833    pub memory_type_bits: u32,
9834}
9835
9836impl Default for MemorySciBufPropertiesNV {
9837    #[inline]
9838    fn default() -> Self {
9839        Self {
9840            s_type: StructureType::MEMORY_SCI_BUF_PROPERTIES_NV,
9841            next: ptr::null(),
9842            memory_type_bits: u32::default(),
9843        }
9844    }
9845}
9846
9847/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html>
9848#[repr(C)]
9849#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9850pub struct MemoryToImageCopy {
9851    pub s_type: StructureType,
9852    pub next: *const c_void,
9853    pub host_pointer: *const c_void,
9854    pub memory_row_length: u32,
9855    pub memory_image_height: u32,
9856    pub image_subresource: ImageSubresourceLayers,
9857    pub image_offset: Offset3D,
9858    pub image_extent: Extent3D,
9859}
9860
9861impl Default for MemoryToImageCopy {
9862    #[inline]
9863    fn default() -> Self {
9864        Self {
9865            s_type: StructureType::MEMORY_TO_IMAGE_COPY,
9866            next: ptr::null(),
9867            host_pointer: ptr::null(),
9868            memory_row_length: u32::default(),
9869            memory_image_height: u32::default(),
9870            image_subresource: ImageSubresourceLayers::default(),
9871            image_offset: Offset3D::default(),
9872            image_extent: Extent3D::default(),
9873        }
9874    }
9875}
9876
9877/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryType.html>
9878#[repr(C)]
9879#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9880pub struct MemoryType {
9881    pub property_flags: MemoryPropertyFlags,
9882    pub heap_index: u32,
9883}
9884
9885/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html>
9886#[repr(C)]
9887#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9888pub struct MemoryUnmapInfo {
9889    pub s_type: StructureType,
9890    pub next: *const c_void,
9891    pub flags: MemoryUnmapFlags,
9892    pub memory: DeviceMemory,
9893}
9894
9895impl Default for MemoryUnmapInfo {
9896    #[inline]
9897    fn default() -> Self {
9898        Self {
9899            s_type: StructureType::MEMORY_UNMAP_INFO,
9900            next: ptr::null(),
9901            flags: MemoryUnmapFlags::default(),
9902            memory: DeviceMemory::default(),
9903        }
9904    }
9905}
9906
9907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html>
9908#[repr(C)]
9909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9910pub struct MemoryWin32HandlePropertiesKHR {
9911    pub s_type: StructureType,
9912    pub next: *mut c_void,
9913    pub memory_type_bits: u32,
9914}
9915
9916impl Default for MemoryWin32HandlePropertiesKHR {
9917    #[inline]
9918    fn default() -> Self {
9919        Self {
9920            s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
9921            next: ptr::null_mut(),
9922            memory_type_bits: u32::default(),
9923        }
9924    }
9925}
9926
9927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>
9928#[repr(C)]
9929#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9930pub struct MemoryZirconHandlePropertiesFUCHSIA {
9931    pub s_type: StructureType,
9932    pub next: *mut c_void,
9933    pub memory_type_bits: u32,
9934}
9935
9936impl Default for MemoryZirconHandlePropertiesFUCHSIA {
9937    #[inline]
9938    fn default() -> Self {
9939        Self {
9940            s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
9941            next: ptr::null_mut(),
9942            memory_type_bits: u32::default(),
9943        }
9944    }
9945}
9946
9947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html>
9948#[repr(C)]
9949#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9950pub struct MetalSurfaceCreateInfoEXT {
9951    pub s_type: StructureType,
9952    pub next: *const c_void,
9953    pub flags: MetalSurfaceCreateFlagsEXT,
9954    pub layer: *const CAMetalLayer,
9955}
9956
9957impl Default for MetalSurfaceCreateInfoEXT {
9958    #[inline]
9959    fn default() -> Self {
9960        Self {
9961            s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
9962            next: ptr::null(),
9963            flags: MetalSurfaceCreateFlagsEXT::default(),
9964            layer: ptr::null(),
9965        }
9966    }
9967}
9968
9969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html>
9970#[repr(C)]
9971#[derive(Copy, Clone, Debug)]
9972pub struct MicromapBuildInfoEXT {
9973    pub s_type: StructureType,
9974    pub next: *const c_void,
9975    pub type_: MicromapTypeEXT,
9976    pub flags: BuildMicromapFlagsEXT,
9977    pub mode: BuildMicromapModeEXT,
9978    pub dst_micromap: MicromapEXT,
9979    pub usage_counts_count: u32,
9980    pub usage_counts: *const MicromapUsageEXT,
9981    pub pointer_usage_counts: *const *const MicromapUsageEXT,
9982    pub data: DeviceOrHostAddressConstKHR,
9983    pub scratch_data: DeviceOrHostAddressKHR,
9984    pub triangle_array: DeviceOrHostAddressConstKHR,
9985    pub triangle_array_stride: DeviceSize,
9986}
9987
9988impl Default for MicromapBuildInfoEXT {
9989    #[inline]
9990    fn default() -> Self {
9991        Self {
9992            s_type: StructureType::MICROMAP_BUILD_INFO_EXT,
9993            next: ptr::null(),
9994            type_: MicromapTypeEXT::default(),
9995            flags: BuildMicromapFlagsEXT::default(),
9996            mode: BuildMicromapModeEXT::default(),
9997            dst_micromap: MicromapEXT::default(),
9998            usage_counts_count: u32::default(),
9999            usage_counts: ptr::null(),
10000            pointer_usage_counts: ptr::null(),
10001            data: DeviceOrHostAddressConstKHR::default(),
10002            scratch_data: DeviceOrHostAddressKHR::default(),
10003            triangle_array: DeviceOrHostAddressConstKHR::default(),
10004            triangle_array_stride: DeviceSize::default(),
10005        }
10006    }
10007}
10008
10009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html>
10010#[repr(C)]
10011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10012pub struct MicromapBuildSizesInfoEXT {
10013    pub s_type: StructureType,
10014    pub next: *const c_void,
10015    pub micromap_size: DeviceSize,
10016    pub build_scratch_size: DeviceSize,
10017    pub discardable: Bool32,
10018}
10019
10020impl Default for MicromapBuildSizesInfoEXT {
10021    #[inline]
10022    fn default() -> Self {
10023        Self {
10024            s_type: StructureType::MICROMAP_BUILD_SIZES_INFO_EXT,
10025            next: ptr::null(),
10026            micromap_size: DeviceSize::default(),
10027            build_scratch_size: DeviceSize::default(),
10028            discardable: Bool32::default(),
10029        }
10030    }
10031}
10032
10033/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html>
10034#[repr(C)]
10035#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10036pub struct MicromapCreateInfoEXT {
10037    pub s_type: StructureType,
10038    pub next: *const c_void,
10039    pub create_flags: MicromapCreateFlagsEXT,
10040    pub buffer: Buffer,
10041    pub offset: DeviceSize,
10042    pub size: DeviceSize,
10043    pub type_: MicromapTypeEXT,
10044    pub device_address: DeviceAddress,
10045}
10046
10047impl Default for MicromapCreateInfoEXT {
10048    #[inline]
10049    fn default() -> Self {
10050        Self {
10051            s_type: StructureType::MICROMAP_CREATE_INFO_EXT,
10052            next: ptr::null(),
10053            create_flags: MicromapCreateFlagsEXT::default(),
10054            buffer: Buffer::default(),
10055            offset: DeviceSize::default(),
10056            size: DeviceSize::default(),
10057            type_: MicromapTypeEXT::default(),
10058            device_address: DeviceAddress::default(),
10059        }
10060    }
10061}
10062
10063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html>
10064#[repr(C)]
10065#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10066pub struct MicromapTriangleEXT {
10067    pub data_offset: u32,
10068    pub subdivision_level: u16,
10069    pub format: u16,
10070}
10071
10072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html>
10073#[repr(C)]
10074#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10075pub struct MicromapUsageEXT {
10076    pub count: u32,
10077    pub subdivision_level: u32,
10078    pub format: u32,
10079}
10080
10081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html>
10082#[repr(C)]
10083#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10084pub struct MicromapVersionInfoEXT {
10085    pub s_type: StructureType,
10086    pub next: *const c_void,
10087    pub version_data: *const u8,
10088}
10089
10090impl Default for MicromapVersionInfoEXT {
10091    #[inline]
10092    fn default() -> Self {
10093        Self {
10094            s_type: StructureType::MICROMAP_VERSION_INFO_EXT,
10095            next: ptr::null(),
10096            version_data: ptr::null(),
10097        }
10098    }
10099}
10100
10101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html>
10102#[repr(C)]
10103#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10104pub struct MultiDrawIndexedInfoEXT {
10105    pub first_index: u32,
10106    pub index_count: u32,
10107    pub vertex_offset: i32,
10108}
10109
10110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html>
10111#[repr(C)]
10112#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10113pub struct MultiDrawInfoEXT {
10114    pub first_vertex: u32,
10115    pub vertex_count: u32,
10116}
10117
10118/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html>
10119#[repr(C)]
10120#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10121pub struct MultisamplePropertiesEXT {
10122    pub s_type: StructureType,
10123    pub next: *mut c_void,
10124    pub max_sample_location_grid_size: Extent2D,
10125}
10126
10127impl Default for MultisamplePropertiesEXT {
10128    #[inline]
10129    fn default() -> Self {
10130        Self {
10131            s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
10132            next: ptr::null_mut(),
10133            max_sample_location_grid_size: Extent2D::default(),
10134        }
10135    }
10136}
10137
10138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html>
10139#[repr(C)]
10140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10141pub struct MultisampledRenderToSingleSampledInfoEXT {
10142    pub s_type: StructureType,
10143    pub next: *const c_void,
10144    pub multisampled_render_to_single_sampled_enable: Bool32,
10145    pub rasterization_samples: SampleCountFlags,
10146}
10147
10148impl Default for MultisampledRenderToSingleSampledInfoEXT {
10149    #[inline]
10150    fn default() -> Self {
10151        Self {
10152            s_type: StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT,
10153            next: ptr::null(),
10154            multisampled_render_to_single_sampled_enable: Bool32::default(),
10155            rasterization_samples: SampleCountFlags::default(),
10156        }
10157    }
10158}
10159
10160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html>
10161#[repr(C)]
10162#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10163pub struct MultiviewPerViewAttributesInfoNVX {
10164    pub s_type: StructureType,
10165    pub next: *const c_void,
10166    pub per_view_attributes: Bool32,
10167    pub per_view_attributes_position_x_only: Bool32,
10168}
10169
10170impl Default for MultiviewPerViewAttributesInfoNVX {
10171    #[inline]
10172    fn default() -> Self {
10173        Self {
10174            s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
10175            next: ptr::null(),
10176            per_view_attributes: Bool32::default(),
10177            per_view_attributes_position_x_only: Bool32::default(),
10178        }
10179    }
10180}
10181
10182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html>
10183#[repr(C)]
10184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10185pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
10186    pub s_type: StructureType,
10187    pub next: *const c_void,
10188    pub per_view_render_area_count: u32,
10189    pub per_view_render_areas: *const Rect2D,
10190}
10191
10192impl Default for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
10193    #[inline]
10194    fn default() -> Self {
10195        Self {
10196            s_type: StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM,
10197            next: ptr::null(),
10198            per_view_render_area_count: u32::default(),
10199            per_view_render_areas: ptr::null(),
10200        }
10201    }
10202}
10203
10204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html>
10205#[repr(C)]
10206#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10207pub struct MutableDescriptorTypeCreateInfoEXT {
10208    pub s_type: StructureType,
10209    pub next: *const c_void,
10210    pub mutable_descriptor_type_list_count: u32,
10211    pub mutable_descriptor_type_lists: *const MutableDescriptorTypeListEXT,
10212}
10213
10214impl Default for MutableDescriptorTypeCreateInfoEXT {
10215    #[inline]
10216    fn default() -> Self {
10217        Self {
10218            s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
10219            next: ptr::null(),
10220            mutable_descriptor_type_list_count: u32::default(),
10221            mutable_descriptor_type_lists: ptr::null(),
10222        }
10223    }
10224}
10225
10226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html>
10227#[repr(C)]
10228#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10229pub struct MutableDescriptorTypeListEXT {
10230    pub descriptor_type_count: u32,
10231    pub descriptor_types: *const DescriptorType,
10232}
10233
10234impl Default for MutableDescriptorTypeListEXT {
10235    #[inline]
10236    fn default() -> Self {
10237        Self {
10238            descriptor_type_count: u32::default(),
10239            descriptor_types: ptr::null(),
10240        }
10241    }
10242}
10243
10244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset2D.html>
10245#[repr(C)]
10246#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10247pub struct Offset2D {
10248    pub x: i32,
10249    pub y: i32,
10250}
10251
10252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset3D.html>
10253#[repr(C)]
10254#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10255pub struct Offset3D {
10256    pub x: i32,
10257    pub y: i32,
10258    pub z: i32,
10259}
10260
10261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html>
10262#[repr(C)]
10263#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10264pub struct OpaqueCaptureDescriptorDataCreateInfoEXT {
10265    pub s_type: StructureType,
10266    pub next: *const c_void,
10267    pub opaque_capture_descriptor_data: *const c_void,
10268}
10269
10270impl Default for OpaqueCaptureDescriptorDataCreateInfoEXT {
10271    #[inline]
10272    fn default() -> Self {
10273        Self {
10274            s_type: StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT,
10275            next: ptr::null(),
10276            opaque_capture_descriptor_data: ptr::null(),
10277        }
10278    }
10279}
10280
10281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html>
10282#[repr(C)]
10283#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10284pub struct OpticalFlowExecuteInfoNV {
10285    pub s_type: StructureType,
10286    pub next: *mut c_void,
10287    pub flags: OpticalFlowExecuteFlagsNV,
10288    pub region_count: u32,
10289    pub regions: *const Rect2D,
10290}
10291
10292impl Default for OpticalFlowExecuteInfoNV {
10293    #[inline]
10294    fn default() -> Self {
10295        Self {
10296            s_type: StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV,
10297            next: ptr::null_mut(),
10298            flags: OpticalFlowExecuteFlagsNV::default(),
10299            region_count: u32::default(),
10300            regions: ptr::null(),
10301        }
10302    }
10303}
10304
10305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html>
10306#[repr(C)]
10307#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10308pub struct OpticalFlowImageFormatInfoNV {
10309    pub s_type: StructureType,
10310    pub next: *const c_void,
10311    pub usage: OpticalFlowUsageFlagsNV,
10312}
10313
10314impl Default for OpticalFlowImageFormatInfoNV {
10315    #[inline]
10316    fn default() -> Self {
10317        Self {
10318            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV,
10319            next: ptr::null(),
10320            usage: OpticalFlowUsageFlagsNV::default(),
10321        }
10322    }
10323}
10324
10325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html>
10326#[repr(C)]
10327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10328pub struct OpticalFlowImageFormatPropertiesNV {
10329    pub s_type: StructureType,
10330    pub next: *const c_void,
10331    pub format: Format,
10332}
10333
10334impl Default for OpticalFlowImageFormatPropertiesNV {
10335    #[inline]
10336    fn default() -> Self {
10337        Self {
10338            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV,
10339            next: ptr::null(),
10340            format: Format::default(),
10341        }
10342    }
10343}
10344
10345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html>
10346#[repr(C)]
10347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10348pub struct OpticalFlowSessionCreateInfoNV {
10349    pub s_type: StructureType,
10350    pub next: *mut c_void,
10351    pub width: u32,
10352    pub height: u32,
10353    pub image_format: Format,
10354    pub flow_vector_format: Format,
10355    pub cost_format: Format,
10356    pub output_grid_size: OpticalFlowGridSizeFlagsNV,
10357    pub hint_grid_size: OpticalFlowGridSizeFlagsNV,
10358    pub performance_level: OpticalFlowPerformanceLevelNV,
10359    pub flags: OpticalFlowSessionCreateFlagsNV,
10360}
10361
10362impl Default for OpticalFlowSessionCreateInfoNV {
10363    #[inline]
10364    fn default() -> Self {
10365        Self {
10366            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV,
10367            next: ptr::null_mut(),
10368            width: u32::default(),
10369            height: u32::default(),
10370            image_format: Format::default(),
10371            flow_vector_format: Format::default(),
10372            cost_format: Format::default(),
10373            output_grid_size: OpticalFlowGridSizeFlagsNV::default(),
10374            hint_grid_size: OpticalFlowGridSizeFlagsNV::default(),
10375            performance_level: OpticalFlowPerformanceLevelNV::default(),
10376            flags: OpticalFlowSessionCreateFlagsNV::default(),
10377        }
10378    }
10379}
10380
10381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html>
10382#[repr(C)]
10383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10384pub struct OpticalFlowSessionCreatePrivateDataInfoNV {
10385    pub s_type: StructureType,
10386    pub next: *mut c_void,
10387    pub id: u32,
10388    pub size: u32,
10389    pub private_data: *const c_void,
10390}
10391
10392impl Default for OpticalFlowSessionCreatePrivateDataInfoNV {
10393    #[inline]
10394    fn default() -> Self {
10395        Self {
10396            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV,
10397            next: ptr::null_mut(),
10398            id: u32::default(),
10399            size: u32::default(),
10400            private_data: ptr::null(),
10401        }
10402    }
10403}
10404
10405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html>
10406#[repr(C)]
10407#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10408pub struct OutOfBandQueueTypeInfoNV {
10409    pub s_type: StructureType,
10410    pub next: *const c_void,
10411    pub queue_type: OutOfBandQueueTypeNV,
10412}
10413
10414impl Default for OutOfBandQueueTypeInfoNV {
10415    #[inline]
10416    fn default() -> Self {
10417        Self {
10418            s_type: StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV,
10419            next: ptr::null(),
10420            queue_type: OutOfBandQueueTypeNV::default(),
10421        }
10422    }
10423}
10424
10425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html>
10426#[repr(C)]
10427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10428pub struct PartitionedAccelerationStructureFlagsNV {
10429    pub s_type: StructureType,
10430    pub next: *mut c_void,
10431    pub enable_partition_translation: Bool32,
10432}
10433
10434impl Default for PartitionedAccelerationStructureFlagsNV {
10435    #[inline]
10436    fn default() -> Self {
10437        Self {
10438            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV,
10439            next: ptr::null_mut(),
10440            enable_partition_translation: Bool32::default(),
10441        }
10442    }
10443}
10444
10445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html>
10446#[repr(C)]
10447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10448pub struct PartitionedAccelerationStructureInstancesInputNV {
10449    pub s_type: StructureType,
10450    pub next: *mut c_void,
10451    pub flags: BuildAccelerationStructureFlagsKHR,
10452    pub instance_count: u32,
10453    pub max_instance_per_partition_count: u32,
10454    pub partition_count: u32,
10455    pub max_instance_in_global_partition_count: u32,
10456}
10457
10458impl Default for PartitionedAccelerationStructureInstancesInputNV {
10459    #[inline]
10460    fn default() -> Self {
10461        Self {
10462            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV,
10463            next: ptr::null_mut(),
10464            flags: BuildAccelerationStructureFlagsKHR::default(),
10465            instance_count: u32::default(),
10466            max_instance_per_partition_count: u32::default(),
10467            partition_count: u32::default(),
10468            max_instance_in_global_partition_count: u32::default(),
10469        }
10470    }
10471}
10472
10473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html>
10474#[repr(C)]
10475#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10476pub struct PartitionedAccelerationStructureUpdateInstanceDataNV {
10477    pub instance_index: u32,
10478    pub instance_contribution_to_hit_group_index: u32,
10479    pub acceleration_structure: DeviceAddress,
10480}
10481
10482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html>
10483#[repr(C)]
10484#[derive(Copy, Clone, Default, Debug, PartialEq)]
10485pub struct PartitionedAccelerationStructureWriteInstanceDataNV {
10486    pub transform: TransformMatrixKHR,
10487    pub explicit_aabb: [f32; 6],
10488    pub instance_id: u32,
10489    pub instance_mask: u32,
10490    pub instance_contribution_to_hit_group_index: u32,
10491    pub instance_flags: PartitionedAccelerationStructureInstanceFlagsNV,
10492    pub instance_index: u32,
10493    pub partition_index: u32,
10494    pub acceleration_structure: DeviceAddress,
10495}
10496
10497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html>
10498#[repr(C)]
10499#[derive(Copy, Clone, Default, Debug, PartialEq)]
10500pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNV {
10501    pub partition_index: u32,
10502    pub partition_translation: [f32; 3],
10503}
10504
10505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html>
10506#[repr(C)]
10507#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10508pub struct PastPresentationTimingGOOGLE {
10509    pub present_id: u32,
10510    pub desired_present_time: u64,
10511    pub actual_present_time: u64,
10512    pub earliest_present_time: u64,
10513    pub present_margin: u64,
10514}
10515
10516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>
10517#[repr(C)]
10518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10519pub struct PerformanceConfigurationAcquireInfoINTEL {
10520    pub s_type: StructureType,
10521    pub next: *const c_void,
10522    pub type_: PerformanceConfigurationTypeINTEL,
10523}
10524
10525impl Default for PerformanceConfigurationAcquireInfoINTEL {
10526    #[inline]
10527    fn default() -> Self {
10528        Self {
10529            s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
10530            next: ptr::null(),
10531            type_: PerformanceConfigurationTypeINTEL::default(),
10532        }
10533    }
10534}
10535
10536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html>
10537#[repr(C)]
10538#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10539pub struct PerformanceCounterDescriptionKHR {
10540    pub s_type: StructureType,
10541    pub next: *mut c_void,
10542    pub flags: PerformanceCounterDescriptionFlagsKHR,
10543    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
10544    pub category: StringArray<MAX_DESCRIPTION_SIZE>,
10545    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
10546}
10547
10548impl Default for PerformanceCounterDescriptionKHR {
10549    #[inline]
10550    fn default() -> Self {
10551        Self {
10552            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
10553            next: ptr::null_mut(),
10554            flags: PerformanceCounterDescriptionFlagsKHR::default(),
10555            name: StringArray::default(),
10556            category: StringArray::default(),
10557            description: StringArray::default(),
10558        }
10559    }
10560}
10561
10562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html>
10563#[repr(C)]
10564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10565pub struct PerformanceCounterKHR {
10566    pub s_type: StructureType,
10567    pub next: *mut c_void,
10568    pub unit: PerformanceCounterUnitKHR,
10569    pub scope: PerformanceCounterScopeKHR,
10570    pub storage: PerformanceCounterStorageKHR,
10571    pub uuid: ByteArray<UUID_SIZE>,
10572}
10573
10574impl Default for PerformanceCounterKHR {
10575    #[inline]
10576    fn default() -> Self {
10577        Self {
10578            s_type: StructureType::PERFORMANCE_COUNTER_KHR,
10579            next: ptr::null_mut(),
10580            unit: PerformanceCounterUnitKHR::default(),
10581            scope: PerformanceCounterScopeKHR::default(),
10582            storage: PerformanceCounterStorageKHR::default(),
10583            uuid: ByteArray::default(),
10584        }
10585    }
10586}
10587
10588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html>
10589#[repr(C)]
10590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10591pub struct PerformanceMarkerInfoINTEL {
10592    pub s_type: StructureType,
10593    pub next: *const c_void,
10594    pub marker: u64,
10595}
10596
10597impl Default for PerformanceMarkerInfoINTEL {
10598    #[inline]
10599    fn default() -> Self {
10600        Self {
10601            s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
10602            next: ptr::null(),
10603            marker: u64::default(),
10604        }
10605    }
10606}
10607
10608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html>
10609#[repr(C)]
10610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10611pub struct PerformanceOverrideInfoINTEL {
10612    pub s_type: StructureType,
10613    pub next: *const c_void,
10614    pub type_: PerformanceOverrideTypeINTEL,
10615    pub enable: Bool32,
10616    pub parameter: u64,
10617}
10618
10619impl Default for PerformanceOverrideInfoINTEL {
10620    #[inline]
10621    fn default() -> Self {
10622        Self {
10623            s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
10624            next: ptr::null(),
10625            type_: PerformanceOverrideTypeINTEL::default(),
10626            enable: Bool32::default(),
10627            parameter: u64::default(),
10628        }
10629    }
10630}
10631
10632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQueryReservationInfoKHR.html>
10633#[repr(C)]
10634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10635pub struct PerformanceQueryReservationInfoKHR {
10636    pub s_type: StructureType,
10637    pub next: *const c_void,
10638    pub max_performance_queries_per_pool: u32,
10639}
10640
10641impl Default for PerformanceQueryReservationInfoKHR {
10642    #[inline]
10643    fn default() -> Self {
10644        Self {
10645            s_type: StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR,
10646            next: ptr::null(),
10647            max_performance_queries_per_pool: u32::default(),
10648        }
10649    }
10650}
10651
10652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html>
10653#[repr(C)]
10654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10655pub struct PerformanceQuerySubmitInfoKHR {
10656    pub s_type: StructureType,
10657    pub next: *const c_void,
10658    pub counter_pass_index: u32,
10659}
10660
10661impl Default for PerformanceQuerySubmitInfoKHR {
10662    #[inline]
10663    fn default() -> Self {
10664        Self {
10665            s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
10666            next: ptr::null(),
10667            counter_pass_index: u32::default(),
10668        }
10669    }
10670}
10671
10672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html>
10673#[repr(C)]
10674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10675pub struct PerformanceStreamMarkerInfoINTEL {
10676    pub s_type: StructureType,
10677    pub next: *const c_void,
10678    pub marker: u32,
10679}
10680
10681impl Default for PerformanceStreamMarkerInfoINTEL {
10682    #[inline]
10683    fn default() -> Self {
10684        Self {
10685            s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
10686            next: ptr::null(),
10687            marker: u32::default(),
10688        }
10689    }
10690}
10691
10692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html>
10693#[repr(C)]
10694#[derive(Copy, Clone, Default, Debug)]
10695pub struct PerformanceValueINTEL {
10696    pub type_: PerformanceValueTypeINTEL,
10697    pub data: PerformanceValueDataINTEL,
10698}
10699
10700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html>
10701#[repr(C)]
10702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10703pub struct PhysicalDevice16BitStorageFeatures {
10704    pub s_type: StructureType,
10705    pub next: *mut c_void,
10706    pub storage_buffer_16bit_access: Bool32,
10707    pub uniform_and_storage_buffer_16bit_access: Bool32,
10708    pub storage_push_constant16: Bool32,
10709    pub storage_input_output16: Bool32,
10710}
10711
10712impl Default for PhysicalDevice16BitStorageFeatures {
10713    #[inline]
10714    fn default() -> Self {
10715        Self {
10716            s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
10717            next: ptr::null_mut(),
10718            storage_buffer_16bit_access: Bool32::default(),
10719            uniform_and_storage_buffer_16bit_access: Bool32::default(),
10720            storage_push_constant16: Bool32::default(),
10721            storage_input_output16: Bool32::default(),
10722        }
10723    }
10724}
10725
10726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>
10727#[repr(C)]
10728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10729pub struct PhysicalDevice4444FormatsFeaturesEXT {
10730    pub s_type: StructureType,
10731    pub next: *mut c_void,
10732    pub format_a4_r4_g4_b4: Bool32,
10733    pub format_a4_b4_g4_r4: Bool32,
10734}
10735
10736impl Default for PhysicalDevice4444FormatsFeaturesEXT {
10737    #[inline]
10738    fn default() -> Self {
10739        Self {
10740            s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
10741            next: ptr::null_mut(),
10742            format_a4_r4_g4_b4: Bool32::default(),
10743            format_a4_b4_g4_r4: Bool32::default(),
10744        }
10745    }
10746}
10747
10748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html>
10749#[repr(C)]
10750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10751pub struct PhysicalDevice8BitStorageFeatures {
10752    pub s_type: StructureType,
10753    pub next: *mut c_void,
10754    pub storage_buffer_8bit_access: Bool32,
10755    pub uniform_and_storage_buffer_8bit_access: Bool32,
10756    pub storage_push_constant8: Bool32,
10757}
10758
10759impl Default for PhysicalDevice8BitStorageFeatures {
10760    #[inline]
10761    fn default() -> Self {
10762        Self {
10763            s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
10764            next: ptr::null_mut(),
10765            storage_buffer_8bit_access: Bool32::default(),
10766            uniform_and_storage_buffer_8bit_access: Bool32::default(),
10767            storage_push_constant8: Bool32::default(),
10768        }
10769    }
10770}
10771
10772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>
10773#[repr(C)]
10774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10775pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
10776    pub s_type: StructureType,
10777    pub next: *mut c_void,
10778    pub decode_mode_shared_exponent: Bool32,
10779}
10780
10781impl Default for PhysicalDeviceASTCDecodeFeaturesEXT {
10782    #[inline]
10783    fn default() -> Self {
10784        Self {
10785            s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
10786            next: ptr::null_mut(),
10787            decode_mode_shared_exponent: Bool32::default(),
10788        }
10789    }
10790}
10791
10792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>
10793#[repr(C)]
10794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10795pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
10796    pub s_type: StructureType,
10797    pub next: *mut c_void,
10798    pub acceleration_structure: Bool32,
10799    pub acceleration_structure_capture_replay: Bool32,
10800    pub acceleration_structure_indirect_build: Bool32,
10801    pub acceleration_structure_host_commands: Bool32,
10802    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
10803}
10804
10805impl Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
10806    #[inline]
10807    fn default() -> Self {
10808        Self {
10809            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
10810            next: ptr::null_mut(),
10811            acceleration_structure: Bool32::default(),
10812            acceleration_structure_capture_replay: Bool32::default(),
10813            acceleration_structure_indirect_build: Bool32::default(),
10814            acceleration_structure_host_commands: Bool32::default(),
10815            descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
10816        }
10817    }
10818}
10819
10820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>
10821#[repr(C)]
10822#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10823pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
10824    pub s_type: StructureType,
10825    pub next: *mut c_void,
10826    pub max_geometry_count: u64,
10827    pub max_instance_count: u64,
10828    pub max_primitive_count: u64,
10829    pub max_per_stage_descriptor_acceleration_structures: u32,
10830    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
10831    pub max_descriptor_set_acceleration_structures: u32,
10832    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
10833    pub min_acceleration_structure_scratch_offset_alignment: u32,
10834}
10835
10836impl Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
10837    #[inline]
10838    fn default() -> Self {
10839        Self {
10840            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
10841            next: ptr::null_mut(),
10842            max_geometry_count: u64::default(),
10843            max_instance_count: u64::default(),
10844            max_primitive_count: u64::default(),
10845            max_per_stage_descriptor_acceleration_structures: u32::default(),
10846            max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
10847            max_descriptor_set_acceleration_structures: u32::default(),
10848            max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
10849            min_acceleration_structure_scratch_offset_alignment: u32::default(),
10850        }
10851    }
10852}
10853
10854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html>
10855#[repr(C)]
10856#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10857pub struct PhysicalDeviceAddressBindingReportFeaturesEXT {
10858    pub s_type: StructureType,
10859    pub next: *mut c_void,
10860    pub report_address_binding: Bool32,
10861}
10862
10863impl Default for PhysicalDeviceAddressBindingReportFeaturesEXT {
10864    #[inline]
10865    fn default() -> Self {
10866        Self {
10867            s_type: StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT,
10868            next: ptr::null_mut(),
10869            report_address_binding: Bool32::default(),
10870        }
10871    }
10872}
10873
10874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html>
10875#[repr(C)]
10876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10877pub struct PhysicalDeviceAmigoProfilingFeaturesSEC {
10878    pub s_type: StructureType,
10879    pub next: *mut c_void,
10880    pub amigo_profiling: Bool32,
10881}
10882
10883impl Default for PhysicalDeviceAmigoProfilingFeaturesSEC {
10884    #[inline]
10885    fn default() -> Self {
10886        Self {
10887            s_type: StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC,
10888            next: ptr::null_mut(),
10889            amigo_profiling: Bool32::default(),
10890        }
10891    }
10892}
10893
10894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html>
10895#[repr(C)]
10896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10897pub struct PhysicalDeviceAntiLagFeaturesAMD {
10898    pub s_type: StructureType,
10899    pub next: *mut c_void,
10900    pub anti_lag: Bool32,
10901}
10902
10903impl Default for PhysicalDeviceAntiLagFeaturesAMD {
10904    #[inline]
10905    fn default() -> Self {
10906        Self {
10907            s_type: StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD,
10908            next: ptr::null_mut(),
10909            anti_lag: Bool32::default(),
10910        }
10911    }
10912}
10913
10914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html>
10915#[repr(C)]
10916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10917pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
10918    pub s_type: StructureType,
10919    pub next: *mut c_void,
10920    pub attachment_feedback_loop_dynamic_state: Bool32,
10921}
10922
10923impl Default for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
10924    #[inline]
10925    fn default() -> Self {
10926        Self {
10927            s_type:
10928                StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT,
10929            next: ptr::null_mut(),
10930            attachment_feedback_loop_dynamic_state: Bool32::default(),
10931        }
10932    }
10933}
10934
10935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html>
10936#[repr(C)]
10937#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10938pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
10939    pub s_type: StructureType,
10940    pub next: *mut c_void,
10941    pub attachment_feedback_loop_layout: Bool32,
10942}
10943
10944impl Default for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
10945    #[inline]
10946    fn default() -> Self {
10947        Self {
10948            s_type: StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT,
10949            next: ptr::null_mut(),
10950            attachment_feedback_loop_layout: Bool32::default(),
10951        }
10952    }
10953}
10954
10955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>
10956#[repr(C)]
10957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10958pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
10959    pub s_type: StructureType,
10960    pub next: *mut c_void,
10961    pub advanced_blend_coherent_operations: Bool32,
10962}
10963
10964impl Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
10965    #[inline]
10966    fn default() -> Self {
10967        Self {
10968            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
10969            next: ptr::null_mut(),
10970            advanced_blend_coherent_operations: Bool32::default(),
10971        }
10972    }
10973}
10974
10975/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>
10976#[repr(C)]
10977#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10978pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
10979    pub s_type: StructureType,
10980    pub next: *mut c_void,
10981    pub advanced_blend_max_color_attachments: u32,
10982    pub advanced_blend_independent_blend: Bool32,
10983    pub advanced_blend_non_premultiplied_src_color: Bool32,
10984    pub advanced_blend_non_premultiplied_dst_color: Bool32,
10985    pub advanced_blend_correlated_overlap: Bool32,
10986    pub advanced_blend_all_operations: Bool32,
10987}
10988
10989impl Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
10990    #[inline]
10991    fn default() -> Self {
10992        Self {
10993            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
10994            next: ptr::null_mut(),
10995            advanced_blend_max_color_attachments: u32::default(),
10996            advanced_blend_independent_blend: Bool32::default(),
10997            advanced_blend_non_premultiplied_src_color: Bool32::default(),
10998            advanced_blend_non_premultiplied_dst_color: Bool32::default(),
10999            advanced_blend_correlated_overlap: Bool32::default(),
11000            advanced_blend_all_operations: Bool32::default(),
11001        }
11002    }
11003}
11004
11005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>
11006#[repr(C)]
11007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11008pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
11009    pub s_type: StructureType,
11010    pub next: *mut c_void,
11011    pub border_color_swizzle: Bool32,
11012    pub border_color_swizzle_from_image: Bool32,
11013}
11014
11015impl Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
11016    #[inline]
11017    fn default() -> Self {
11018        Self {
11019            s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
11020            next: ptr::null_mut(),
11021            border_color_swizzle: Bool32::default(),
11022            border_color_swizzle_from_image: Bool32::default(),
11023        }
11024    }
11025}
11026
11027/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>
11028#[repr(C)]
11029#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11030pub struct PhysicalDeviceBufferDeviceAddressFeatures {
11031    pub s_type: StructureType,
11032    pub next: *mut c_void,
11033    pub buffer_device_address: Bool32,
11034    pub buffer_device_address_capture_replay: Bool32,
11035    pub buffer_device_address_multi_device: Bool32,
11036}
11037
11038impl Default for PhysicalDeviceBufferDeviceAddressFeatures {
11039    #[inline]
11040    fn default() -> Self {
11041        Self {
11042            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
11043            next: ptr::null_mut(),
11044            buffer_device_address: Bool32::default(),
11045            buffer_device_address_capture_replay: Bool32::default(),
11046            buffer_device_address_multi_device: Bool32::default(),
11047        }
11048    }
11049}
11050
11051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>
11052#[repr(C)]
11053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11054pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
11055    pub s_type: StructureType,
11056    pub next: *mut c_void,
11057    pub buffer_device_address: Bool32,
11058    pub buffer_device_address_capture_replay: Bool32,
11059    pub buffer_device_address_multi_device: Bool32,
11060}
11061
11062impl Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
11063    #[inline]
11064    fn default() -> Self {
11065        Self {
11066            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
11067            next: ptr::null_mut(),
11068            buffer_device_address: Bool32::default(),
11069            buffer_device_address_capture_replay: Bool32::default(),
11070            buffer_device_address_multi_device: Bool32::default(),
11071        }
11072    }
11073}
11074
11075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html>
11076#[repr(C)]
11077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11078pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNV {
11079    pub s_type: StructureType,
11080    pub next: *mut c_void,
11081    pub cluster_acceleration_structure: Bool32,
11082}
11083
11084impl Default for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
11085    #[inline]
11086    fn default() -> Self {
11087        Self {
11088            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV,
11089            next: ptr::null_mut(),
11090            cluster_acceleration_structure: Bool32::default(),
11091        }
11092    }
11093}
11094
11095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html>
11096#[repr(C)]
11097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11098pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNV {
11099    pub s_type: StructureType,
11100    pub next: *mut c_void,
11101    pub max_vertices_per_cluster: u32,
11102    pub max_triangles_per_cluster: u32,
11103    pub cluster_scratch_byte_alignment: u32,
11104    pub cluster_byte_alignment: u32,
11105    pub cluster_template_byte_alignment: u32,
11106    pub cluster_bottom_level_byte_alignment: u32,
11107    pub cluster_template_bounds_byte_alignment: u32,
11108    pub max_cluster_geometry_index: u32,
11109}
11110
11111impl Default for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
11112    #[inline]
11113    fn default() -> Self {
11114        Self {
11115            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV,
11116            next: ptr::null_mut(),
11117            max_vertices_per_cluster: u32::default(),
11118            max_triangles_per_cluster: u32::default(),
11119            cluster_scratch_byte_alignment: u32::default(),
11120            cluster_byte_alignment: u32::default(),
11121            cluster_template_byte_alignment: u32::default(),
11122            cluster_bottom_level_byte_alignment: u32::default(),
11123            cluster_template_bounds_byte_alignment: u32::default(),
11124            max_cluster_geometry_index: u32::default(),
11125        }
11126    }
11127}
11128
11129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html>
11130#[repr(C)]
11131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11132pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
11133    pub s_type: StructureType,
11134    pub next: *mut c_void,
11135    pub clusterculling_shader: Bool32,
11136    pub multiview_cluster_culling_shader: Bool32,
11137}
11138
11139impl Default for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
11140    #[inline]
11141    fn default() -> Self {
11142        Self {
11143            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
11144            next: ptr::null_mut(),
11145            clusterculling_shader: Bool32::default(),
11146            multiview_cluster_culling_shader: Bool32::default(),
11147        }
11148    }
11149}
11150
11151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html>
11152#[repr(C)]
11153#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11154pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
11155    pub s_type: StructureType,
11156    pub next: *mut c_void,
11157    pub max_work_group_count: [u32; 3],
11158    pub max_work_group_size: [u32; 3],
11159    pub max_output_cluster_count: u32,
11160    pub indirect_buffer_offset_alignment: DeviceSize,
11161}
11162
11163impl Default for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
11164    #[inline]
11165    fn default() -> Self {
11166        Self {
11167            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
11168            next: ptr::null_mut(),
11169            max_work_group_count: [u32::default(); 3],
11170            max_work_group_size: [u32::default(); 3],
11171            max_output_cluster_count: u32::default(),
11172            indirect_buffer_offset_alignment: DeviceSize::default(),
11173        }
11174    }
11175}
11176
11177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html>
11178#[repr(C)]
11179#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11180pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
11181    pub s_type: StructureType,
11182    pub next: *mut c_void,
11183    pub cluster_shading_rate: Bool32,
11184}
11185
11186impl Default for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
11187    #[inline]
11188    fn default() -> Self {
11189        Self {
11190            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
11191            next: ptr::null_mut(),
11192            cluster_shading_rate: Bool32::default(),
11193        }
11194    }
11195}
11196
11197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>
11198#[repr(C)]
11199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11200pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
11201    pub s_type: StructureType,
11202    pub next: *mut c_void,
11203    pub device_coherent_memory: Bool32,
11204}
11205
11206impl Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
11207    #[inline]
11208    fn default() -> Self {
11209        Self {
11210            s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
11211            next: ptr::null_mut(),
11212            device_coherent_memory: Bool32::default(),
11213        }
11214    }
11215}
11216
11217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>
11218#[repr(C)]
11219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11220pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
11221    pub s_type: StructureType,
11222    pub next: *mut c_void,
11223    pub color_write_enable: Bool32,
11224}
11225
11226impl Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
11227    #[inline]
11228    fn default() -> Self {
11229        Self {
11230            s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
11231            next: ptr::null_mut(),
11232            color_write_enable: Bool32::default(),
11233        }
11234    }
11235}
11236
11237/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html>
11238#[repr(C)]
11239#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11240pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNV {
11241    pub s_type: StructureType,
11242    pub next: *mut c_void,
11243    pub command_buffer_inheritance: Bool32,
11244}
11245
11246impl Default for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
11247    #[inline]
11248    fn default() -> Self {
11249        Self {
11250            s_type: StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV,
11251            next: ptr::null_mut(),
11252            command_buffer_inheritance: Bool32::default(),
11253        }
11254    }
11255}
11256
11257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html>
11258#[repr(C)]
11259#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11260pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
11261    pub s_type: StructureType,
11262    pub next: *mut c_void,
11263    pub compute_derivative_group_quads: Bool32,
11264    pub compute_derivative_group_linear: Bool32,
11265}
11266
11267impl Default for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
11268    #[inline]
11269    fn default() -> Self {
11270        Self {
11271            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,
11272            next: ptr::null_mut(),
11273            compute_derivative_group_quads: Bool32::default(),
11274            compute_derivative_group_linear: Bool32::default(),
11275        }
11276    }
11277}
11278
11279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html>
11280#[repr(C)]
11281#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11282pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
11283    pub s_type: StructureType,
11284    pub next: *mut c_void,
11285    pub mesh_and_task_shader_derivatives: Bool32,
11286}
11287
11288impl Default for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
11289    #[inline]
11290    fn default() -> Self {
11291        Self {
11292            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR,
11293            next: ptr::null_mut(),
11294            mesh_and_task_shader_derivatives: Bool32::default(),
11295        }
11296    }
11297}
11298
11299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>
11300#[repr(C)]
11301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11302pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
11303    pub s_type: StructureType,
11304    pub next: *mut c_void,
11305    pub conditional_rendering: Bool32,
11306    pub inherited_conditional_rendering: Bool32,
11307}
11308
11309impl Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
11310    #[inline]
11311    fn default() -> Self {
11312        Self {
11313            s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
11314            next: ptr::null_mut(),
11315            conditional_rendering: Bool32::default(),
11316            inherited_conditional_rendering: Bool32::default(),
11317        }
11318    }
11319}
11320
11321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>
11322#[repr(C)]
11323#[derive(Copy, Clone, Debug, PartialEq)]
11324pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
11325    pub s_type: StructureType,
11326    pub next: *mut c_void,
11327    pub primitive_overestimation_size: f32,
11328    pub max_extra_primitive_overestimation_size: f32,
11329    pub extra_primitive_overestimation_size_granularity: f32,
11330    pub primitive_underestimation: Bool32,
11331    pub conservative_point_and_line_rasterization: Bool32,
11332    pub degenerate_triangles_rasterized: Bool32,
11333    pub degenerate_lines_rasterized: Bool32,
11334    pub fully_covered_fragment_shader_input_variable: Bool32,
11335    pub conservative_rasterization_post_depth_coverage: Bool32,
11336}
11337
11338impl Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
11339    #[inline]
11340    fn default() -> Self {
11341        Self {
11342            s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
11343            next: ptr::null_mut(),
11344            primitive_overestimation_size: f32::default(),
11345            max_extra_primitive_overestimation_size: f32::default(),
11346            extra_primitive_overestimation_size_granularity: f32::default(),
11347            primitive_underestimation: Bool32::default(),
11348            conservative_point_and_line_rasterization: Bool32::default(),
11349            degenerate_triangles_rasterized: Bool32::default(),
11350            degenerate_lines_rasterized: Bool32::default(),
11351            fully_covered_fragment_shader_input_variable: Bool32::default(),
11352            conservative_rasterization_post_depth_coverage: Bool32::default(),
11353        }
11354    }
11355}
11356
11357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html>
11358#[repr(C)]
11359#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11360pub struct PhysicalDeviceCooperativeMatrix2FeaturesNV {
11361    pub s_type: StructureType,
11362    pub next: *mut c_void,
11363    pub cooperative_matrix_workgroup_scope: Bool32,
11364    pub cooperative_matrix_flexible_dimensions: Bool32,
11365    pub cooperative_matrix_reductions: Bool32,
11366    pub cooperative_matrix_conversions: Bool32,
11367    pub cooperative_matrix_per_element_operations: Bool32,
11368    pub cooperative_matrix_tensor_addressing: Bool32,
11369    pub cooperative_matrix_block_loads: Bool32,
11370}
11371
11372impl Default for PhysicalDeviceCooperativeMatrix2FeaturesNV {
11373    #[inline]
11374    fn default() -> Self {
11375        Self {
11376            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV,
11377            next: ptr::null_mut(),
11378            cooperative_matrix_workgroup_scope: Bool32::default(),
11379            cooperative_matrix_flexible_dimensions: Bool32::default(),
11380            cooperative_matrix_reductions: Bool32::default(),
11381            cooperative_matrix_conversions: Bool32::default(),
11382            cooperative_matrix_per_element_operations: Bool32::default(),
11383            cooperative_matrix_tensor_addressing: Bool32::default(),
11384            cooperative_matrix_block_loads: Bool32::default(),
11385        }
11386    }
11387}
11388
11389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html>
11390#[repr(C)]
11391#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11392pub struct PhysicalDeviceCooperativeMatrix2PropertiesNV {
11393    pub s_type: StructureType,
11394    pub next: *mut c_void,
11395    pub cooperative_matrix_workgroup_scope_max_workgroup_size: u32,
11396    pub cooperative_matrix_flexible_dimensions_max_dimension: u32,
11397    pub cooperative_matrix_workgroup_scope_reserved_shared_memory: u32,
11398}
11399
11400impl Default for PhysicalDeviceCooperativeMatrix2PropertiesNV {
11401    #[inline]
11402    fn default() -> Self {
11403        Self {
11404            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV,
11405            next: ptr::null_mut(),
11406            cooperative_matrix_workgroup_scope_max_workgroup_size: u32::default(),
11407            cooperative_matrix_flexible_dimensions_max_dimension: u32::default(),
11408            cooperative_matrix_workgroup_scope_reserved_shared_memory: u32::default(),
11409        }
11410    }
11411}
11412
11413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html>
11414#[repr(C)]
11415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11416pub struct PhysicalDeviceCooperativeMatrixFeaturesKHR {
11417    pub s_type: StructureType,
11418    pub next: *mut c_void,
11419    pub cooperative_matrix: Bool32,
11420    pub cooperative_matrix_robust_buffer_access: Bool32,
11421}
11422
11423impl Default for PhysicalDeviceCooperativeMatrixFeaturesKHR {
11424    #[inline]
11425    fn default() -> Self {
11426        Self {
11427            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR,
11428            next: ptr::null_mut(),
11429            cooperative_matrix: Bool32::default(),
11430            cooperative_matrix_robust_buffer_access: Bool32::default(),
11431        }
11432    }
11433}
11434
11435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>
11436#[repr(C)]
11437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11438pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
11439    pub s_type: StructureType,
11440    pub next: *mut c_void,
11441    pub cooperative_matrix: Bool32,
11442    pub cooperative_matrix_robust_buffer_access: Bool32,
11443}
11444
11445impl Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
11446    #[inline]
11447    fn default() -> Self {
11448        Self {
11449            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
11450            next: ptr::null_mut(),
11451            cooperative_matrix: Bool32::default(),
11452            cooperative_matrix_robust_buffer_access: Bool32::default(),
11453        }
11454    }
11455}
11456
11457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html>
11458#[repr(C)]
11459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11460pub struct PhysicalDeviceCooperativeMatrixPropertiesKHR {
11461    pub s_type: StructureType,
11462    pub next: *mut c_void,
11463    pub cooperative_matrix_supported_stages: ShaderStageFlags,
11464}
11465
11466impl Default for PhysicalDeviceCooperativeMatrixPropertiesKHR {
11467    #[inline]
11468    fn default() -> Self {
11469        Self {
11470            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR,
11471            next: ptr::null_mut(),
11472            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
11473        }
11474    }
11475}
11476
11477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>
11478#[repr(C)]
11479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11480pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
11481    pub s_type: StructureType,
11482    pub next: *mut c_void,
11483    pub cooperative_matrix_supported_stages: ShaderStageFlags,
11484}
11485
11486impl Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
11487    #[inline]
11488    fn default() -> Self {
11489        Self {
11490            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
11491            next: ptr::null_mut(),
11492            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
11493        }
11494    }
11495}
11496
11497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html>
11498#[repr(C)]
11499#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11500pub struct PhysicalDeviceCooperativeVectorFeaturesNV {
11501    pub s_type: StructureType,
11502    pub next: *mut c_void,
11503    pub cooperative_vector: Bool32,
11504    pub cooperative_vector_training: Bool32,
11505}
11506
11507impl Default for PhysicalDeviceCooperativeVectorFeaturesNV {
11508    #[inline]
11509    fn default() -> Self {
11510        Self {
11511            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV,
11512            next: ptr::null_mut(),
11513            cooperative_vector: Bool32::default(),
11514            cooperative_vector_training: Bool32::default(),
11515        }
11516    }
11517}
11518
11519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html>
11520#[repr(C)]
11521#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11522pub struct PhysicalDeviceCooperativeVectorPropertiesNV {
11523    pub s_type: StructureType,
11524    pub next: *mut c_void,
11525    pub cooperative_vector_supported_stages: ShaderStageFlags,
11526    pub cooperative_vector_training_float16_accumulation: Bool32,
11527    pub cooperative_vector_training_float32_accumulation: Bool32,
11528    pub max_cooperative_vector_components: u32,
11529}
11530
11531impl Default for PhysicalDeviceCooperativeVectorPropertiesNV {
11532    #[inline]
11533    fn default() -> Self {
11534        Self {
11535            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV,
11536            next: ptr::null_mut(),
11537            cooperative_vector_supported_stages: ShaderStageFlags::default(),
11538            cooperative_vector_training_float16_accumulation: Bool32::default(),
11539            cooperative_vector_training_float32_accumulation: Bool32::default(),
11540            max_cooperative_vector_components: u32::default(),
11541        }
11542    }
11543}
11544
11545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html>
11546#[repr(C)]
11547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11548pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNV {
11549    pub s_type: StructureType,
11550    pub next: *mut c_void,
11551    pub indirect_copy: Bool32,
11552}
11553
11554impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
11555    #[inline]
11556    fn default() -> Self {
11557        Self {
11558            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV,
11559            next: ptr::null_mut(),
11560            indirect_copy: Bool32::default(),
11561        }
11562    }
11563}
11564
11565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html>
11566#[repr(C)]
11567#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11568pub struct PhysicalDeviceCopyMemoryIndirectPropertiesNV {
11569    pub s_type: StructureType,
11570    pub next: *mut c_void,
11571    pub supported_queues: QueueFlags,
11572}
11573
11574impl Default for PhysicalDeviceCopyMemoryIndirectPropertiesNV {
11575    #[inline]
11576    fn default() -> Self {
11577        Self {
11578            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV,
11579            next: ptr::null_mut(),
11580            supported_queues: QueueFlags::default(),
11581        }
11582    }
11583}
11584
11585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>
11586#[repr(C)]
11587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11588pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
11589    pub s_type: StructureType,
11590    pub next: *mut c_void,
11591    pub corner_sampled_image: Bool32,
11592}
11593
11594impl Default for PhysicalDeviceCornerSampledImageFeaturesNV {
11595    #[inline]
11596    fn default() -> Self {
11597        Self {
11598            s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
11599            next: ptr::null_mut(),
11600            corner_sampled_image: Bool32::default(),
11601        }
11602    }
11603}
11604
11605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>
11606#[repr(C)]
11607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11608pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
11609    pub s_type: StructureType,
11610    pub next: *mut c_void,
11611    pub coverage_reduction_mode: Bool32,
11612}
11613
11614impl Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
11615    #[inline]
11616    fn default() -> Self {
11617        Self {
11618            s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
11619            next: ptr::null_mut(),
11620            coverage_reduction_mode: Bool32::default(),
11621        }
11622    }
11623}
11624
11625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html>
11626#[repr(C)]
11627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11628pub struct PhysicalDeviceCubicClampFeaturesQCOM {
11629    pub s_type: StructureType,
11630    pub next: *mut c_void,
11631    pub cubic_range_clamp: Bool32,
11632}
11633
11634impl Default for PhysicalDeviceCubicClampFeaturesQCOM {
11635    #[inline]
11636    fn default() -> Self {
11637        Self {
11638            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM,
11639            next: ptr::null_mut(),
11640            cubic_range_clamp: Bool32::default(),
11641        }
11642    }
11643}
11644
11645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html>
11646#[repr(C)]
11647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11648pub struct PhysicalDeviceCubicWeightsFeaturesQCOM {
11649    pub s_type: StructureType,
11650    pub next: *mut c_void,
11651    pub selectable_cubic_weights: Bool32,
11652}
11653
11654impl Default for PhysicalDeviceCubicWeightsFeaturesQCOM {
11655    #[inline]
11656    fn default() -> Self {
11657        Self {
11658            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM,
11659            next: ptr::null_mut(),
11660            selectable_cubic_weights: Bool32::default(),
11661        }
11662    }
11663}
11664
11665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html>
11666#[repr(C)]
11667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11668pub struct PhysicalDeviceCudaKernelLaunchFeaturesNV {
11669    pub s_type: StructureType,
11670    pub next: *mut c_void,
11671    pub cuda_kernel_launch_features: Bool32,
11672}
11673
11674impl Default for PhysicalDeviceCudaKernelLaunchFeaturesNV {
11675    #[inline]
11676    fn default() -> Self {
11677        Self {
11678            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV,
11679            next: ptr::null_mut(),
11680            cuda_kernel_launch_features: Bool32::default(),
11681        }
11682    }
11683}
11684
11685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html>
11686#[repr(C)]
11687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11688pub struct PhysicalDeviceCudaKernelLaunchPropertiesNV {
11689    pub s_type: StructureType,
11690    pub next: *mut c_void,
11691    pub compute_capability_minor: u32,
11692    pub compute_capability_major: u32,
11693}
11694
11695impl Default for PhysicalDeviceCudaKernelLaunchPropertiesNV {
11696    #[inline]
11697    fn default() -> Self {
11698        Self {
11699            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV,
11700            next: ptr::null_mut(),
11701            compute_capability_minor: u32::default(),
11702            compute_capability_major: u32::default(),
11703        }
11704    }
11705}
11706
11707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>
11708#[repr(C)]
11709#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11710pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
11711    pub s_type: StructureType,
11712    pub next: *mut c_void,
11713    pub custom_border_colors: Bool32,
11714    pub custom_border_color_without_format: Bool32,
11715}
11716
11717impl Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
11718    #[inline]
11719    fn default() -> Self {
11720        Self {
11721            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
11722            next: ptr::null_mut(),
11723            custom_border_colors: Bool32::default(),
11724            custom_border_color_without_format: Bool32::default(),
11725        }
11726    }
11727}
11728
11729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>
11730#[repr(C)]
11731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11732pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
11733    pub s_type: StructureType,
11734    pub next: *mut c_void,
11735    pub max_custom_border_color_samplers: u32,
11736}
11737
11738impl Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
11739    #[inline]
11740    fn default() -> Self {
11741        Self {
11742            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
11743            next: ptr::null_mut(),
11744            max_custom_border_color_samplers: u32::default(),
11745        }
11746    }
11747}
11748
11749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>
11750#[repr(C)]
11751#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11752pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
11753    pub s_type: StructureType,
11754    pub next: *mut c_void,
11755    pub dedicated_allocation_image_aliasing: Bool32,
11756}
11757
11758impl Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
11759    #[inline]
11760    fn default() -> Self {
11761        Self {
11762            s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
11763            next: ptr::null_mut(),
11764            dedicated_allocation_image_aliasing: Bool32::default(),
11765        }
11766    }
11767}
11768
11769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html>
11770#[repr(C)]
11771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11772pub struct PhysicalDeviceDepthBiasControlFeaturesEXT {
11773    pub s_type: StructureType,
11774    pub next: *mut c_void,
11775    pub depth_bias_control: Bool32,
11776    pub least_representable_value_force_unorm_representation: Bool32,
11777    pub float_representation: Bool32,
11778    pub depth_bias_exact: Bool32,
11779}
11780
11781impl Default for PhysicalDeviceDepthBiasControlFeaturesEXT {
11782    #[inline]
11783    fn default() -> Self {
11784        Self {
11785            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT,
11786            next: ptr::null_mut(),
11787            depth_bias_control: Bool32::default(),
11788            least_representable_value_force_unorm_representation: Bool32::default(),
11789            float_representation: Bool32::default(),
11790            depth_bias_exact: Bool32::default(),
11791        }
11792    }
11793}
11794
11795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html>
11796#[repr(C)]
11797#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11798pub struct PhysicalDeviceDepthClampControlFeaturesEXT {
11799    pub s_type: StructureType,
11800    pub next: *mut c_void,
11801    pub depth_clamp_control: Bool32,
11802}
11803
11804impl Default for PhysicalDeviceDepthClampControlFeaturesEXT {
11805    #[inline]
11806    fn default() -> Self {
11807        Self {
11808            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT,
11809            next: ptr::null_mut(),
11810            depth_clamp_control: Bool32::default(),
11811        }
11812    }
11813}
11814
11815/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html>
11816#[repr(C)]
11817#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11818pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHR {
11819    pub s_type: StructureType,
11820    pub next: *mut c_void,
11821    pub depth_clamp_zero_one: Bool32,
11822}
11823
11824impl Default for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
11825    #[inline]
11826    fn default() -> Self {
11827        Self {
11828            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
11829            next: ptr::null_mut(),
11830            depth_clamp_zero_one: Bool32::default(),
11831        }
11832    }
11833}
11834
11835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>
11836#[repr(C)]
11837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11838pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
11839    pub s_type: StructureType,
11840    pub next: *mut c_void,
11841    pub depth_clip_control: Bool32,
11842}
11843
11844impl Default for PhysicalDeviceDepthClipControlFeaturesEXT {
11845    #[inline]
11846    fn default() -> Self {
11847        Self {
11848            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
11849            next: ptr::null_mut(),
11850            depth_clip_control: Bool32::default(),
11851        }
11852    }
11853}
11854
11855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>
11856#[repr(C)]
11857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11858pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
11859    pub s_type: StructureType,
11860    pub next: *mut c_void,
11861    pub depth_clip_enable: Bool32,
11862}
11863
11864impl Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
11865    #[inline]
11866    fn default() -> Self {
11867        Self {
11868            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
11869            next: ptr::null_mut(),
11870            depth_clip_enable: Bool32::default(),
11871        }
11872    }
11873}
11874
11875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>
11876#[repr(C)]
11877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11878pub struct PhysicalDeviceDepthStencilResolveProperties {
11879    pub s_type: StructureType,
11880    pub next: *mut c_void,
11881    pub supported_depth_resolve_modes: ResolveModeFlags,
11882    pub supported_stencil_resolve_modes: ResolveModeFlags,
11883    pub independent_resolve_none: Bool32,
11884    pub independent_resolve: Bool32,
11885}
11886
11887impl Default for PhysicalDeviceDepthStencilResolveProperties {
11888    #[inline]
11889    fn default() -> Self {
11890        Self {
11891            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
11892            next: ptr::null_mut(),
11893            supported_depth_resolve_modes: ResolveModeFlags::default(),
11894            supported_stencil_resolve_modes: ResolveModeFlags::default(),
11895            independent_resolve_none: Bool32::default(),
11896            independent_resolve: Bool32::default(),
11897        }
11898    }
11899}
11900
11901/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html>
11902#[repr(C)]
11903#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11904pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
11905    pub s_type: StructureType,
11906    pub next: *mut c_void,
11907    pub combined_image_sampler_density_map_descriptor_size: usize,
11908}
11909
11910impl Default for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
11911    #[inline]
11912    fn default() -> Self {
11913        Self {
11914            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT,
11915            next: ptr::null_mut(),
11916            combined_image_sampler_density_map_descriptor_size: usize::default(),
11917        }
11918    }
11919}
11920
11921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html>
11922#[repr(C)]
11923#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11924pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
11925    pub s_type: StructureType,
11926    pub next: *mut c_void,
11927    pub descriptor_buffer: Bool32,
11928    pub descriptor_buffer_capture_replay: Bool32,
11929    pub descriptor_buffer_image_layout_ignored: Bool32,
11930    pub descriptor_buffer_push_descriptors: Bool32,
11931}
11932
11933impl Default for PhysicalDeviceDescriptorBufferFeaturesEXT {
11934    #[inline]
11935    fn default() -> Self {
11936        Self {
11937            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
11938            next: ptr::null_mut(),
11939            descriptor_buffer: Bool32::default(),
11940            descriptor_buffer_capture_replay: Bool32::default(),
11941            descriptor_buffer_image_layout_ignored: Bool32::default(),
11942            descriptor_buffer_push_descriptors: Bool32::default(),
11943        }
11944    }
11945}
11946
11947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html>
11948#[repr(C)]
11949#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11950pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
11951    pub s_type: StructureType,
11952    pub next: *mut c_void,
11953    pub combined_image_sampler_descriptor_single_array: Bool32,
11954    pub bufferless_push_descriptors: Bool32,
11955    pub allow_sampler_image_view_post_submit_creation: Bool32,
11956    pub descriptor_buffer_offset_alignment: DeviceSize,
11957    pub max_descriptor_buffer_bindings: u32,
11958    pub max_resource_descriptor_buffer_bindings: u32,
11959    pub max_sampler_descriptor_buffer_bindings: u32,
11960    pub max_embedded_immutable_sampler_bindings: u32,
11961    pub max_embedded_immutable_samplers: u32,
11962    pub buffer_capture_replay_descriptor_data_size: usize,
11963    pub image_capture_replay_descriptor_data_size: usize,
11964    pub image_view_capture_replay_descriptor_data_size: usize,
11965    pub sampler_capture_replay_descriptor_data_size: usize,
11966    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
11967    pub sampler_descriptor_size: usize,
11968    pub combined_image_sampler_descriptor_size: usize,
11969    pub sampled_image_descriptor_size: usize,
11970    pub storage_image_descriptor_size: usize,
11971    pub uniform_texel_buffer_descriptor_size: usize,
11972    pub robust_uniform_texel_buffer_descriptor_size: usize,
11973    pub storage_texel_buffer_descriptor_size: usize,
11974    pub robust_storage_texel_buffer_descriptor_size: usize,
11975    pub uniform_buffer_descriptor_size: usize,
11976    pub robust_uniform_buffer_descriptor_size: usize,
11977    pub storage_buffer_descriptor_size: usize,
11978    pub robust_storage_buffer_descriptor_size: usize,
11979    pub input_attachment_descriptor_size: usize,
11980    pub acceleration_structure_descriptor_size: usize,
11981    pub max_sampler_descriptor_buffer_range: DeviceSize,
11982    pub max_resource_descriptor_buffer_range: DeviceSize,
11983    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
11984    pub resource_descriptor_buffer_address_space_size: DeviceSize,
11985    pub descriptor_buffer_address_space_size: DeviceSize,
11986}
11987
11988impl Default for PhysicalDeviceDescriptorBufferPropertiesEXT {
11989    #[inline]
11990    fn default() -> Self {
11991        Self {
11992            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT,
11993            next: ptr::null_mut(),
11994            combined_image_sampler_descriptor_single_array: Bool32::default(),
11995            bufferless_push_descriptors: Bool32::default(),
11996            allow_sampler_image_view_post_submit_creation: Bool32::default(),
11997            descriptor_buffer_offset_alignment: DeviceSize::default(),
11998            max_descriptor_buffer_bindings: u32::default(),
11999            max_resource_descriptor_buffer_bindings: u32::default(),
12000            max_sampler_descriptor_buffer_bindings: u32::default(),
12001            max_embedded_immutable_sampler_bindings: u32::default(),
12002            max_embedded_immutable_samplers: u32::default(),
12003            buffer_capture_replay_descriptor_data_size: usize::default(),
12004            image_capture_replay_descriptor_data_size: usize::default(),
12005            image_view_capture_replay_descriptor_data_size: usize::default(),
12006            sampler_capture_replay_descriptor_data_size: usize::default(),
12007            acceleration_structure_capture_replay_descriptor_data_size: usize::default(),
12008            sampler_descriptor_size: usize::default(),
12009            combined_image_sampler_descriptor_size: usize::default(),
12010            sampled_image_descriptor_size: usize::default(),
12011            storage_image_descriptor_size: usize::default(),
12012            uniform_texel_buffer_descriptor_size: usize::default(),
12013            robust_uniform_texel_buffer_descriptor_size: usize::default(),
12014            storage_texel_buffer_descriptor_size: usize::default(),
12015            robust_storage_texel_buffer_descriptor_size: usize::default(),
12016            uniform_buffer_descriptor_size: usize::default(),
12017            robust_uniform_buffer_descriptor_size: usize::default(),
12018            storage_buffer_descriptor_size: usize::default(),
12019            robust_storage_buffer_descriptor_size: usize::default(),
12020            input_attachment_descriptor_size: usize::default(),
12021            acceleration_structure_descriptor_size: usize::default(),
12022            max_sampler_descriptor_buffer_range: DeviceSize::default(),
12023            max_resource_descriptor_buffer_range: DeviceSize::default(),
12024            sampler_descriptor_buffer_address_space_size: DeviceSize::default(),
12025            resource_descriptor_buffer_address_space_size: DeviceSize::default(),
12026            descriptor_buffer_address_space_size: DeviceSize::default(),
12027        }
12028    }
12029}
12030
12031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>
12032#[repr(C)]
12033#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12034pub struct PhysicalDeviceDescriptorIndexingFeatures {
12035    pub s_type: StructureType,
12036    pub next: *mut c_void,
12037    pub shader_input_attachment_array_dynamic_indexing: Bool32,
12038    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
12039    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
12040    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
12041    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
12042    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
12043    pub shader_storage_image_array_non_uniform_indexing: Bool32,
12044    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
12045    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
12046    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
12047    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
12048    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
12049    pub descriptor_binding_storage_image_update_after_bind: Bool32,
12050    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
12051    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
12052    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
12053    pub descriptor_binding_update_unused_while_pending: Bool32,
12054    pub descriptor_binding_partially_bound: Bool32,
12055    pub descriptor_binding_variable_descriptor_count: Bool32,
12056    pub runtime_descriptor_array: Bool32,
12057}
12058
12059impl Default for PhysicalDeviceDescriptorIndexingFeatures {
12060    #[inline]
12061    fn default() -> Self {
12062        Self {
12063            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
12064            next: ptr::null_mut(),
12065            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
12066            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
12067            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
12068            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
12069            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
12070            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
12071            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
12072            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
12073            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
12074            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
12075            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
12076            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
12077            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
12078            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
12079            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
12080            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
12081            descriptor_binding_update_unused_while_pending: Bool32::default(),
12082            descriptor_binding_partially_bound: Bool32::default(),
12083            descriptor_binding_variable_descriptor_count: Bool32::default(),
12084            runtime_descriptor_array: Bool32::default(),
12085        }
12086    }
12087}
12088
12089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>
12090#[repr(C)]
12091#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12092pub struct PhysicalDeviceDescriptorIndexingProperties {
12093    pub s_type: StructureType,
12094    pub next: *mut c_void,
12095    pub max_update_after_bind_descriptors_in_all_pools: u32,
12096    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
12097    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
12098    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
12099    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
12100    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
12101    pub robust_buffer_access_update_after_bind: Bool32,
12102    pub quad_divergent_implicit_lod: Bool32,
12103    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
12104    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
12105    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
12106    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
12107    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
12108    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
12109    pub max_per_stage_update_after_bind_resources: u32,
12110    pub max_descriptor_set_update_after_bind_samplers: u32,
12111    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
12112    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
12113    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
12114    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
12115    pub max_descriptor_set_update_after_bind_sampled_images: u32,
12116    pub max_descriptor_set_update_after_bind_storage_images: u32,
12117    pub max_descriptor_set_update_after_bind_input_attachments: u32,
12118}
12119
12120impl Default for PhysicalDeviceDescriptorIndexingProperties {
12121    #[inline]
12122    fn default() -> Self {
12123        Self {
12124            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
12125            next: ptr::null_mut(),
12126            max_update_after_bind_descriptors_in_all_pools: u32::default(),
12127            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
12128            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
12129            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
12130            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
12131            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
12132            robust_buffer_access_update_after_bind: Bool32::default(),
12133            quad_divergent_implicit_lod: Bool32::default(),
12134            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
12135            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
12136            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
12137            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
12138            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
12139            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
12140            max_per_stage_update_after_bind_resources: u32::default(),
12141            max_descriptor_set_update_after_bind_samplers: u32::default(),
12142            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
12143            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
12144            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
12145            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
12146            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
12147            max_descriptor_set_update_after_bind_storage_images: u32::default(),
12148            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
12149        }
12150    }
12151}
12152
12153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html>
12154#[repr(C)]
12155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12156pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
12157    pub s_type: StructureType,
12158    pub next: *mut c_void,
12159    pub descriptor_pool_overallocation: Bool32,
12160}
12161
12162impl Default for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
12163    #[inline]
12164    fn default() -> Self {
12165        Self {
12166            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV,
12167            next: ptr::null_mut(),
12168            descriptor_pool_overallocation: Bool32::default(),
12169        }
12170    }
12171}
12172
12173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html>
12174#[repr(C)]
12175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12176pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
12177    pub s_type: StructureType,
12178    pub next: *mut c_void,
12179    pub descriptor_set_host_mapping: Bool32,
12180}
12181
12182impl Default for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
12183    #[inline]
12184    fn default() -> Self {
12185        Self {
12186            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,
12187            next: ptr::null_mut(),
12188            descriptor_set_host_mapping: Bool32::default(),
12189        }
12190    }
12191}
12192
12193/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html>
12194#[repr(C)]
12195#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12196pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
12197    pub s_type: StructureType,
12198    pub next: *mut c_void,
12199    pub device_generated_compute: Bool32,
12200    pub device_generated_compute_pipelines: Bool32,
12201    pub device_generated_compute_capture_replay: Bool32,
12202}
12203
12204impl Default for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
12205    #[inline]
12206    fn default() -> Self {
12207        Self {
12208            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV,
12209            next: ptr::null_mut(),
12210            device_generated_compute: Bool32::default(),
12211            device_generated_compute_pipelines: Bool32::default(),
12212            device_generated_compute_capture_replay: Bool32::default(),
12213        }
12214    }
12215}
12216
12217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html>
12218#[repr(C)]
12219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12220pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
12221    pub s_type: StructureType,
12222    pub next: *mut c_void,
12223    pub device_generated_commands: Bool32,
12224    pub dynamic_generated_pipeline_layout: Bool32,
12225}
12226
12227impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
12228    #[inline]
12229    fn default() -> Self {
12230        Self {
12231            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT,
12232            next: ptr::null_mut(),
12233            device_generated_commands: Bool32::default(),
12234            dynamic_generated_pipeline_layout: Bool32::default(),
12235        }
12236    }
12237}
12238
12239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>
12240#[repr(C)]
12241#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12242pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12243    pub s_type: StructureType,
12244    pub next: *mut c_void,
12245    pub device_generated_commands: Bool32,
12246}
12247
12248impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
12249    #[inline]
12250    fn default() -> Self {
12251        Self {
12252            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
12253            next: ptr::null_mut(),
12254            device_generated_commands: Bool32::default(),
12255        }
12256    }
12257}
12258
12259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html>
12260#[repr(C)]
12261#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12262pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
12263    pub s_type: StructureType,
12264    pub next: *mut c_void,
12265    pub max_indirect_pipeline_count: u32,
12266    pub max_indirect_shader_object_count: u32,
12267    pub max_indirect_sequence_count: u32,
12268    pub max_indirect_commands_token_count: u32,
12269    pub max_indirect_commands_token_offset: u32,
12270    pub max_indirect_commands_indirect_stride: u32,
12271    pub supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT,
12272    pub supported_indirect_commands_shader_stages: ShaderStageFlags,
12273    pub supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags,
12274    pub supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags,
12275    pub device_generated_commands_transform_feedback: Bool32,
12276    pub device_generated_commands_multi_draw_indirect_count: Bool32,
12277}
12278
12279impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
12280    #[inline]
12281    fn default() -> Self {
12282        Self {
12283            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT,
12284            next: ptr::null_mut(),
12285            max_indirect_pipeline_count: u32::default(),
12286            max_indirect_shader_object_count: u32::default(),
12287            max_indirect_sequence_count: u32::default(),
12288            max_indirect_commands_token_count: u32::default(),
12289            max_indirect_commands_token_offset: u32::default(),
12290            max_indirect_commands_indirect_stride: u32::default(),
12291            supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT::default(),
12292            supported_indirect_commands_shader_stages: ShaderStageFlags::default(),
12293            supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags::default(),
12294            supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags::default(),
12295            device_generated_commands_transform_feedback: Bool32::default(),
12296            device_generated_commands_multi_draw_indirect_count: Bool32::default(),
12297        }
12298    }
12299}
12300
12301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>
12302#[repr(C)]
12303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12304pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12305    pub s_type: StructureType,
12306    pub next: *mut c_void,
12307    pub max_graphics_shader_group_count: u32,
12308    pub max_indirect_sequence_count: u32,
12309    pub max_indirect_commands_token_count: u32,
12310    pub max_indirect_commands_stream_count: u32,
12311    pub max_indirect_commands_token_offset: u32,
12312    pub max_indirect_commands_stream_stride: u32,
12313    pub min_sequences_count_buffer_offset_alignment: u32,
12314    pub min_sequences_index_buffer_offset_alignment: u32,
12315    pub min_indirect_commands_buffer_offset_alignment: u32,
12316}
12317
12318impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
12319    #[inline]
12320    fn default() -> Self {
12321        Self {
12322            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
12323            next: ptr::null_mut(),
12324            max_graphics_shader_group_count: u32::default(),
12325            max_indirect_sequence_count: u32::default(),
12326            max_indirect_commands_token_count: u32::default(),
12327            max_indirect_commands_stream_count: u32::default(),
12328            max_indirect_commands_token_offset: u32::default(),
12329            max_indirect_commands_stream_stride: u32::default(),
12330            min_sequences_count_buffer_offset_alignment: u32::default(),
12331            min_sequences_index_buffer_offset_alignment: u32::default(),
12332            min_indirect_commands_buffer_offset_alignment: u32::default(),
12333        }
12334    }
12335}
12336
12337/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>
12338#[repr(C)]
12339#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12340pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
12341    pub s_type: StructureType,
12342    pub next: *mut c_void,
12343    pub device_memory_report: Bool32,
12344}
12345
12346impl Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
12347    #[inline]
12348    fn default() -> Self {
12349        Self {
12350            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
12351            next: ptr::null_mut(),
12352            device_memory_report: Bool32::default(),
12353        }
12354    }
12355}
12356
12357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>
12358#[repr(C)]
12359#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12360pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
12361    pub s_type: StructureType,
12362    pub next: *mut c_void,
12363    pub diagnostics_config: Bool32,
12364}
12365
12366impl Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
12367    #[inline]
12368    fn default() -> Self {
12369        Self {
12370            s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
12371            next: ptr::null_mut(),
12372            diagnostics_config: Bool32::default(),
12373        }
12374    }
12375}
12376
12377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>
12378#[repr(C)]
12379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12380pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
12381    pub s_type: StructureType,
12382    pub next: *mut c_void,
12383    pub max_discard_rectangles: u32,
12384}
12385
12386impl Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
12387    #[inline]
12388    fn default() -> Self {
12389        Self {
12390            s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
12391            next: ptr::null_mut(),
12392            max_discard_rectangles: u32::default(),
12393        }
12394    }
12395}
12396
12397/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html>
12398#[repr(C)]
12399#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12400pub struct PhysicalDeviceDisplacementMicromapFeaturesNV {
12401    pub s_type: StructureType,
12402    pub next: *mut c_void,
12403    pub displacement_micromap: Bool32,
12404}
12405
12406impl Default for PhysicalDeviceDisplacementMicromapFeaturesNV {
12407    #[inline]
12408    fn default() -> Self {
12409        Self {
12410            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV,
12411            next: ptr::null_mut(),
12412            displacement_micromap: Bool32::default(),
12413        }
12414    }
12415}
12416
12417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html>
12418#[repr(C)]
12419#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12420pub struct PhysicalDeviceDisplacementMicromapPropertiesNV {
12421    pub s_type: StructureType,
12422    pub next: *mut c_void,
12423    pub max_displacement_micromap_subdivision_level: u32,
12424}
12425
12426impl Default for PhysicalDeviceDisplacementMicromapPropertiesNV {
12427    #[inline]
12428    fn default() -> Self {
12429        Self {
12430            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV,
12431            next: ptr::null_mut(),
12432            max_displacement_micromap_subdivision_level: u32::default(),
12433        }
12434    }
12435}
12436
12437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html>
12438#[repr(C)]
12439#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12440pub struct PhysicalDeviceDriverProperties {
12441    pub s_type: StructureType,
12442    pub next: *mut c_void,
12443    pub driver_id: DriverId,
12444    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
12445    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
12446    pub conformance_version: ConformanceVersion,
12447}
12448
12449impl Default for PhysicalDeviceDriverProperties {
12450    #[inline]
12451    fn default() -> Self {
12452        Self {
12453            s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
12454            next: ptr::null_mut(),
12455            driver_id: DriverId::default(),
12456            driver_name: StringArray::default(),
12457            driver_info: StringArray::default(),
12458            conformance_version: ConformanceVersion::default(),
12459        }
12460    }
12461}
12462
12463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>
12464#[repr(C)]
12465#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12466pub struct PhysicalDeviceDrmPropertiesEXT {
12467    pub s_type: StructureType,
12468    pub next: *mut c_void,
12469    pub has_primary: Bool32,
12470    pub has_render: Bool32,
12471    pub primary_major: i64,
12472    pub primary_minor: i64,
12473    pub render_major: i64,
12474    pub render_minor: i64,
12475}
12476
12477impl Default for PhysicalDeviceDrmPropertiesEXT {
12478    #[inline]
12479    fn default() -> Self {
12480        Self {
12481            s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
12482            next: ptr::null_mut(),
12483            has_primary: Bool32::default(),
12484            has_render: Bool32::default(),
12485            primary_major: i64::default(),
12486            primary_minor: i64::default(),
12487            render_major: i64::default(),
12488            render_minor: i64::default(),
12489        }
12490    }
12491}
12492
12493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html>
12494#[repr(C)]
12495#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12496pub struct PhysicalDeviceDynamicRenderingFeatures {
12497    pub s_type: StructureType,
12498    pub next: *mut c_void,
12499    pub dynamic_rendering: Bool32,
12500}
12501
12502impl Default for PhysicalDeviceDynamicRenderingFeatures {
12503    #[inline]
12504    fn default() -> Self {
12505        Self {
12506            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
12507            next: ptr::null_mut(),
12508            dynamic_rendering: Bool32::default(),
12509        }
12510    }
12511}
12512
12513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html>
12514#[repr(C)]
12515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12516pub struct PhysicalDeviceDynamicRenderingLocalReadFeatures {
12517    pub s_type: StructureType,
12518    pub next: *mut c_void,
12519    pub dynamic_rendering_local_read: Bool32,
12520}
12521
12522impl Default for PhysicalDeviceDynamicRenderingLocalReadFeatures {
12523    #[inline]
12524    fn default() -> Self {
12525        Self {
12526            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,
12527            next: ptr::null_mut(),
12528            dynamic_rendering_local_read: Bool32::default(),
12529        }
12530    }
12531}
12532
12533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html>
12534#[repr(C)]
12535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12536pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
12537    pub s_type: StructureType,
12538    pub next: *mut c_void,
12539    pub dynamic_rendering_unused_attachments: Bool32,
12540}
12541
12542impl Default for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
12543    #[inline]
12544    fn default() -> Self {
12545        Self {
12546            s_type:
12547                StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT,
12548            next: ptr::null_mut(),
12549            dynamic_rendering_unused_attachments: Bool32::default(),
12550        }
12551    }
12552}
12553
12554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>
12555#[repr(C)]
12556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12557pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
12558    pub s_type: StructureType,
12559    pub next: *mut c_void,
12560    pub exclusive_scissor: Bool32,
12561}
12562
12563impl Default for PhysicalDeviceExclusiveScissorFeaturesNV {
12564    #[inline]
12565    fn default() -> Self {
12566        Self {
12567            s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
12568            next: ptr::null_mut(),
12569            exclusive_scissor: Bool32::default(),
12570        }
12571    }
12572}
12573
12574/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>
12575#[repr(C)]
12576#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12577pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
12578    pub s_type: StructureType,
12579    pub next: *mut c_void,
12580    pub extended_dynamic_state2: Bool32,
12581    pub extended_dynamic_state2_logic_op: Bool32,
12582    pub extended_dynamic_state2_patch_control_points: Bool32,
12583}
12584
12585impl Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
12586    #[inline]
12587    fn default() -> Self {
12588        Self {
12589            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
12590            next: ptr::null_mut(),
12591            extended_dynamic_state2: Bool32::default(),
12592            extended_dynamic_state2_logic_op: Bool32::default(),
12593            extended_dynamic_state2_patch_control_points: Bool32::default(),
12594        }
12595    }
12596}
12597
12598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html>
12599#[repr(C)]
12600#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12601pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXT {
12602    pub s_type: StructureType,
12603    pub next: *mut c_void,
12604    pub extended_dynamic_state3_tessellation_domain_origin: Bool32,
12605    pub extended_dynamic_state_3depth_clamp_enable: Bool32,
12606    pub extended_dynamic_state3_polygon_mode: Bool32,
12607    pub extended_dynamic_state3_rasterization_samples: Bool32,
12608    pub extended_dynamic_state3_sample_mask: Bool32,
12609    pub extended_dynamic_state3_alpha_to_coverage_enable: Bool32,
12610    pub extended_dynamic_state3_alpha_to_one_enable: Bool32,
12611    pub extended_dynamic_state3_logic_op_enable: Bool32,
12612    pub extended_dynamic_state3_color_blend_enable: Bool32,
12613    pub extended_dynamic_state3_color_blend_equation: Bool32,
12614    pub extended_dynamic_state3_color_write_mask: Bool32,
12615    pub extended_dynamic_state3_rasterization_stream: Bool32,
12616    pub extended_dynamic_state3_conservative_rasterization_mode: Bool32,
12617    pub extended_dynamic_state3_extra_primitive_overestimation_size: Bool32,
12618    pub extended_dynamic_state_3depth_clip_enable: Bool32,
12619    pub extended_dynamic_state3_sample_locations_enable: Bool32,
12620    pub extended_dynamic_state3_color_blend_advanced: Bool32,
12621    pub extended_dynamic_state3_provoking_vertex_mode: Bool32,
12622    pub extended_dynamic_state3_line_rasterization_mode: Bool32,
12623    pub extended_dynamic_state3_line_stipple_enable: Bool32,
12624    pub extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32,
12625    pub extended_dynamic_state3_viewport_w_scaling_enable: Bool32,
12626    pub extended_dynamic_state3_viewport_swizzle: Bool32,
12627    pub extended_dynamic_state3_coverage_to_color_enable: Bool32,
12628    pub extended_dynamic_state3_coverage_to_color_location: Bool32,
12629    pub extended_dynamic_state3_coverage_modulation_mode: Bool32,
12630    pub extended_dynamic_state3_coverage_modulation_table_enable: Bool32,
12631    pub extended_dynamic_state3_coverage_modulation_table: Bool32,
12632    pub extended_dynamic_state3_coverage_reduction_mode: Bool32,
12633    pub extended_dynamic_state3_representative_fragment_test_enable: Bool32,
12634    pub extended_dynamic_state3_shading_rate_image_enable: Bool32,
12635}
12636
12637impl Default for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
12638    #[inline]
12639    fn default() -> Self {
12640        Self {
12641            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
12642            next: ptr::null_mut(),
12643            extended_dynamic_state3_tessellation_domain_origin: Bool32::default(),
12644            extended_dynamic_state_3depth_clamp_enable: Bool32::default(),
12645            extended_dynamic_state3_polygon_mode: Bool32::default(),
12646            extended_dynamic_state3_rasterization_samples: Bool32::default(),
12647            extended_dynamic_state3_sample_mask: Bool32::default(),
12648            extended_dynamic_state3_alpha_to_coverage_enable: Bool32::default(),
12649            extended_dynamic_state3_alpha_to_one_enable: Bool32::default(),
12650            extended_dynamic_state3_logic_op_enable: Bool32::default(),
12651            extended_dynamic_state3_color_blend_enable: Bool32::default(),
12652            extended_dynamic_state3_color_blend_equation: Bool32::default(),
12653            extended_dynamic_state3_color_write_mask: Bool32::default(),
12654            extended_dynamic_state3_rasterization_stream: Bool32::default(),
12655            extended_dynamic_state3_conservative_rasterization_mode: Bool32::default(),
12656            extended_dynamic_state3_extra_primitive_overestimation_size: Bool32::default(),
12657            extended_dynamic_state_3depth_clip_enable: Bool32::default(),
12658            extended_dynamic_state3_sample_locations_enable: Bool32::default(),
12659            extended_dynamic_state3_color_blend_advanced: Bool32::default(),
12660            extended_dynamic_state3_provoking_vertex_mode: Bool32::default(),
12661            extended_dynamic_state3_line_rasterization_mode: Bool32::default(),
12662            extended_dynamic_state3_line_stipple_enable: Bool32::default(),
12663            extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32::default(),
12664            extended_dynamic_state3_viewport_w_scaling_enable: Bool32::default(),
12665            extended_dynamic_state3_viewport_swizzle: Bool32::default(),
12666            extended_dynamic_state3_coverage_to_color_enable: Bool32::default(),
12667            extended_dynamic_state3_coverage_to_color_location: Bool32::default(),
12668            extended_dynamic_state3_coverage_modulation_mode: Bool32::default(),
12669            extended_dynamic_state3_coverage_modulation_table_enable: Bool32::default(),
12670            extended_dynamic_state3_coverage_modulation_table: Bool32::default(),
12671            extended_dynamic_state3_coverage_reduction_mode: Bool32::default(),
12672            extended_dynamic_state3_representative_fragment_test_enable: Bool32::default(),
12673            extended_dynamic_state3_shading_rate_image_enable: Bool32::default(),
12674        }
12675    }
12676}
12677
12678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html>
12679#[repr(C)]
12680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12681pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXT {
12682    pub s_type: StructureType,
12683    pub next: *mut c_void,
12684    pub dynamic_primitive_topology_unrestricted: Bool32,
12685}
12686
12687impl Default for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
12688    #[inline]
12689    fn default() -> Self {
12690        Self {
12691            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT,
12692            next: ptr::null_mut(),
12693            dynamic_primitive_topology_unrestricted: Bool32::default(),
12694        }
12695    }
12696}
12697
12698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>
12699#[repr(C)]
12700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12701pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
12702    pub s_type: StructureType,
12703    pub next: *mut c_void,
12704    pub extended_dynamic_state: Bool32,
12705}
12706
12707impl Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
12708    #[inline]
12709    fn default() -> Self {
12710        Self {
12711            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
12712            next: ptr::null_mut(),
12713            extended_dynamic_state: Bool32::default(),
12714        }
12715    }
12716}
12717
12718/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html>
12719#[repr(C)]
12720#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12721pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
12722    pub s_type: StructureType,
12723    pub next: *mut c_void,
12724    pub extended_sparse_address_space: Bool32,
12725}
12726
12727impl Default for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
12728    #[inline]
12729    fn default() -> Self {
12730        Self {
12731            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV,
12732            next: ptr::null_mut(),
12733            extended_sparse_address_space: Bool32::default(),
12734        }
12735    }
12736}
12737
12738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html>
12739#[repr(C)]
12740#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12741pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
12742    pub s_type: StructureType,
12743    pub next: *mut c_void,
12744    pub extended_sparse_address_space_size: DeviceSize,
12745    pub extended_sparse_image_usage_flags: ImageUsageFlags,
12746    pub extended_sparse_buffer_usage_flags: BufferUsageFlags,
12747}
12748
12749impl Default for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
12750    #[inline]
12751    fn default() -> Self {
12752        Self {
12753            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
12754            next: ptr::null_mut(),
12755            extended_sparse_address_space_size: DeviceSize::default(),
12756            extended_sparse_image_usage_flags: ImageUsageFlags::default(),
12757            extended_sparse_buffer_usage_flags: BufferUsageFlags::default(),
12758        }
12759    }
12760}
12761
12762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html>
12763#[repr(C)]
12764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12765pub struct PhysicalDeviceExternalBufferInfo {
12766    pub s_type: StructureType,
12767    pub next: *const c_void,
12768    pub flags: BufferCreateFlags,
12769    pub usage: BufferUsageFlags,
12770    pub handle_type: ExternalMemoryHandleTypeFlags,
12771}
12772
12773impl Default for PhysicalDeviceExternalBufferInfo {
12774    #[inline]
12775    fn default() -> Self {
12776        Self {
12777            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
12778            next: ptr::null(),
12779            flags: BufferCreateFlags::default(),
12780            usage: BufferUsageFlags::default(),
12781            handle_type: ExternalMemoryHandleTypeFlags::default(),
12782        }
12783    }
12784}
12785
12786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html>
12787#[repr(C)]
12788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12789pub struct PhysicalDeviceExternalFenceInfo {
12790    pub s_type: StructureType,
12791    pub next: *const c_void,
12792    pub handle_type: ExternalFenceHandleTypeFlags,
12793}
12794
12795impl Default for PhysicalDeviceExternalFenceInfo {
12796    #[inline]
12797    fn default() -> Self {
12798        Self {
12799            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
12800            next: ptr::null(),
12801            handle_type: ExternalFenceHandleTypeFlags::default(),
12802        }
12803    }
12804}
12805
12806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html>
12807#[repr(C)]
12808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12809pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROID {
12810    pub s_type: StructureType,
12811    pub next: *mut c_void,
12812    pub external_format_resolve: Bool32,
12813}
12814
12815impl Default for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
12816    #[inline]
12817    fn default() -> Self {
12818        Self {
12819            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID,
12820            next: ptr::null_mut(),
12821            external_format_resolve: Bool32::default(),
12822        }
12823    }
12824}
12825
12826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html>
12827#[repr(C)]
12828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12829pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROID {
12830    pub s_type: StructureType,
12831    pub next: *mut c_void,
12832    pub null_color_attachment_with_external_format_resolve: Bool32,
12833    pub external_format_resolve_chroma_offset_x: ChromaLocation,
12834    pub external_format_resolve_chroma_offset_y: ChromaLocation,
12835}
12836
12837impl Default for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
12838    #[inline]
12839    fn default() -> Self {
12840        Self {
12841            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID,
12842            next: ptr::null_mut(),
12843            null_color_attachment_with_external_format_resolve: Bool32::default(),
12844            external_format_resolve_chroma_offset_x: ChromaLocation::default(),
12845            external_format_resolve_chroma_offset_y: ChromaLocation::default(),
12846        }
12847    }
12848}
12849
12850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>
12851#[repr(C)]
12852#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12853pub struct PhysicalDeviceExternalImageFormatInfo {
12854    pub s_type: StructureType,
12855    pub next: *const c_void,
12856    pub handle_type: ExternalMemoryHandleTypeFlags,
12857}
12858
12859impl Default for PhysicalDeviceExternalImageFormatInfo {
12860    #[inline]
12861    fn default() -> Self {
12862        Self {
12863            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
12864            next: ptr::null(),
12865            handle_type: ExternalMemoryHandleTypeFlags::default(),
12866        }
12867    }
12868}
12869
12870/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>
12871#[repr(C)]
12872#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12873pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
12874    pub s_type: StructureType,
12875    pub next: *mut c_void,
12876    pub min_imported_host_pointer_alignment: DeviceSize,
12877}
12878
12879impl Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
12880    #[inline]
12881    fn default() -> Self {
12882        Self {
12883            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
12884            next: ptr::null_mut(),
12885            min_imported_host_pointer_alignment: DeviceSize::default(),
12886        }
12887    }
12888}
12889
12890/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>
12891#[repr(C)]
12892#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12893pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
12894    pub s_type: StructureType,
12895    pub next: *mut c_void,
12896    pub external_memory_rdma: Bool32,
12897}
12898
12899impl Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
12900    #[inline]
12901    fn default() -> Self {
12902        Self {
12903            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
12904            next: ptr::null_mut(),
12905            external_memory_rdma: Bool32::default(),
12906        }
12907    }
12908}
12909
12910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.html>
12911#[repr(C)]
12912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12913pub struct PhysicalDeviceExternalMemorySciBufFeaturesNV {
12914    pub s_type: StructureType,
12915    pub next: *mut c_void,
12916    pub sci_buf_import: Bool32,
12917    pub sci_buf_export: Bool32,
12918}
12919
12920impl Default for PhysicalDeviceExternalMemorySciBufFeaturesNV {
12921    #[inline]
12922    fn default() -> Self {
12923        Self {
12924            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
12925            next: ptr::null_mut(),
12926            sci_buf_import: Bool32::default(),
12927            sci_buf_export: Bool32::default(),
12928        }
12929    }
12930}
12931
12932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html>
12933#[repr(C)]
12934#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12935pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
12936    pub s_type: StructureType,
12937    pub next: *mut c_void,
12938    pub screen_buffer_import: Bool32,
12939}
12940
12941impl Default for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
12942    #[inline]
12943    fn default() -> Self {
12944        Self {
12945            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX,
12946            next: ptr::null_mut(),
12947            screen_buffer_import: Bool32::default(),
12948        }
12949    }
12950}
12951
12952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSync2FeaturesNV.html>
12953#[repr(C)]
12954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12955pub struct PhysicalDeviceExternalSciSync2FeaturesNV {
12956    pub s_type: StructureType,
12957    pub next: *mut c_void,
12958    pub sci_sync_fence: Bool32,
12959    pub sci_sync_semaphore2: Bool32,
12960    pub sci_sync_import: Bool32,
12961    pub sci_sync_export: Bool32,
12962}
12963
12964impl Default for PhysicalDeviceExternalSciSync2FeaturesNV {
12965    #[inline]
12966    fn default() -> Self {
12967        Self {
12968            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV,
12969            next: ptr::null_mut(),
12970            sci_sync_fence: Bool32::default(),
12971            sci_sync_semaphore2: Bool32::default(),
12972            sci_sync_import: Bool32::default(),
12973            sci_sync_export: Bool32::default(),
12974        }
12975    }
12976}
12977
12978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSyncFeaturesNV.html>
12979#[repr(C)]
12980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12981pub struct PhysicalDeviceExternalSciSyncFeaturesNV {
12982    pub s_type: StructureType,
12983    pub next: *mut c_void,
12984    pub sci_sync_fence: Bool32,
12985    pub sci_sync_semaphore: Bool32,
12986    pub sci_sync_import: Bool32,
12987    pub sci_sync_export: Bool32,
12988}
12989
12990impl Default for PhysicalDeviceExternalSciSyncFeaturesNV {
12991    #[inline]
12992    fn default() -> Self {
12993        Self {
12994            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV,
12995            next: ptr::null_mut(),
12996            sci_sync_fence: Bool32::default(),
12997            sci_sync_semaphore: Bool32::default(),
12998            sci_sync_import: Bool32::default(),
12999            sci_sync_export: Bool32::default(),
13000        }
13001    }
13002}
13003
13004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>
13005#[repr(C)]
13006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13007pub struct PhysicalDeviceExternalSemaphoreInfo {
13008    pub s_type: StructureType,
13009    pub next: *const c_void,
13010    pub handle_type: ExternalSemaphoreHandleTypeFlags,
13011}
13012
13013impl Default for PhysicalDeviceExternalSemaphoreInfo {
13014    #[inline]
13015    fn default() -> Self {
13016        Self {
13017            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
13018            next: ptr::null(),
13019            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
13020        }
13021    }
13022}
13023
13024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html>
13025#[repr(C)]
13026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13027pub struct PhysicalDeviceFaultFeaturesEXT {
13028    pub s_type: StructureType,
13029    pub next: *mut c_void,
13030    pub device_fault: Bool32,
13031    pub device_fault_vendor_binary: Bool32,
13032}
13033
13034impl Default for PhysicalDeviceFaultFeaturesEXT {
13035    #[inline]
13036    fn default() -> Self {
13037        Self {
13038            s_type: StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT,
13039            next: ptr::null_mut(),
13040            device_fault: Bool32::default(),
13041            device_fault_vendor_binary: Bool32::default(),
13042        }
13043    }
13044}
13045
13046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html>
13047#[repr(C)]
13048#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
13049pub struct PhysicalDeviceFeatures {
13050    pub robust_buffer_access: Bool32,
13051    pub full_draw_index_uint32: Bool32,
13052    pub image_cube_array: Bool32,
13053    pub independent_blend: Bool32,
13054    pub geometry_shader: Bool32,
13055    pub tessellation_shader: Bool32,
13056    pub sample_rate_shading: Bool32,
13057    pub dual_src_blend: Bool32,
13058    pub logic_op: Bool32,
13059    pub multi_draw_indirect: Bool32,
13060    pub draw_indirect_first_instance: Bool32,
13061    pub depth_clamp: Bool32,
13062    pub depth_bias_clamp: Bool32,
13063    pub fill_mode_non_solid: Bool32,
13064    pub depth_bounds: Bool32,
13065    pub wide_lines: Bool32,
13066    pub large_points: Bool32,
13067    pub alpha_to_one: Bool32,
13068    pub multi_viewport: Bool32,
13069    pub sampler_anisotropy: Bool32,
13070    pub texture_compression_etc2: Bool32,
13071    pub texture_compression_astc_ldr: Bool32,
13072    pub texture_compression_bc: Bool32,
13073    pub occlusion_query_precise: Bool32,
13074    pub pipeline_statistics_query: Bool32,
13075    pub vertex_pipeline_stores_and_atomics: Bool32,
13076    pub fragment_stores_and_atomics: Bool32,
13077    pub shader_tessellation_and_geometry_point_size: Bool32,
13078    pub shader_image_gather_extended: Bool32,
13079    pub shader_storage_image_extended_formats: Bool32,
13080    pub shader_storage_image_multisample: Bool32,
13081    pub shader_storage_image_read_without_format: Bool32,
13082    pub shader_storage_image_write_without_format: Bool32,
13083    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
13084    pub shader_sampled_image_array_dynamic_indexing: Bool32,
13085    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
13086    pub shader_storage_image_array_dynamic_indexing: Bool32,
13087    pub shader_clip_distance: Bool32,
13088    pub shader_cull_distance: Bool32,
13089    pub shader_float64: Bool32,
13090    pub shader_int64: Bool32,
13091    pub shader_int16: Bool32,
13092    pub shader_resource_residency: Bool32,
13093    pub shader_resource_min_lod: Bool32,
13094    pub sparse_binding: Bool32,
13095    pub sparse_residency_buffer: Bool32,
13096    pub sparse_residency_image_2d: Bool32,
13097    pub sparse_residency_image_3d: Bool32,
13098    pub sparse_residency2_samples: Bool32,
13099    pub sparse_residency4_samples: Bool32,
13100    pub sparse_residency8_samples: Bool32,
13101    pub sparse_residency16_samples: Bool32,
13102    pub sparse_residency_aliased: Bool32,
13103    pub variable_multisample_rate: Bool32,
13104    pub inherited_queries: Bool32,
13105}
13106
13107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html>
13108#[repr(C)]
13109#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13110pub struct PhysicalDeviceFeatures2 {
13111    pub s_type: StructureType,
13112    pub next: *mut c_void,
13113    pub features: PhysicalDeviceFeatures,
13114}
13115
13116impl Default for PhysicalDeviceFeatures2 {
13117    #[inline]
13118    fn default() -> Self {
13119        Self {
13120            s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
13121            next: ptr::null_mut(),
13122            features: PhysicalDeviceFeatures::default(),
13123        }
13124    }
13125}
13126
13127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html>
13128#[repr(C)]
13129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13130pub struct PhysicalDeviceFloatControlsProperties {
13131    pub s_type: StructureType,
13132    pub next: *mut c_void,
13133    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
13134    pub rounding_mode_independence: ShaderFloatControlsIndependence,
13135    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
13136    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
13137    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
13138    pub shader_denorm_preserve_float16: Bool32,
13139    pub shader_denorm_preserve_float32: Bool32,
13140    pub shader_denorm_preserve_float64: Bool32,
13141    pub shader_denorm_flush_to_zero_float16: Bool32,
13142    pub shader_denorm_flush_to_zero_float32: Bool32,
13143    pub shader_denorm_flush_to_zero_float64: Bool32,
13144    pub shader_rounding_mode_rte_float16: Bool32,
13145    pub shader_rounding_mode_rte_float32: Bool32,
13146    pub shader_rounding_mode_rte_float64: Bool32,
13147    pub shader_rounding_mode_rtz_float16: Bool32,
13148    pub shader_rounding_mode_rtz_float32: Bool32,
13149    pub shader_rounding_mode_rtz_float64: Bool32,
13150}
13151
13152impl Default for PhysicalDeviceFloatControlsProperties {
13153    #[inline]
13154    fn default() -> Self {
13155        Self {
13156            s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
13157            next: ptr::null_mut(),
13158            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
13159            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
13160            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
13161            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
13162            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
13163            shader_denorm_preserve_float16: Bool32::default(),
13164            shader_denorm_preserve_float32: Bool32::default(),
13165            shader_denorm_preserve_float64: Bool32::default(),
13166            shader_denorm_flush_to_zero_float16: Bool32::default(),
13167            shader_denorm_flush_to_zero_float32: Bool32::default(),
13168            shader_denorm_flush_to_zero_float64: Bool32::default(),
13169            shader_rounding_mode_rte_float16: Bool32::default(),
13170            shader_rounding_mode_rte_float32: Bool32::default(),
13171            shader_rounding_mode_rte_float64: Bool32::default(),
13172            shader_rounding_mode_rtz_float16: Bool32::default(),
13173            shader_rounding_mode_rtz_float32: Bool32::default(),
13174            shader_rounding_mode_rtz_float64: Bool32::default(),
13175        }
13176    }
13177}
13178
13179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>
13180#[repr(C)]
13181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13182pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
13183    pub s_type: StructureType,
13184    pub next: *mut c_void,
13185    pub fragment_density_map_deferred: Bool32,
13186}
13187
13188impl Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
13189    #[inline]
13190    fn default() -> Self {
13191        Self {
13192            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
13193            next: ptr::null_mut(),
13194            fragment_density_map_deferred: Bool32::default(),
13195        }
13196    }
13197}
13198
13199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>
13200#[repr(C)]
13201#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13202pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
13203    pub s_type: StructureType,
13204    pub next: *mut c_void,
13205    pub subsampled_loads: Bool32,
13206    pub subsampled_coarse_reconstruction_early_access: Bool32,
13207    pub max_subsampled_array_layers: u32,
13208    pub max_descriptor_set_subsampled_samplers: u32,
13209}
13210
13211impl Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
13212    #[inline]
13213    fn default() -> Self {
13214        Self {
13215            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
13216            next: ptr::null_mut(),
13217            subsampled_loads: Bool32::default(),
13218            subsampled_coarse_reconstruction_early_access: Bool32::default(),
13219            max_subsampled_array_layers: u32::default(),
13220            max_descriptor_set_subsampled_samplers: u32::default(),
13221        }
13222    }
13223}
13224
13225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>
13226#[repr(C)]
13227#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13228pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
13229    pub s_type: StructureType,
13230    pub next: *mut c_void,
13231    pub fragment_density_map: Bool32,
13232    pub fragment_density_map_dynamic: Bool32,
13233    pub fragment_density_map_non_subsampled_images: Bool32,
13234}
13235
13236impl Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
13237    #[inline]
13238    fn default() -> Self {
13239        Self {
13240            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
13241            next: ptr::null_mut(),
13242            fragment_density_map: Bool32::default(),
13243            fragment_density_map_dynamic: Bool32::default(),
13244            fragment_density_map_non_subsampled_images: Bool32::default(),
13245        }
13246    }
13247}
13248
13249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>
13250#[repr(C)]
13251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13252pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
13253    pub s_type: StructureType,
13254    pub next: *mut c_void,
13255    pub fragment_density_map_offset: Bool32,
13256}
13257
13258impl Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
13259    #[inline]
13260    fn default() -> Self {
13261        Self {
13262            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM,
13263            next: ptr::null_mut(),
13264            fragment_density_map_offset: Bool32::default(),
13265        }
13266    }
13267}
13268
13269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>
13270#[repr(C)]
13271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13272pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
13273    pub s_type: StructureType,
13274    pub next: *mut c_void,
13275    pub fragment_density_offset_granularity: Extent2D,
13276}
13277
13278impl Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
13279    #[inline]
13280    fn default() -> Self {
13281        Self {
13282            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM,
13283            next: ptr::null_mut(),
13284            fragment_density_offset_granularity: Extent2D::default(),
13285        }
13286    }
13287}
13288
13289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>
13290#[repr(C)]
13291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13292pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
13293    pub s_type: StructureType,
13294    pub next: *mut c_void,
13295    pub min_fragment_density_texel_size: Extent2D,
13296    pub max_fragment_density_texel_size: Extent2D,
13297    pub fragment_density_invocations: Bool32,
13298}
13299
13300impl Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
13301    #[inline]
13302    fn default() -> Self {
13303        Self {
13304            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
13305            next: ptr::null_mut(),
13306            min_fragment_density_texel_size: Extent2D::default(),
13307            max_fragment_density_texel_size: Extent2D::default(),
13308            fragment_density_invocations: Bool32::default(),
13309        }
13310    }
13311}
13312
13313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html>
13314#[repr(C)]
13315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13316pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
13317    pub s_type: StructureType,
13318    pub next: *mut c_void,
13319    pub fragment_shader_barycentric: Bool32,
13320}
13321
13322impl Default for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
13323    #[inline]
13324    fn default() -> Self {
13325        Self {
13326            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
13327            next: ptr::null_mut(),
13328            fragment_shader_barycentric: Bool32::default(),
13329        }
13330    }
13331}
13332
13333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html>
13334#[repr(C)]
13335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13336pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
13337    pub s_type: StructureType,
13338    pub next: *mut c_void,
13339    pub tri_strip_vertex_order_independent_of_provoking_vertex: Bool32,
13340}
13341
13342impl Default for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
13343    #[inline]
13344    fn default() -> Self {
13345        Self {
13346            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR,
13347            next: ptr::null_mut(),
13348            tri_strip_vertex_order_independent_of_provoking_vertex: Bool32::default(),
13349        }
13350    }
13351}
13352
13353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>
13354#[repr(C)]
13355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13356pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
13357    pub s_type: StructureType,
13358    pub next: *mut c_void,
13359    pub fragment_shader_sample_interlock: Bool32,
13360    pub fragment_shader_pixel_interlock: Bool32,
13361    pub fragment_shader_shading_rate_interlock: Bool32,
13362}
13363
13364impl Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
13365    #[inline]
13366    fn default() -> Self {
13367        Self {
13368            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
13369            next: ptr::null_mut(),
13370            fragment_shader_sample_interlock: Bool32::default(),
13371            fragment_shader_pixel_interlock: Bool32::default(),
13372            fragment_shader_shading_rate_interlock: Bool32::default(),
13373        }
13374    }
13375}
13376
13377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>
13378#[repr(C)]
13379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13380pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
13381    pub s_type: StructureType,
13382    pub next: *mut c_void,
13383    pub fragment_shading_rate_enums: Bool32,
13384    pub supersample_fragment_shading_rates: Bool32,
13385    pub no_invocation_fragment_shading_rates: Bool32,
13386}
13387
13388impl Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
13389    #[inline]
13390    fn default() -> Self {
13391        Self {
13392            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
13393            next: ptr::null_mut(),
13394            fragment_shading_rate_enums: Bool32::default(),
13395            supersample_fragment_shading_rates: Bool32::default(),
13396            no_invocation_fragment_shading_rates: Bool32::default(),
13397        }
13398    }
13399}
13400
13401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>
13402#[repr(C)]
13403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13404pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
13405    pub s_type: StructureType,
13406    pub next: *mut c_void,
13407    pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
13408}
13409
13410impl Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
13411    #[inline]
13412    fn default() -> Self {
13413        Self {
13414            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
13415            next: ptr::null_mut(),
13416            max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
13417        }
13418    }
13419}
13420
13421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>
13422#[repr(C)]
13423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13424pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
13425    pub s_type: StructureType,
13426    pub next: *mut c_void,
13427    pub pipeline_fragment_shading_rate: Bool32,
13428    pub primitive_fragment_shading_rate: Bool32,
13429    pub attachment_fragment_shading_rate: Bool32,
13430}
13431
13432impl Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
13433    #[inline]
13434    fn default() -> Self {
13435        Self {
13436            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
13437            next: ptr::null_mut(),
13438            pipeline_fragment_shading_rate: Bool32::default(),
13439            primitive_fragment_shading_rate: Bool32::default(),
13440            attachment_fragment_shading_rate: Bool32::default(),
13441        }
13442    }
13443}
13444
13445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>
13446#[repr(C)]
13447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13448pub struct PhysicalDeviceFragmentShadingRateKHR {
13449    pub s_type: StructureType,
13450    pub next: *mut c_void,
13451    pub sample_counts: SampleCountFlags,
13452    pub fragment_size: Extent2D,
13453}
13454
13455impl Default for PhysicalDeviceFragmentShadingRateKHR {
13456    #[inline]
13457    fn default() -> Self {
13458        Self {
13459            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
13460            next: ptr::null_mut(),
13461            sample_counts: SampleCountFlags::default(),
13462            fragment_size: Extent2D::default(),
13463        }
13464    }
13465}
13466
13467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>
13468#[repr(C)]
13469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13470pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
13471    pub s_type: StructureType,
13472    pub next: *mut c_void,
13473    pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
13474    pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
13475    pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
13476    pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
13477    pub layered_shading_rate_attachments: Bool32,
13478    pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
13479    pub max_fragment_size: Extent2D,
13480    pub max_fragment_size_aspect_ratio: u32,
13481    pub max_fragment_shading_rate_coverage_samples: u32,
13482    pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
13483    pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
13484    pub fragment_shading_rate_with_sample_mask: Bool32,
13485    pub fragment_shading_rate_with_shader_sample_mask: Bool32,
13486    pub fragment_shading_rate_with_conservative_rasterization: Bool32,
13487    pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
13488    pub fragment_shading_rate_with_custom_sample_locations: Bool32,
13489    pub fragment_shading_rate_strict_multiply_combiner: Bool32,
13490}
13491
13492impl Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
13493    #[inline]
13494    fn default() -> Self {
13495        Self {
13496            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
13497            next: ptr::null_mut(),
13498            min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
13499            max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
13500            max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
13501            primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
13502            layered_shading_rate_attachments: Bool32::default(),
13503            fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
13504            max_fragment_size: Extent2D::default(),
13505            max_fragment_size_aspect_ratio: u32::default(),
13506            max_fragment_shading_rate_coverage_samples: u32::default(),
13507            max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
13508            fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
13509            fragment_shading_rate_with_sample_mask: Bool32::default(),
13510            fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
13511            fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
13512            fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
13513            fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
13514            fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
13515        }
13516    }
13517}
13518
13519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html>
13520#[repr(C)]
13521#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13522pub struct PhysicalDeviceFrameBoundaryFeaturesEXT {
13523    pub s_type: StructureType,
13524    pub next: *mut c_void,
13525    pub frame_boundary: Bool32,
13526}
13527
13528impl Default for PhysicalDeviceFrameBoundaryFeaturesEXT {
13529    #[inline]
13530    fn default() -> Self {
13531        Self {
13532            s_type: StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT,
13533            next: ptr::null_mut(),
13534            frame_boundary: Bool32::default(),
13535        }
13536    }
13537}
13538
13539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html>
13540#[repr(C)]
13541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13542pub struct PhysicalDeviceGlobalPriorityQueryFeatures {
13543    pub s_type: StructureType,
13544    pub next: *mut c_void,
13545    pub global_priority_query: Bool32,
13546}
13547
13548impl Default for PhysicalDeviceGlobalPriorityQueryFeatures {
13549    #[inline]
13550    fn default() -> Self {
13551        Self {
13552            s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,
13553            next: ptr::null_mut(),
13554            global_priority_query: Bool32::default(),
13555        }
13556    }
13557}
13558
13559/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html>
13560#[repr(C)]
13561#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13562pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
13563    pub s_type: StructureType,
13564    pub next: *mut c_void,
13565    pub graphics_pipeline_library: Bool32,
13566}
13567
13568impl Default for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
13569    #[inline]
13570    fn default() -> Self {
13571        Self {
13572            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,
13573            next: ptr::null_mut(),
13574            graphics_pipeline_library: Bool32::default(),
13575        }
13576    }
13577}
13578
13579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html>
13580#[repr(C)]
13581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13582pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
13583    pub s_type: StructureType,
13584    pub next: *mut c_void,
13585    pub graphics_pipeline_library_fast_linking: Bool32,
13586    pub graphics_pipeline_library_independent_interpolation_decoration: Bool32,
13587}
13588
13589impl Default for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
13590    #[inline]
13591    fn default() -> Self {
13592        Self {
13593            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,
13594            next: ptr::null_mut(),
13595            graphics_pipeline_library_fast_linking: Bool32::default(),
13596            graphics_pipeline_library_independent_interpolation_decoration: Bool32::default(),
13597        }
13598    }
13599}
13600
13601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html>
13602#[repr(C)]
13603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13604pub struct PhysicalDeviceGroupProperties {
13605    pub s_type: StructureType,
13606    pub next: *mut c_void,
13607    pub physical_device_count: u32,
13608    pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
13609    pub subset_allocation: Bool32,
13610}
13611
13612impl Default for PhysicalDeviceGroupProperties {
13613    #[inline]
13614    fn default() -> Self {
13615        Self {
13616            s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
13617            next: ptr::null_mut(),
13618            physical_device_count: u32::default(),
13619            physical_devices: [PhysicalDevice::default(); MAX_DEVICE_GROUP_SIZE],
13620            subset_allocation: Bool32::default(),
13621        }
13622    }
13623}
13624
13625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html>
13626#[repr(C)]
13627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13628pub struct PhysicalDeviceHdrVividFeaturesHUAWEI {
13629    pub s_type: StructureType,
13630    pub next: *mut c_void,
13631    pub hdr_vivid: Bool32,
13632}
13633
13634impl Default for PhysicalDeviceHdrVividFeaturesHUAWEI {
13635    #[inline]
13636    fn default() -> Self {
13637        Self {
13638            s_type: StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI,
13639            next: ptr::null_mut(),
13640            hdr_vivid: Bool32::default(),
13641        }
13642    }
13643}
13644
13645/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html>
13646#[repr(C)]
13647#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13648pub struct PhysicalDeviceHostImageCopyFeatures {
13649    pub s_type: StructureType,
13650    pub next: *mut c_void,
13651    pub host_image_copy: Bool32,
13652}
13653
13654impl Default for PhysicalDeviceHostImageCopyFeatures {
13655    #[inline]
13656    fn default() -> Self {
13657        Self {
13658            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,
13659            next: ptr::null_mut(),
13660            host_image_copy: Bool32::default(),
13661        }
13662    }
13663}
13664
13665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html>
13666#[repr(C)]
13667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13668pub struct PhysicalDeviceHostImageCopyProperties {
13669    pub s_type: StructureType,
13670    pub next: *mut c_void,
13671    pub copy_src_layout_count: u32,
13672    pub copy_src_layouts: *mut ImageLayout,
13673    pub copy_dst_layout_count: u32,
13674    pub copy_dst_layouts: *mut ImageLayout,
13675    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
13676    pub identical_memory_type_requirements: Bool32,
13677}
13678
13679impl Default for PhysicalDeviceHostImageCopyProperties {
13680    #[inline]
13681    fn default() -> Self {
13682        Self {
13683            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,
13684            next: ptr::null_mut(),
13685            copy_src_layout_count: u32::default(),
13686            copy_src_layouts: ptr::null_mut(),
13687            copy_dst_layout_count: u32::default(),
13688            copy_dst_layouts: ptr::null_mut(),
13689            optimal_tiling_layout_uuid: ByteArray::default(),
13690            identical_memory_type_requirements: Bool32::default(),
13691        }
13692    }
13693}
13694
13695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>
13696#[repr(C)]
13697#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13698pub struct PhysicalDeviceHostQueryResetFeatures {
13699    pub s_type: StructureType,
13700    pub next: *mut c_void,
13701    pub host_query_reset: Bool32,
13702}
13703
13704impl Default for PhysicalDeviceHostQueryResetFeatures {
13705    #[inline]
13706    fn default() -> Self {
13707        Self {
13708            s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
13709            next: ptr::null_mut(),
13710            host_query_reset: Bool32::default(),
13711        }
13712    }
13713}
13714
13715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html>
13716#[repr(C)]
13717#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13718pub struct PhysicalDeviceIDProperties {
13719    pub s_type: StructureType,
13720    pub next: *mut c_void,
13721    pub device_uuid: ByteArray<UUID_SIZE>,
13722    pub driver_uuid: ByteArray<UUID_SIZE>,
13723    pub device_luid: ByteArray<LUID_SIZE>,
13724    pub device_node_mask: u32,
13725    pub device_luid_valid: Bool32,
13726}
13727
13728impl Default for PhysicalDeviceIDProperties {
13729    #[inline]
13730    fn default() -> Self {
13731        Self {
13732            s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
13733            next: ptr::null_mut(),
13734            device_uuid: ByteArray::default(),
13735            driver_uuid: ByteArray::default(),
13736            device_luid: ByteArray::default(),
13737            device_node_mask: u32::default(),
13738            device_luid_valid: Bool32::default(),
13739        }
13740    }
13741}
13742
13743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html>
13744#[repr(C)]
13745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13746pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXT {
13747    pub s_type: StructureType,
13748    pub next: *mut c_void,
13749    pub image_2d_view_of_3d: Bool32,
13750    pub sampler_2d_view_of_3d: Bool32,
13751}
13752
13753impl Default for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
13754    #[inline]
13755    fn default() -> Self {
13756        Self {
13757            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT,
13758            next: ptr::null_mut(),
13759            image_2d_view_of_3d: Bool32::default(),
13760            sampler_2d_view_of_3d: Bool32::default(),
13761        }
13762    }
13763}
13764
13765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html>
13766#[repr(C)]
13767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13768pub struct PhysicalDeviceImageAlignmentControlFeaturesMESA {
13769    pub s_type: StructureType,
13770    pub next: *mut c_void,
13771    pub image_alignment_control: Bool32,
13772}
13773
13774impl Default for PhysicalDeviceImageAlignmentControlFeaturesMESA {
13775    #[inline]
13776    fn default() -> Self {
13777        Self {
13778            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA,
13779            next: ptr::null_mut(),
13780            image_alignment_control: Bool32::default(),
13781        }
13782    }
13783}
13784
13785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html>
13786#[repr(C)]
13787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13788pub struct PhysicalDeviceImageAlignmentControlPropertiesMESA {
13789    pub s_type: StructureType,
13790    pub next: *mut c_void,
13791    pub supported_image_alignment_mask: u32,
13792}
13793
13794impl Default for PhysicalDeviceImageAlignmentControlPropertiesMESA {
13795    #[inline]
13796    fn default() -> Self {
13797        Self {
13798            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA,
13799            next: ptr::null_mut(),
13800            supported_image_alignment_mask: u32::default(),
13801        }
13802    }
13803}
13804
13805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html>
13806#[repr(C)]
13807#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13808pub struct PhysicalDeviceImageCompressionControlFeaturesEXT {
13809    pub s_type: StructureType,
13810    pub next: *mut c_void,
13811    pub image_compression_control: Bool32,
13812}
13813
13814impl Default for PhysicalDeviceImageCompressionControlFeaturesEXT {
13815    #[inline]
13816    fn default() -> Self {
13817        Self {
13818            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT,
13819            next: ptr::null_mut(),
13820            image_compression_control: Bool32::default(),
13821        }
13822    }
13823}
13824
13825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html>
13826#[repr(C)]
13827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13828pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
13829    pub s_type: StructureType,
13830    pub next: *mut c_void,
13831    pub image_compression_control_swapchain: Bool32,
13832}
13833
13834impl Default for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
13835    #[inline]
13836    fn default() -> Self {
13837        Self {
13838            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT,
13839            next: ptr::null_mut(),
13840            image_compression_control_swapchain: Bool32::default(),
13841        }
13842    }
13843}
13844
13845/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>
13846#[repr(C)]
13847#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13848pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
13849    pub s_type: StructureType,
13850    pub next: *const c_void,
13851    pub drm_format_modifier: u64,
13852    pub sharing_mode: SharingMode,
13853    pub queue_family_index_count: u32,
13854    pub queue_family_indices: *const u32,
13855}
13856
13857impl Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
13858    #[inline]
13859    fn default() -> Self {
13860        Self {
13861            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
13862            next: ptr::null(),
13863            drm_format_modifier: u64::default(),
13864            sharing_mode: SharingMode::default(),
13865            queue_family_index_count: u32::default(),
13866            queue_family_indices: ptr::null(),
13867        }
13868    }
13869}
13870
13871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html>
13872#[repr(C)]
13873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13874pub struct PhysicalDeviceImageFormatInfo2 {
13875    pub s_type: StructureType,
13876    pub next: *const c_void,
13877    pub format: Format,
13878    pub type_: ImageType,
13879    pub tiling: ImageTiling,
13880    pub usage: ImageUsageFlags,
13881    pub flags: ImageCreateFlags,
13882}
13883
13884impl Default for PhysicalDeviceImageFormatInfo2 {
13885    #[inline]
13886    fn default() -> Self {
13887        Self {
13888            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
13889            next: ptr::null(),
13890            format: Format::default(),
13891            type_: ImageType::default(),
13892            tiling: ImageTiling::default(),
13893            usage: ImageUsageFlags::default(),
13894            flags: ImageCreateFlags::default(),
13895        }
13896    }
13897}
13898
13899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html>
13900#[repr(C)]
13901#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13902pub struct PhysicalDeviceImageProcessing2FeaturesQCOM {
13903    pub s_type: StructureType,
13904    pub next: *mut c_void,
13905    pub texture_block_match2: Bool32,
13906}
13907
13908impl Default for PhysicalDeviceImageProcessing2FeaturesQCOM {
13909    #[inline]
13910    fn default() -> Self {
13911        Self {
13912            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM,
13913            next: ptr::null_mut(),
13914            texture_block_match2: Bool32::default(),
13915        }
13916    }
13917}
13918
13919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html>
13920#[repr(C)]
13921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13922pub struct PhysicalDeviceImageProcessing2PropertiesQCOM {
13923    pub s_type: StructureType,
13924    pub next: *mut c_void,
13925    pub max_block_match_window: Extent2D,
13926}
13927
13928impl Default for PhysicalDeviceImageProcessing2PropertiesQCOM {
13929    #[inline]
13930    fn default() -> Self {
13931        Self {
13932            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM,
13933            next: ptr::null_mut(),
13934            max_block_match_window: Extent2D::default(),
13935        }
13936    }
13937}
13938
13939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html>
13940#[repr(C)]
13941#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13942pub struct PhysicalDeviceImageProcessingFeaturesQCOM {
13943    pub s_type: StructureType,
13944    pub next: *mut c_void,
13945    pub texture_sample_weighted: Bool32,
13946    pub texture_box_filter: Bool32,
13947    pub texture_block_match: Bool32,
13948}
13949
13950impl Default for PhysicalDeviceImageProcessingFeaturesQCOM {
13951    #[inline]
13952    fn default() -> Self {
13953        Self {
13954            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM,
13955            next: ptr::null_mut(),
13956            texture_sample_weighted: Bool32::default(),
13957            texture_box_filter: Bool32::default(),
13958            texture_block_match: Bool32::default(),
13959        }
13960    }
13961}
13962
13963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html>
13964#[repr(C)]
13965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13966pub struct PhysicalDeviceImageProcessingPropertiesQCOM {
13967    pub s_type: StructureType,
13968    pub next: *mut c_void,
13969    pub max_weight_filter_phases: u32,
13970    pub max_weight_filter_dimension: Extent2D,
13971    pub max_block_match_region: Extent2D,
13972    pub max_box_filter_block_size: Extent2D,
13973}
13974
13975impl Default for PhysicalDeviceImageProcessingPropertiesQCOM {
13976    #[inline]
13977    fn default() -> Self {
13978        Self {
13979            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM,
13980            next: ptr::null_mut(),
13981            max_weight_filter_phases: u32::default(),
13982            max_weight_filter_dimension: Extent2D::default(),
13983            max_block_match_region: Extent2D::default(),
13984            max_box_filter_block_size: Extent2D::default(),
13985        }
13986    }
13987}
13988
13989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html>
13990#[repr(C)]
13991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13992pub struct PhysicalDeviceImageRobustnessFeatures {
13993    pub s_type: StructureType,
13994    pub next: *mut c_void,
13995    pub robust_image_access: Bool32,
13996}
13997
13998impl Default for PhysicalDeviceImageRobustnessFeatures {
13999    #[inline]
14000    fn default() -> Self {
14001        Self {
14002            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
14003            next: ptr::null_mut(),
14004            robust_image_access: Bool32::default(),
14005        }
14006    }
14007}
14008
14009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html>
14010#[repr(C)]
14011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14012pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
14013    pub s_type: StructureType,
14014    pub next: *mut c_void,
14015    pub image_sliced_view_of_3d: Bool32,
14016}
14017
14018impl Default for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
14019    #[inline]
14020    fn default() -> Self {
14021        Self {
14022            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT,
14023            next: ptr::null_mut(),
14024            image_sliced_view_of_3d: Bool32::default(),
14025        }
14026    }
14027}
14028
14029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>
14030#[repr(C)]
14031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14032pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
14033    pub s_type: StructureType,
14034    pub next: *mut c_void,
14035    pub image_view_type: ImageViewType,
14036}
14037
14038impl Default for PhysicalDeviceImageViewImageFormatInfoEXT {
14039    #[inline]
14040    fn default() -> Self {
14041        Self {
14042            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
14043            next: ptr::null_mut(),
14044            image_view_type: ImageViewType::default(),
14045        }
14046    }
14047}
14048
14049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>
14050#[repr(C)]
14051#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14052pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
14053    pub s_type: StructureType,
14054    pub next: *mut c_void,
14055    pub min_lod: Bool32,
14056}
14057
14058impl Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
14059    #[inline]
14060    fn default() -> Self {
14061        Self {
14062            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
14063            next: ptr::null_mut(),
14064            min_lod: Bool32::default(),
14065        }
14066    }
14067}
14068
14069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>
14070#[repr(C)]
14071#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14072pub struct PhysicalDeviceImagelessFramebufferFeatures {
14073    pub s_type: StructureType,
14074    pub next: *mut c_void,
14075    pub imageless_framebuffer: Bool32,
14076}
14077
14078impl Default for PhysicalDeviceImagelessFramebufferFeatures {
14079    #[inline]
14080    fn default() -> Self {
14081        Self {
14082            s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
14083            next: ptr::null_mut(),
14084            imageless_framebuffer: Bool32::default(),
14085        }
14086    }
14087}
14088
14089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html>
14090#[repr(C)]
14091#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14092pub struct PhysicalDeviceIndexTypeUint8Features {
14093    pub s_type: StructureType,
14094    pub next: *mut c_void,
14095    pub index_type_uint8: Bool32,
14096}
14097
14098impl Default for PhysicalDeviceIndexTypeUint8Features {
14099    #[inline]
14100    fn default() -> Self {
14101        Self {
14102            s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,
14103            next: ptr::null_mut(),
14104            index_type_uint8: Bool32::default(),
14105        }
14106    }
14107}
14108
14109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>
14110#[repr(C)]
14111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14112pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
14113    pub s_type: StructureType,
14114    pub next: *mut c_void,
14115    pub inherited_viewport_scissor_2d: Bool32,
14116}
14117
14118impl Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
14119    #[inline]
14120    fn default() -> Self {
14121        Self {
14122            s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
14123            next: ptr::null_mut(),
14124            inherited_viewport_scissor_2d: Bool32::default(),
14125        }
14126    }
14127}
14128
14129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html>
14130#[repr(C)]
14131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14132pub struct PhysicalDeviceInlineUniformBlockFeatures {
14133    pub s_type: StructureType,
14134    pub next: *mut c_void,
14135    pub inline_uniform_block: Bool32,
14136    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
14137}
14138
14139impl Default for PhysicalDeviceInlineUniformBlockFeatures {
14140    #[inline]
14141    fn default() -> Self {
14142        Self {
14143            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
14144            next: ptr::null_mut(),
14145            inline_uniform_block: Bool32::default(),
14146            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
14147        }
14148    }
14149}
14150
14151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html>
14152#[repr(C)]
14153#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14154pub struct PhysicalDeviceInlineUniformBlockProperties {
14155    pub s_type: StructureType,
14156    pub next: *mut c_void,
14157    pub max_inline_uniform_block_size: u32,
14158    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
14159    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
14160    pub max_descriptor_set_inline_uniform_blocks: u32,
14161    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
14162}
14163
14164impl Default for PhysicalDeviceInlineUniformBlockProperties {
14165    #[inline]
14166    fn default() -> Self {
14167        Self {
14168            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
14169            next: ptr::null_mut(),
14170            max_inline_uniform_block_size: u32::default(),
14171            max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
14172            max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
14173            max_descriptor_set_inline_uniform_blocks: u32::default(),
14174            max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
14175        }
14176    }
14177}
14178
14179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>
14180#[repr(C)]
14181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14182pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
14183    pub s_type: StructureType,
14184    pub next: *mut c_void,
14185    pub invocation_mask: Bool32,
14186}
14187
14188impl Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
14189    #[inline]
14190    fn default() -> Self {
14191        Self {
14192            s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
14193            next: ptr::null_mut(),
14194            invocation_mask: Bool32::default(),
14195        }
14196    }
14197}
14198
14199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html>
14200#[repr(C)]
14201#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14202pub struct PhysicalDeviceLayeredApiPropertiesKHR {
14203    pub s_type: StructureType,
14204    pub next: *mut c_void,
14205    pub vendor_id: u32,
14206    pub device_id: u32,
14207    pub layered_api: PhysicalDeviceLayeredApiKHR,
14208    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
14209}
14210
14211impl Default for PhysicalDeviceLayeredApiPropertiesKHR {
14212    #[inline]
14213    fn default() -> Self {
14214        Self {
14215            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR,
14216            next: ptr::null_mut(),
14217            vendor_id: u32::default(),
14218            device_id: u32::default(),
14219            layered_api: PhysicalDeviceLayeredApiKHR::default(),
14220            device_name: StringArray::default(),
14221        }
14222    }
14223}
14224
14225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html>
14226#[repr(C)]
14227#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14228pub struct PhysicalDeviceLayeredApiPropertiesListKHR {
14229    pub s_type: StructureType,
14230    pub next: *mut c_void,
14231    pub layered_api_count: u32,
14232    pub layered_apis: *mut PhysicalDeviceLayeredApiPropertiesKHR,
14233}
14234
14235impl Default for PhysicalDeviceLayeredApiPropertiesListKHR {
14236    #[inline]
14237    fn default() -> Self {
14238        Self {
14239            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR,
14240            next: ptr::null_mut(),
14241            layered_api_count: u32::default(),
14242            layered_apis: ptr::null_mut(),
14243        }
14244    }
14245}
14246
14247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html>
14248#[repr(C)]
14249#[derive(Copy, Clone, Debug, PartialEq)]
14250pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHR {
14251    pub s_type: StructureType,
14252    pub next: *mut c_void,
14253    pub properties: PhysicalDeviceProperties2,
14254}
14255
14256impl Default for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
14257    #[inline]
14258    fn default() -> Self {
14259        Self {
14260            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR,
14261            next: ptr::null_mut(),
14262            properties: PhysicalDeviceProperties2::default(),
14263        }
14264    }
14265}
14266
14267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html>
14268#[repr(C)]
14269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14270pub struct PhysicalDeviceLayeredDriverPropertiesMSFT {
14271    pub s_type: StructureType,
14272    pub next: *mut c_void,
14273    pub underlying_api: LayeredDriverUnderlyingApiMSFT,
14274}
14275
14276impl Default for PhysicalDeviceLayeredDriverPropertiesMSFT {
14277    #[inline]
14278    fn default() -> Self {
14279        Self {
14280            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT,
14281            next: ptr::null_mut(),
14282            underlying_api: LayeredDriverUnderlyingApiMSFT::default(),
14283        }
14284    }
14285}
14286
14287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html>
14288#[repr(C)]
14289#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14290pub struct PhysicalDeviceLegacyDitheringFeaturesEXT {
14291    pub s_type: StructureType,
14292    pub next: *mut c_void,
14293    pub legacy_dithering: Bool32,
14294}
14295
14296impl Default for PhysicalDeviceLegacyDitheringFeaturesEXT {
14297    #[inline]
14298    fn default() -> Self {
14299        Self {
14300            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT,
14301            next: ptr::null_mut(),
14302            legacy_dithering: Bool32::default(),
14303        }
14304    }
14305}
14306
14307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html>
14308#[repr(C)]
14309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14310pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
14311    pub s_type: StructureType,
14312    pub next: *mut c_void,
14313    pub legacy_vertex_attributes: Bool32,
14314}
14315
14316impl Default for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
14317    #[inline]
14318    fn default() -> Self {
14319        Self {
14320            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT,
14321            next: ptr::null_mut(),
14322            legacy_vertex_attributes: Bool32::default(),
14323        }
14324    }
14325}
14326
14327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html>
14328#[repr(C)]
14329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14330pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
14331    pub s_type: StructureType,
14332    pub next: *mut c_void,
14333    pub native_unaligned_performance: Bool32,
14334}
14335
14336impl Default for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
14337    #[inline]
14338    fn default() -> Self {
14339        Self {
14340            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT,
14341            next: ptr::null_mut(),
14342            native_unaligned_performance: Bool32::default(),
14343        }
14344    }
14345}
14346
14347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html>
14348#[repr(C)]
14349#[derive(Copy, Clone, Default, Debug, PartialEq)]
14350pub struct PhysicalDeviceLimits {
14351    pub max_image_dimension_1d: u32,
14352    pub max_image_dimension_2d: u32,
14353    pub max_image_dimension_3d: u32,
14354    pub max_image_dimension_cube: u32,
14355    pub max_image_array_layers: u32,
14356    pub max_texel_buffer_elements: u32,
14357    pub max_uniform_buffer_range: u32,
14358    pub max_storage_buffer_range: u32,
14359    pub max_push_constants_size: u32,
14360    pub max_memory_allocation_count: u32,
14361    pub max_sampler_allocation_count: u32,
14362    pub buffer_image_granularity: DeviceSize,
14363    pub sparse_address_space_size: DeviceSize,
14364    pub max_bound_descriptor_sets: u32,
14365    pub max_per_stage_descriptor_samplers: u32,
14366    pub max_per_stage_descriptor_uniform_buffers: u32,
14367    pub max_per_stage_descriptor_storage_buffers: u32,
14368    pub max_per_stage_descriptor_sampled_images: u32,
14369    pub max_per_stage_descriptor_storage_images: u32,
14370    pub max_per_stage_descriptor_input_attachments: u32,
14371    pub max_per_stage_resources: u32,
14372    pub max_descriptor_set_samplers: u32,
14373    pub max_descriptor_set_uniform_buffers: u32,
14374    pub max_descriptor_set_uniform_buffers_dynamic: u32,
14375    pub max_descriptor_set_storage_buffers: u32,
14376    pub max_descriptor_set_storage_buffers_dynamic: u32,
14377    pub max_descriptor_set_sampled_images: u32,
14378    pub max_descriptor_set_storage_images: u32,
14379    pub max_descriptor_set_input_attachments: u32,
14380    pub max_vertex_input_attributes: u32,
14381    pub max_vertex_input_bindings: u32,
14382    pub max_vertex_input_attribute_offset: u32,
14383    pub max_vertex_input_binding_stride: u32,
14384    pub max_vertex_output_components: u32,
14385    pub max_tessellation_generation_level: u32,
14386    pub max_tessellation_patch_size: u32,
14387    pub max_tessellation_control_per_vertex_input_components: u32,
14388    pub max_tessellation_control_per_vertex_output_components: u32,
14389    pub max_tessellation_control_per_patch_output_components: u32,
14390    pub max_tessellation_control_total_output_components: u32,
14391    pub max_tessellation_evaluation_input_components: u32,
14392    pub max_tessellation_evaluation_output_components: u32,
14393    pub max_geometry_shader_invocations: u32,
14394    pub max_geometry_input_components: u32,
14395    pub max_geometry_output_components: u32,
14396    pub max_geometry_output_vertices: u32,
14397    pub max_geometry_total_output_components: u32,
14398    pub max_fragment_input_components: u32,
14399    pub max_fragment_output_attachments: u32,
14400    pub max_fragment_dual_src_attachments: u32,
14401    pub max_fragment_combined_output_resources: u32,
14402    pub max_compute_shared_memory_size: u32,
14403    pub max_compute_work_group_count: [u32; 3],
14404    pub max_compute_work_group_invocations: u32,
14405    pub max_compute_work_group_size: [u32; 3],
14406    pub sub_pixel_precision_bits: u32,
14407    pub sub_texel_precision_bits: u32,
14408    pub mipmap_precision_bits: u32,
14409    pub max_draw_indexed_index_value: u32,
14410    pub max_draw_indirect_count: u32,
14411    pub max_sampler_lod_bias: f32,
14412    pub max_sampler_anisotropy: f32,
14413    pub max_viewports: u32,
14414    pub max_viewport_dimensions: [u32; 2],
14415    pub viewport_bounds_range: [f32; 2],
14416    pub viewport_sub_pixel_bits: u32,
14417    pub min_memory_map_alignment: usize,
14418    pub min_texel_buffer_offset_alignment: DeviceSize,
14419    pub min_uniform_buffer_offset_alignment: DeviceSize,
14420    pub min_storage_buffer_offset_alignment: DeviceSize,
14421    pub min_texel_offset: i32,
14422    pub max_texel_offset: u32,
14423    pub min_texel_gather_offset: i32,
14424    pub max_texel_gather_offset: u32,
14425    pub min_interpolation_offset: f32,
14426    pub max_interpolation_offset: f32,
14427    pub sub_pixel_interpolation_offset_bits: u32,
14428    pub max_framebuffer_width: u32,
14429    pub max_framebuffer_height: u32,
14430    pub max_framebuffer_layers: u32,
14431    pub framebuffer_color_sample_counts: SampleCountFlags,
14432    pub framebuffer_depth_sample_counts: SampleCountFlags,
14433    pub framebuffer_stencil_sample_counts: SampleCountFlags,
14434    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
14435    pub max_color_attachments: u32,
14436    pub sampled_image_color_sample_counts: SampleCountFlags,
14437    pub sampled_image_integer_sample_counts: SampleCountFlags,
14438    pub sampled_image_depth_sample_counts: SampleCountFlags,
14439    pub sampled_image_stencil_sample_counts: SampleCountFlags,
14440    pub storage_image_sample_counts: SampleCountFlags,
14441    pub max_sample_mask_words: u32,
14442    pub timestamp_compute_and_graphics: Bool32,
14443    pub timestamp_period: f32,
14444    pub max_clip_distances: u32,
14445    pub max_cull_distances: u32,
14446    pub max_combined_clip_and_cull_distances: u32,
14447    pub discrete_queue_priorities: u32,
14448    pub point_size_range: [f32; 2],
14449    pub line_width_range: [f32; 2],
14450    pub point_size_granularity: f32,
14451    pub line_width_granularity: f32,
14452    pub strict_lines: Bool32,
14453    pub standard_sample_locations: Bool32,
14454    pub optimal_buffer_copy_offset_alignment: DeviceSize,
14455    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
14456    pub non_coherent_atom_size: DeviceSize,
14457}
14458
14459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html>
14460#[repr(C)]
14461#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14462pub struct PhysicalDeviceLineRasterizationFeatures {
14463    pub s_type: StructureType,
14464    pub next: *mut c_void,
14465    pub rectangular_lines: Bool32,
14466    pub bresenham_lines: Bool32,
14467    pub smooth_lines: Bool32,
14468    pub stippled_rectangular_lines: Bool32,
14469    pub stippled_bresenham_lines: Bool32,
14470    pub stippled_smooth_lines: Bool32,
14471}
14472
14473impl Default for PhysicalDeviceLineRasterizationFeatures {
14474    #[inline]
14475    fn default() -> Self {
14476        Self {
14477            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,
14478            next: ptr::null_mut(),
14479            rectangular_lines: Bool32::default(),
14480            bresenham_lines: Bool32::default(),
14481            smooth_lines: Bool32::default(),
14482            stippled_rectangular_lines: Bool32::default(),
14483            stippled_bresenham_lines: Bool32::default(),
14484            stippled_smooth_lines: Bool32::default(),
14485        }
14486    }
14487}
14488
14489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html>
14490#[repr(C)]
14491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14492pub struct PhysicalDeviceLineRasterizationProperties {
14493    pub s_type: StructureType,
14494    pub next: *mut c_void,
14495    pub line_sub_pixel_precision_bits: u32,
14496}
14497
14498impl Default for PhysicalDeviceLineRasterizationProperties {
14499    #[inline]
14500    fn default() -> Self {
14501        Self {
14502            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,
14503            next: ptr::null_mut(),
14504            line_sub_pixel_precision_bits: u32::default(),
14505        }
14506    }
14507}
14508
14509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>
14510#[repr(C)]
14511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14512pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
14513    pub s_type: StructureType,
14514    pub next: *mut c_void,
14515    pub linear_color_attachment: Bool32,
14516}
14517
14518impl Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
14519    #[inline]
14520    fn default() -> Self {
14521        Self {
14522            s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
14523            next: ptr::null_mut(),
14524            linear_color_attachment: Bool32::default(),
14525        }
14526    }
14527}
14528
14529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html>
14530#[repr(C)]
14531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14532pub struct PhysicalDeviceMaintenance3Properties {
14533    pub s_type: StructureType,
14534    pub next: *mut c_void,
14535    pub max_per_set_descriptors: u32,
14536    pub max_memory_allocation_size: DeviceSize,
14537}
14538
14539impl Default for PhysicalDeviceMaintenance3Properties {
14540    #[inline]
14541    fn default() -> Self {
14542        Self {
14543            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
14544            next: ptr::null_mut(),
14545            max_per_set_descriptors: u32::default(),
14546            max_memory_allocation_size: DeviceSize::default(),
14547        }
14548    }
14549}
14550
14551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html>
14552#[repr(C)]
14553#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14554pub struct PhysicalDeviceMaintenance4Features {
14555    pub s_type: StructureType,
14556    pub next: *mut c_void,
14557    pub maintenance4: Bool32,
14558}
14559
14560impl Default for PhysicalDeviceMaintenance4Features {
14561    #[inline]
14562    fn default() -> Self {
14563        Self {
14564            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
14565            next: ptr::null_mut(),
14566            maintenance4: Bool32::default(),
14567        }
14568    }
14569}
14570
14571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html>
14572#[repr(C)]
14573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14574pub struct PhysicalDeviceMaintenance4Properties {
14575    pub s_type: StructureType,
14576    pub next: *mut c_void,
14577    pub max_buffer_size: DeviceSize,
14578}
14579
14580impl Default for PhysicalDeviceMaintenance4Properties {
14581    #[inline]
14582    fn default() -> Self {
14583        Self {
14584            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
14585            next: ptr::null_mut(),
14586            max_buffer_size: DeviceSize::default(),
14587        }
14588    }
14589}
14590
14591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html>
14592#[repr(C)]
14593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14594pub struct PhysicalDeviceMaintenance5Features {
14595    pub s_type: StructureType,
14596    pub next: *mut c_void,
14597    pub maintenance5: Bool32,
14598}
14599
14600impl Default for PhysicalDeviceMaintenance5Features {
14601    #[inline]
14602    fn default() -> Self {
14603        Self {
14604            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
14605            next: ptr::null_mut(),
14606            maintenance5: Bool32::default(),
14607        }
14608    }
14609}
14610
14611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html>
14612#[repr(C)]
14613#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14614pub struct PhysicalDeviceMaintenance5Properties {
14615    pub s_type: StructureType,
14616    pub next: *mut c_void,
14617    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
14618    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
14619    pub depth_stencil_swizzle_one_support: Bool32,
14620    pub polygon_mode_point_size: Bool32,
14621    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
14622    pub non_strict_wide_lines_use_parallelogram: Bool32,
14623}
14624
14625impl Default for PhysicalDeviceMaintenance5Properties {
14626    #[inline]
14627    fn default() -> Self {
14628        Self {
14629            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
14630            next: ptr::null_mut(),
14631            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
14632            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
14633            depth_stencil_swizzle_one_support: Bool32::default(),
14634            polygon_mode_point_size: Bool32::default(),
14635            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
14636            non_strict_wide_lines_use_parallelogram: Bool32::default(),
14637        }
14638    }
14639}
14640
14641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html>
14642#[repr(C)]
14643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14644pub struct PhysicalDeviceMaintenance6Features {
14645    pub s_type: StructureType,
14646    pub next: *mut c_void,
14647    pub maintenance6: Bool32,
14648}
14649
14650impl Default for PhysicalDeviceMaintenance6Features {
14651    #[inline]
14652    fn default() -> Self {
14653        Self {
14654            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,
14655            next: ptr::null_mut(),
14656            maintenance6: Bool32::default(),
14657        }
14658    }
14659}
14660
14661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html>
14662#[repr(C)]
14663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14664pub struct PhysicalDeviceMaintenance6Properties {
14665    pub s_type: StructureType,
14666    pub next: *mut c_void,
14667    pub block_texel_view_compatible_multiple_layers: Bool32,
14668    pub max_combined_image_sampler_descriptor_count: u32,
14669    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
14670}
14671
14672impl Default for PhysicalDeviceMaintenance6Properties {
14673    #[inline]
14674    fn default() -> Self {
14675        Self {
14676            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,
14677            next: ptr::null_mut(),
14678            block_texel_view_compatible_multiple_layers: Bool32::default(),
14679            max_combined_image_sampler_descriptor_count: u32::default(),
14680            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
14681        }
14682    }
14683}
14684
14685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html>
14686#[repr(C)]
14687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14688pub struct PhysicalDeviceMaintenance7FeaturesKHR {
14689    pub s_type: StructureType,
14690    pub next: *mut c_void,
14691    pub maintenance7: Bool32,
14692}
14693
14694impl Default for PhysicalDeviceMaintenance7FeaturesKHR {
14695    #[inline]
14696    fn default() -> Self {
14697        Self {
14698            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR,
14699            next: ptr::null_mut(),
14700            maintenance7: Bool32::default(),
14701        }
14702    }
14703}
14704
14705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html>
14706#[repr(C)]
14707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14708pub struct PhysicalDeviceMaintenance7PropertiesKHR {
14709    pub s_type: StructureType,
14710    pub next: *mut c_void,
14711    pub robust_fragment_shading_rate_attachment_access: Bool32,
14712    pub separate_depth_stencil_attachment_access: Bool32,
14713    pub max_descriptor_set_total_uniform_buffers_dynamic: u32,
14714    pub max_descriptor_set_total_storage_buffers_dynamic: u32,
14715    pub max_descriptor_set_total_buffers_dynamic: u32,
14716    pub max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32,
14717    pub max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32,
14718    pub max_descriptor_set_update_after_bind_total_buffers_dynamic: u32,
14719}
14720
14721impl Default for PhysicalDeviceMaintenance7PropertiesKHR {
14722    #[inline]
14723    fn default() -> Self {
14724        Self {
14725            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR,
14726            next: ptr::null_mut(),
14727            robust_fragment_shading_rate_attachment_access: Bool32::default(),
14728            separate_depth_stencil_attachment_access: Bool32::default(),
14729            max_descriptor_set_total_uniform_buffers_dynamic: u32::default(),
14730            max_descriptor_set_total_storage_buffers_dynamic: u32::default(),
14731            max_descriptor_set_total_buffers_dynamic: u32::default(),
14732            max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32::default(),
14733            max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32::default(),
14734            max_descriptor_set_update_after_bind_total_buffers_dynamic: u32::default(),
14735        }
14736    }
14737}
14738
14739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html>
14740#[repr(C)]
14741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14742pub struct PhysicalDeviceMaintenance8FeaturesKHR {
14743    pub s_type: StructureType,
14744    pub next: *mut c_void,
14745    pub maintenance8: Bool32,
14746}
14747
14748impl Default for PhysicalDeviceMaintenance8FeaturesKHR {
14749    #[inline]
14750    fn default() -> Self {
14751        Self {
14752            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR,
14753            next: ptr::null_mut(),
14754            maintenance8: Bool32::default(),
14755        }
14756    }
14757}
14758
14759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html>
14760#[repr(C)]
14761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14762pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXT {
14763    pub s_type: StructureType,
14764    pub next: *mut c_void,
14765    pub memory_map_placed: Bool32,
14766    pub memory_map_range_placed: Bool32,
14767    pub memory_unmap_reserve: Bool32,
14768}
14769
14770impl Default for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
14771    #[inline]
14772    fn default() -> Self {
14773        Self {
14774            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT,
14775            next: ptr::null_mut(),
14776            memory_map_placed: Bool32::default(),
14777            memory_map_range_placed: Bool32::default(),
14778            memory_unmap_reserve: Bool32::default(),
14779        }
14780    }
14781}
14782
14783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html>
14784#[repr(C)]
14785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14786pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXT {
14787    pub s_type: StructureType,
14788    pub next: *mut c_void,
14789    pub min_placed_memory_map_alignment: DeviceSize,
14790}
14791
14792impl Default for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
14793    #[inline]
14794    fn default() -> Self {
14795        Self {
14796            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT,
14797            next: ptr::null_mut(),
14798            min_placed_memory_map_alignment: DeviceSize::default(),
14799        }
14800    }
14801}
14802
14803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>
14804#[repr(C)]
14805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14806pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
14807    pub s_type: StructureType,
14808    pub next: *mut c_void,
14809    pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS],
14810    pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS],
14811}
14812
14813impl Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
14814    #[inline]
14815    fn default() -> Self {
14816        Self {
14817            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
14818            next: ptr::null_mut(),
14819            heap_budget: [DeviceSize::default(); MAX_MEMORY_HEAPS],
14820            heap_usage: [DeviceSize::default(); MAX_MEMORY_HEAPS],
14821        }
14822    }
14823}
14824
14825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html>
14826#[repr(C)]
14827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14828pub struct PhysicalDeviceMemoryDecompressionFeaturesNV {
14829    pub s_type: StructureType,
14830    pub next: *mut c_void,
14831    pub memory_decompression: Bool32,
14832}
14833
14834impl Default for PhysicalDeviceMemoryDecompressionFeaturesNV {
14835    #[inline]
14836    fn default() -> Self {
14837        Self {
14838            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV,
14839            next: ptr::null_mut(),
14840            memory_decompression: Bool32::default(),
14841        }
14842    }
14843}
14844
14845/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html>
14846#[repr(C)]
14847#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14848pub struct PhysicalDeviceMemoryDecompressionPropertiesNV {
14849    pub s_type: StructureType,
14850    pub next: *mut c_void,
14851    pub decompression_methods: MemoryDecompressionMethodFlagsNV,
14852    pub max_decompression_indirect_count: u64,
14853}
14854
14855impl Default for PhysicalDeviceMemoryDecompressionPropertiesNV {
14856    #[inline]
14857    fn default() -> Self {
14858        Self {
14859            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV,
14860            next: ptr::null_mut(),
14861            decompression_methods: MemoryDecompressionMethodFlagsNV::default(),
14862            max_decompression_indirect_count: u64::default(),
14863        }
14864    }
14865}
14866
14867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>
14868#[repr(C)]
14869#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14870pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
14871    pub s_type: StructureType,
14872    pub next: *mut c_void,
14873    pub memory_priority: Bool32,
14874}
14875
14876impl Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
14877    #[inline]
14878    fn default() -> Self {
14879        Self {
14880            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
14881            next: ptr::null_mut(),
14882            memory_priority: Bool32::default(),
14883        }
14884    }
14885}
14886
14887/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html>
14888#[repr(C)]
14889#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14890pub struct PhysicalDeviceMemoryProperties {
14891    pub memory_type_count: u32,
14892    pub memory_types: [MemoryType; MAX_MEMORY_TYPES],
14893    pub memory_heap_count: u32,
14894    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS],
14895}
14896
14897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html>
14898#[repr(C)]
14899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14900pub struct PhysicalDeviceMemoryProperties2 {
14901    pub s_type: StructureType,
14902    pub next: *mut c_void,
14903    pub memory_properties: PhysicalDeviceMemoryProperties,
14904}
14905
14906impl Default for PhysicalDeviceMemoryProperties2 {
14907    #[inline]
14908    fn default() -> Self {
14909        Self {
14910            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
14911            next: ptr::null_mut(),
14912            memory_properties: PhysicalDeviceMemoryProperties::default(),
14913        }
14914    }
14915}
14916
14917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html>
14918#[repr(C)]
14919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14920pub struct PhysicalDeviceMeshShaderFeaturesEXT {
14921    pub s_type: StructureType,
14922    pub next: *mut c_void,
14923    pub task_shader: Bool32,
14924    pub mesh_shader: Bool32,
14925    pub multiview_mesh_shader: Bool32,
14926    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
14927    pub mesh_shader_queries: Bool32,
14928}
14929
14930impl Default for PhysicalDeviceMeshShaderFeaturesEXT {
14931    #[inline]
14932    fn default() -> Self {
14933        Self {
14934            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT,
14935            next: ptr::null_mut(),
14936            task_shader: Bool32::default(),
14937            mesh_shader: Bool32::default(),
14938            multiview_mesh_shader: Bool32::default(),
14939            primitive_fragment_shading_rate_mesh_shader: Bool32::default(),
14940            mesh_shader_queries: Bool32::default(),
14941        }
14942    }
14943}
14944
14945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>
14946#[repr(C)]
14947#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14948pub struct PhysicalDeviceMeshShaderFeaturesNV {
14949    pub s_type: StructureType,
14950    pub next: *mut c_void,
14951    pub task_shader: Bool32,
14952    pub mesh_shader: Bool32,
14953}
14954
14955impl Default for PhysicalDeviceMeshShaderFeaturesNV {
14956    #[inline]
14957    fn default() -> Self {
14958        Self {
14959            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
14960            next: ptr::null_mut(),
14961            task_shader: Bool32::default(),
14962            mesh_shader: Bool32::default(),
14963        }
14964    }
14965}
14966
14967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html>
14968#[repr(C)]
14969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14970pub struct PhysicalDeviceMeshShaderPropertiesEXT {
14971    pub s_type: StructureType,
14972    pub next: *mut c_void,
14973    pub max_task_work_group_total_count: u32,
14974    pub max_task_work_group_count: [u32; 3],
14975    pub max_task_work_group_invocations: u32,
14976    pub max_task_work_group_size: [u32; 3],
14977    pub max_task_payload_size: u32,
14978    pub max_task_shared_memory_size: u32,
14979    pub max_task_payload_and_shared_memory_size: u32,
14980    pub max_mesh_work_group_total_count: u32,
14981    pub max_mesh_work_group_count: [u32; 3],
14982    pub max_mesh_work_group_invocations: u32,
14983    pub max_mesh_work_group_size: [u32; 3],
14984    pub max_mesh_shared_memory_size: u32,
14985    pub max_mesh_payload_and_shared_memory_size: u32,
14986    pub max_mesh_output_memory_size: u32,
14987    pub max_mesh_payload_and_output_memory_size: u32,
14988    pub max_mesh_output_components: u32,
14989    pub max_mesh_output_vertices: u32,
14990    pub max_mesh_output_primitives: u32,
14991    pub max_mesh_output_layers: u32,
14992    pub max_mesh_multiview_view_count: u32,
14993    pub mesh_output_per_vertex_granularity: u32,
14994    pub mesh_output_per_primitive_granularity: u32,
14995    pub max_preferred_task_work_group_invocations: u32,
14996    pub max_preferred_mesh_work_group_invocations: u32,
14997    pub prefers_local_invocation_vertex_output: Bool32,
14998    pub prefers_local_invocation_primitive_output: Bool32,
14999    pub prefers_compact_vertex_output: Bool32,
15000    pub prefers_compact_primitive_output: Bool32,
15001}
15002
15003impl Default for PhysicalDeviceMeshShaderPropertiesEXT {
15004    #[inline]
15005    fn default() -> Self {
15006        Self {
15007            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT,
15008            next: ptr::null_mut(),
15009            max_task_work_group_total_count: u32::default(),
15010            max_task_work_group_count: [u32::default(); 3],
15011            max_task_work_group_invocations: u32::default(),
15012            max_task_work_group_size: [u32::default(); 3],
15013            max_task_payload_size: u32::default(),
15014            max_task_shared_memory_size: u32::default(),
15015            max_task_payload_and_shared_memory_size: u32::default(),
15016            max_mesh_work_group_total_count: u32::default(),
15017            max_mesh_work_group_count: [u32::default(); 3],
15018            max_mesh_work_group_invocations: u32::default(),
15019            max_mesh_work_group_size: [u32::default(); 3],
15020            max_mesh_shared_memory_size: u32::default(),
15021            max_mesh_payload_and_shared_memory_size: u32::default(),
15022            max_mesh_output_memory_size: u32::default(),
15023            max_mesh_payload_and_output_memory_size: u32::default(),
15024            max_mesh_output_components: u32::default(),
15025            max_mesh_output_vertices: u32::default(),
15026            max_mesh_output_primitives: u32::default(),
15027            max_mesh_output_layers: u32::default(),
15028            max_mesh_multiview_view_count: u32::default(),
15029            mesh_output_per_vertex_granularity: u32::default(),
15030            mesh_output_per_primitive_granularity: u32::default(),
15031            max_preferred_task_work_group_invocations: u32::default(),
15032            max_preferred_mesh_work_group_invocations: u32::default(),
15033            prefers_local_invocation_vertex_output: Bool32::default(),
15034            prefers_local_invocation_primitive_output: Bool32::default(),
15035            prefers_compact_vertex_output: Bool32::default(),
15036            prefers_compact_primitive_output: Bool32::default(),
15037        }
15038    }
15039}
15040
15041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>
15042#[repr(C)]
15043#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15044pub struct PhysicalDeviceMeshShaderPropertiesNV {
15045    pub s_type: StructureType,
15046    pub next: *mut c_void,
15047    pub max_draw_mesh_tasks_count: u32,
15048    pub max_task_work_group_invocations: u32,
15049    pub max_task_work_group_size: [u32; 3],
15050    pub max_task_total_memory_size: u32,
15051    pub max_task_output_count: u32,
15052    pub max_mesh_work_group_invocations: u32,
15053    pub max_mesh_work_group_size: [u32; 3],
15054    pub max_mesh_total_memory_size: u32,
15055    pub max_mesh_output_vertices: u32,
15056    pub max_mesh_output_primitives: u32,
15057    pub max_mesh_multiview_view_count: u32,
15058    pub mesh_output_per_vertex_granularity: u32,
15059    pub mesh_output_per_primitive_granularity: u32,
15060}
15061
15062impl Default for PhysicalDeviceMeshShaderPropertiesNV {
15063    #[inline]
15064    fn default() -> Self {
15065        Self {
15066            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
15067            next: ptr::null_mut(),
15068            max_draw_mesh_tasks_count: u32::default(),
15069            max_task_work_group_invocations: u32::default(),
15070            max_task_work_group_size: [u32::default(); 3],
15071            max_task_total_memory_size: u32::default(),
15072            max_task_output_count: u32::default(),
15073            max_mesh_work_group_invocations: u32::default(),
15074            max_mesh_work_group_size: [u32::default(); 3],
15075            max_mesh_total_memory_size: u32::default(),
15076            max_mesh_output_vertices: u32::default(),
15077            max_mesh_output_primitives: u32::default(),
15078            max_mesh_multiview_view_count: u32::default(),
15079            mesh_output_per_vertex_granularity: u32::default(),
15080            mesh_output_per_primitive_granularity: u32::default(),
15081        }
15082    }
15083}
15084
15085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>
15086#[repr(C)]
15087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15088pub struct PhysicalDeviceMultiDrawFeaturesEXT {
15089    pub s_type: StructureType,
15090    pub next: *mut c_void,
15091    pub multi_draw: Bool32,
15092}
15093
15094impl Default for PhysicalDeviceMultiDrawFeaturesEXT {
15095    #[inline]
15096    fn default() -> Self {
15097        Self {
15098            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
15099            next: ptr::null_mut(),
15100            multi_draw: Bool32::default(),
15101        }
15102    }
15103}
15104
15105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>
15106#[repr(C)]
15107#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15108pub struct PhysicalDeviceMultiDrawPropertiesEXT {
15109    pub s_type: StructureType,
15110    pub next: *mut c_void,
15111    pub max_multi_draw_count: u32,
15112}
15113
15114impl Default for PhysicalDeviceMultiDrawPropertiesEXT {
15115    #[inline]
15116    fn default() -> Self {
15117        Self {
15118            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
15119            next: ptr::null_mut(),
15120            max_multi_draw_count: u32::default(),
15121        }
15122    }
15123}
15124
15125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html>
15126#[repr(C)]
15127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15128pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
15129    pub s_type: StructureType,
15130    pub next: *mut c_void,
15131    pub multisampled_render_to_single_sampled: Bool32,
15132}
15133
15134impl Default for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
15135    #[inline]
15136    fn default() -> Self {
15137        Self {
15138            s_type:
15139                StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT,
15140            next: ptr::null_mut(),
15141            multisampled_render_to_single_sampled: Bool32::default(),
15142        }
15143    }
15144}
15145
15146/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html>
15147#[repr(C)]
15148#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15149pub struct PhysicalDeviceMultiviewFeatures {
15150    pub s_type: StructureType,
15151    pub next: *mut c_void,
15152    pub multiview: Bool32,
15153    pub multiview_geometry_shader: Bool32,
15154    pub multiview_tessellation_shader: Bool32,
15155}
15156
15157impl Default for PhysicalDeviceMultiviewFeatures {
15158    #[inline]
15159    fn default() -> Self {
15160        Self {
15161            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
15162            next: ptr::null_mut(),
15163            multiview: Bool32::default(),
15164            multiview_geometry_shader: Bool32::default(),
15165            multiview_tessellation_shader: Bool32::default(),
15166        }
15167    }
15168}
15169
15170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>
15171#[repr(C)]
15172#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15173pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
15174    pub s_type: StructureType,
15175    pub next: *mut c_void,
15176    pub per_view_position_all_components: Bool32,
15177}
15178
15179impl Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
15180    #[inline]
15181    fn default() -> Self {
15182        Self {
15183            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
15184            next: ptr::null_mut(),
15185            per_view_position_all_components: Bool32::default(),
15186        }
15187    }
15188}
15189
15190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html>
15191#[repr(C)]
15192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15193pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
15194    pub s_type: StructureType,
15195    pub next: *mut c_void,
15196    pub multiview_per_view_render_areas: Bool32,
15197}
15198
15199impl Default for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
15200    #[inline]
15201    fn default() -> Self {
15202        Self {
15203            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM,
15204            next: ptr::null_mut(),
15205            multiview_per_view_render_areas: Bool32::default(),
15206        }
15207    }
15208}
15209
15210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html>
15211#[repr(C)]
15212#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15213pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
15214    pub s_type: StructureType,
15215    pub next: *mut c_void,
15216    pub multiview_per_view_viewports: Bool32,
15217}
15218
15219impl Default for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
15220    #[inline]
15221    fn default() -> Self {
15222        Self {
15223            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM,
15224            next: ptr::null_mut(),
15225            multiview_per_view_viewports: Bool32::default(),
15226        }
15227    }
15228}
15229
15230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html>
15231#[repr(C)]
15232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15233pub struct PhysicalDeviceMultiviewProperties {
15234    pub s_type: StructureType,
15235    pub next: *mut c_void,
15236    pub max_multiview_view_count: u32,
15237    pub max_multiview_instance_index: u32,
15238}
15239
15240impl Default for PhysicalDeviceMultiviewProperties {
15241    #[inline]
15242    fn default() -> Self {
15243        Self {
15244            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
15245            next: ptr::null_mut(),
15246            max_multiview_view_count: u32::default(),
15247            max_multiview_instance_index: u32::default(),
15248        }
15249    }
15250}
15251
15252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html>
15253#[repr(C)]
15254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15255pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
15256    pub s_type: StructureType,
15257    pub next: *mut c_void,
15258    pub mutable_descriptor_type: Bool32,
15259}
15260
15261impl Default for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
15262    #[inline]
15263    fn default() -> Self {
15264        Self {
15265            s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
15266            next: ptr::null_mut(),
15267            mutable_descriptor_type: Bool32::default(),
15268        }
15269    }
15270}
15271
15272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html>
15273#[repr(C)]
15274#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15275pub struct PhysicalDeviceNestedCommandBufferFeaturesEXT {
15276    pub s_type: StructureType,
15277    pub next: *mut c_void,
15278    pub nested_command_buffer: Bool32,
15279    pub nested_command_buffer_rendering: Bool32,
15280    pub nested_command_buffer_simultaneous_use: Bool32,
15281}
15282
15283impl Default for PhysicalDeviceNestedCommandBufferFeaturesEXT {
15284    #[inline]
15285    fn default() -> Self {
15286        Self {
15287            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT,
15288            next: ptr::null_mut(),
15289            nested_command_buffer: Bool32::default(),
15290            nested_command_buffer_rendering: Bool32::default(),
15291            nested_command_buffer_simultaneous_use: Bool32::default(),
15292        }
15293    }
15294}
15295
15296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html>
15297#[repr(C)]
15298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15299pub struct PhysicalDeviceNestedCommandBufferPropertiesEXT {
15300    pub s_type: StructureType,
15301    pub next: *mut c_void,
15302    pub max_command_buffer_nesting_level: u32,
15303}
15304
15305impl Default for PhysicalDeviceNestedCommandBufferPropertiesEXT {
15306    #[inline]
15307    fn default() -> Self {
15308        Self {
15309            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT,
15310            next: ptr::null_mut(),
15311            max_command_buffer_nesting_level: u32::default(),
15312        }
15313    }
15314}
15315
15316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html>
15317#[repr(C)]
15318#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15319pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
15320    pub s_type: StructureType,
15321    pub next: *mut c_void,
15322    pub non_seamless_cube_map: Bool32,
15323}
15324
15325impl Default for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
15326    #[inline]
15327    fn default() -> Self {
15328        Self {
15329            s_type: StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
15330            next: ptr::null_mut(),
15331            non_seamless_cube_map: Bool32::default(),
15332        }
15333    }
15334}
15335
15336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html>
15337#[repr(C)]
15338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15339pub struct PhysicalDeviceOpacityMicromapFeaturesEXT {
15340    pub s_type: StructureType,
15341    pub next: *mut c_void,
15342    pub micromap: Bool32,
15343    pub micromap_capture_replay: Bool32,
15344    pub micromap_host_commands: Bool32,
15345}
15346
15347impl Default for PhysicalDeviceOpacityMicromapFeaturesEXT {
15348    #[inline]
15349    fn default() -> Self {
15350        Self {
15351            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT,
15352            next: ptr::null_mut(),
15353            micromap: Bool32::default(),
15354            micromap_capture_replay: Bool32::default(),
15355            micromap_host_commands: Bool32::default(),
15356        }
15357    }
15358}
15359
15360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html>
15361#[repr(C)]
15362#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15363pub struct PhysicalDeviceOpacityMicromapPropertiesEXT {
15364    pub s_type: StructureType,
15365    pub next: *mut c_void,
15366    pub max_opacity2_state_subdivision_level: u32,
15367    pub max_opacity4_state_subdivision_level: u32,
15368}
15369
15370impl Default for PhysicalDeviceOpacityMicromapPropertiesEXT {
15371    #[inline]
15372    fn default() -> Self {
15373        Self {
15374            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT,
15375            next: ptr::null_mut(),
15376            max_opacity2_state_subdivision_level: u32::default(),
15377            max_opacity4_state_subdivision_level: u32::default(),
15378        }
15379    }
15380}
15381
15382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html>
15383#[repr(C)]
15384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15385pub struct PhysicalDeviceOpticalFlowFeaturesNV {
15386    pub s_type: StructureType,
15387    pub next: *mut c_void,
15388    pub optical_flow: Bool32,
15389}
15390
15391impl Default for PhysicalDeviceOpticalFlowFeaturesNV {
15392    #[inline]
15393    fn default() -> Self {
15394        Self {
15395            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV,
15396            next: ptr::null_mut(),
15397            optical_flow: Bool32::default(),
15398        }
15399    }
15400}
15401
15402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html>
15403#[repr(C)]
15404#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15405pub struct PhysicalDeviceOpticalFlowPropertiesNV {
15406    pub s_type: StructureType,
15407    pub next: *mut c_void,
15408    pub supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV,
15409    pub supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV,
15410    pub hint_supported: Bool32,
15411    pub cost_supported: Bool32,
15412    pub bidirectional_flow_supported: Bool32,
15413    pub global_flow_supported: Bool32,
15414    pub min_width: u32,
15415    pub min_height: u32,
15416    pub max_width: u32,
15417    pub max_height: u32,
15418    pub max_num_regions_of_interest: u32,
15419}
15420
15421impl Default for PhysicalDeviceOpticalFlowPropertiesNV {
15422    #[inline]
15423    fn default() -> Self {
15424        Self {
15425            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV,
15426            next: ptr::null_mut(),
15427            supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
15428            supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
15429            hint_supported: Bool32::default(),
15430            cost_supported: Bool32::default(),
15431            bidirectional_flow_supported: Bool32::default(),
15432            global_flow_supported: Bool32::default(),
15433            min_width: u32::default(),
15434            min_height: u32::default(),
15435            max_width: u32::default(),
15436            max_height: u32::default(),
15437            max_num_regions_of_interest: u32::default(),
15438        }
15439    }
15440}
15441
15442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>
15443#[repr(C)]
15444#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15445pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
15446    pub s_type: StructureType,
15447    pub next: *mut c_void,
15448    pub pci_domain: u32,
15449    pub pci_bus: u32,
15450    pub pci_device: u32,
15451    pub pci_function: u32,
15452}
15453
15454impl Default for PhysicalDevicePCIBusInfoPropertiesEXT {
15455    #[inline]
15456    fn default() -> Self {
15457        Self {
15458            s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
15459            next: ptr::null_mut(),
15460            pci_domain: u32::default(),
15461            pci_bus: u32::default(),
15462            pci_device: u32::default(),
15463            pci_function: u32::default(),
15464        }
15465    }
15466}
15467
15468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>
15469#[repr(C)]
15470#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15471pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
15472    pub s_type: StructureType,
15473    pub next: *mut c_void,
15474    pub pageable_device_local_memory: Bool32,
15475}
15476
15477impl Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
15478    #[inline]
15479    fn default() -> Self {
15480        Self {
15481            s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
15482            next: ptr::null_mut(),
15483            pageable_device_local_memory: Bool32::default(),
15484        }
15485    }
15486}
15487
15488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html>
15489#[repr(C)]
15490#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15491pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
15492    pub s_type: StructureType,
15493    pub next: *mut c_void,
15494    pub partitioned_acceleration_structure: Bool32,
15495}
15496
15497impl Default for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
15498    #[inline]
15499    fn default() -> Self {
15500        Self {
15501            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV,
15502            next: ptr::null_mut(),
15503            partitioned_acceleration_structure: Bool32::default(),
15504        }
15505    }
15506}
15507
15508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html>
15509#[repr(C)]
15510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15511pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
15512    pub s_type: StructureType,
15513    pub next: *mut c_void,
15514    pub max_partition_count: u32,
15515}
15516
15517impl Default for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
15518    #[inline]
15519    fn default() -> Self {
15520        Self {
15521            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV,
15522            next: ptr::null_mut(),
15523            max_partition_count: u32::default(),
15524        }
15525    }
15526}
15527
15528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html>
15529#[repr(C)]
15530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15531pub struct PhysicalDevicePerStageDescriptorSetFeaturesNV {
15532    pub s_type: StructureType,
15533    pub next: *mut c_void,
15534    pub per_stage_descriptor_set: Bool32,
15535    pub dynamic_pipeline_layout: Bool32,
15536}
15537
15538impl Default for PhysicalDevicePerStageDescriptorSetFeaturesNV {
15539    #[inline]
15540    fn default() -> Self {
15541        Self {
15542            s_type: StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV,
15543            next: ptr::null_mut(),
15544            per_stage_descriptor_set: Bool32::default(),
15545            dynamic_pipeline_layout: Bool32::default(),
15546        }
15547    }
15548}
15549
15550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>
15551#[repr(C)]
15552#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15553pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
15554    pub s_type: StructureType,
15555    pub next: *mut c_void,
15556    pub performance_counter_query_pools: Bool32,
15557    pub performance_counter_multiple_query_pools: Bool32,
15558}
15559
15560impl Default for PhysicalDevicePerformanceQueryFeaturesKHR {
15561    #[inline]
15562    fn default() -> Self {
15563        Self {
15564            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
15565            next: ptr::null_mut(),
15566            performance_counter_query_pools: Bool32::default(),
15567            performance_counter_multiple_query_pools: Bool32::default(),
15568        }
15569    }
15570}
15571
15572/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>
15573#[repr(C)]
15574#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15575pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
15576    pub s_type: StructureType,
15577    pub next: *mut c_void,
15578    pub allow_command_buffer_query_copies: Bool32,
15579}
15580
15581impl Default for PhysicalDevicePerformanceQueryPropertiesKHR {
15582    #[inline]
15583    fn default() -> Self {
15584        Self {
15585            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
15586            next: ptr::null_mut(),
15587            allow_command_buffer_query_copies: Bool32::default(),
15588        }
15589    }
15590}
15591
15592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html>
15593#[repr(C)]
15594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15595pub struct PhysicalDevicePipelineBinaryFeaturesKHR {
15596    pub s_type: StructureType,
15597    pub next: *mut c_void,
15598    pub pipeline_binaries: Bool32,
15599}
15600
15601impl Default for PhysicalDevicePipelineBinaryFeaturesKHR {
15602    #[inline]
15603    fn default() -> Self {
15604        Self {
15605            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR,
15606            next: ptr::null_mut(),
15607            pipeline_binaries: Bool32::default(),
15608        }
15609    }
15610}
15611
15612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html>
15613#[repr(C)]
15614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15615pub struct PhysicalDevicePipelineBinaryPropertiesKHR {
15616    pub s_type: StructureType,
15617    pub next: *mut c_void,
15618    pub pipeline_binary_internal_cache: Bool32,
15619    pub pipeline_binary_internal_cache_control: Bool32,
15620    pub pipeline_binary_prefers_internal_cache: Bool32,
15621    pub pipeline_binary_precompiled_internal_cache: Bool32,
15622    pub pipeline_binary_compressed_data: Bool32,
15623}
15624
15625impl Default for PhysicalDevicePipelineBinaryPropertiesKHR {
15626    #[inline]
15627    fn default() -> Self {
15628        Self {
15629            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR,
15630            next: ptr::null_mut(),
15631            pipeline_binary_internal_cache: Bool32::default(),
15632            pipeline_binary_internal_cache_control: Bool32::default(),
15633            pipeline_binary_prefers_internal_cache: Bool32::default(),
15634            pipeline_binary_precompiled_internal_cache: Bool32::default(),
15635            pipeline_binary_compressed_data: Bool32::default(),
15636        }
15637    }
15638}
15639
15640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html>
15641#[repr(C)]
15642#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15643pub struct PhysicalDevicePipelineCreationCacheControlFeatures {
15644    pub s_type: StructureType,
15645    pub next: *mut c_void,
15646    pub pipeline_creation_cache_control: Bool32,
15647}
15648
15649impl Default for PhysicalDevicePipelineCreationCacheControlFeatures {
15650    #[inline]
15651    fn default() -> Self {
15652        Self {
15653            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
15654            next: ptr::null_mut(),
15655            pipeline_creation_cache_control: Bool32::default(),
15656        }
15657    }
15658}
15659
15660/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>
15661#[repr(C)]
15662#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15663pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
15664    pub s_type: StructureType,
15665    pub next: *mut c_void,
15666    pub pipeline_executable_info: Bool32,
15667}
15668
15669impl Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
15670    #[inline]
15671    fn default() -> Self {
15672        Self {
15673            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
15674            next: ptr::null_mut(),
15675            pipeline_executable_info: Bool32::default(),
15676        }
15677    }
15678}
15679
15680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html>
15681#[repr(C)]
15682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15683pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
15684    pub s_type: StructureType,
15685    pub next: *mut c_void,
15686    pub pipeline_library_group_handles: Bool32,
15687}
15688
15689impl Default for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
15690    #[inline]
15691    fn default() -> Self {
15692        Self {
15693            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
15694            next: ptr::null_mut(),
15695            pipeline_library_group_handles: Bool32::default(),
15696        }
15697    }
15698}
15699
15700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html>
15701#[repr(C)]
15702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15703pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARM {
15704    pub s_type: StructureType,
15705    pub next: *mut c_void,
15706    pub pipeline_opacity_micromap: Bool32,
15707}
15708
15709impl Default for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
15710    #[inline]
15711    fn default() -> Self {
15712        Self {
15713            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM,
15714            next: ptr::null_mut(),
15715            pipeline_opacity_micromap: Bool32::default(),
15716        }
15717    }
15718}
15719
15720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html>
15721#[repr(C)]
15722#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15723pub struct PhysicalDevicePipelinePropertiesFeaturesEXT {
15724    pub s_type: StructureType,
15725    pub next: *mut c_void,
15726    pub pipeline_properties_identifier: Bool32,
15727}
15728
15729impl Default for PhysicalDevicePipelinePropertiesFeaturesEXT {
15730    #[inline]
15731    fn default() -> Self {
15732        Self {
15733            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT,
15734            next: ptr::null_mut(),
15735            pipeline_properties_identifier: Bool32::default(),
15736        }
15737    }
15738}
15739
15740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html>
15741#[repr(C)]
15742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15743pub struct PhysicalDevicePipelineProtectedAccessFeatures {
15744    pub s_type: StructureType,
15745    pub next: *mut c_void,
15746    pub pipeline_protected_access: Bool32,
15747}
15748
15749impl Default for PhysicalDevicePipelineProtectedAccessFeatures {
15750    #[inline]
15751    fn default() -> Self {
15752        Self {
15753            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
15754            next: ptr::null_mut(),
15755            pipeline_protected_access: Bool32::default(),
15756        }
15757    }
15758}
15759
15760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html>
15761#[repr(C)]
15762#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15763pub struct PhysicalDevicePipelineRobustnessFeatures {
15764    pub s_type: StructureType,
15765    pub next: *mut c_void,
15766    pub pipeline_robustness: Bool32,
15767}
15768
15769impl Default for PhysicalDevicePipelineRobustnessFeatures {
15770    #[inline]
15771    fn default() -> Self {
15772        Self {
15773            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,
15774            next: ptr::null_mut(),
15775            pipeline_robustness: Bool32::default(),
15776        }
15777    }
15778}
15779
15780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html>
15781#[repr(C)]
15782#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15783pub struct PhysicalDevicePipelineRobustnessProperties {
15784    pub s_type: StructureType,
15785    pub next: *mut c_void,
15786    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
15787    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
15788    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
15789    pub default_robustness_images: PipelineRobustnessImageBehavior,
15790}
15791
15792impl Default for PhysicalDevicePipelineRobustnessProperties {
15793    #[inline]
15794    fn default() -> Self {
15795        Self {
15796            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,
15797            next: ptr::null_mut(),
15798            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
15799            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
15800            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
15801            default_robustness_images: PipelineRobustnessImageBehavior::default(),
15802        }
15803    }
15804}
15805
15806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html>
15807#[repr(C)]
15808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15809pub struct PhysicalDevicePointClippingProperties {
15810    pub s_type: StructureType,
15811    pub next: *mut c_void,
15812    pub point_clipping_behavior: PointClippingBehavior,
15813}
15814
15815impl Default for PhysicalDevicePointClippingProperties {
15816    #[inline]
15817    fn default() -> Self {
15818        Self {
15819            s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
15820            next: ptr::null_mut(),
15821            point_clipping_behavior: PointClippingBehavior::default(),
15822        }
15823    }
15824}
15825
15826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>
15827#[repr(C)]
15828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15829pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
15830    pub s_type: StructureType,
15831    pub next: *mut c_void,
15832    pub constant_alpha_color_blend_factors: Bool32,
15833    pub events: Bool32,
15834    pub image_view_format_reinterpretation: Bool32,
15835    pub image_view_format_swizzle: Bool32,
15836    pub image_view_2d_on_3d_image: Bool32,
15837    pub multisample_array_image: Bool32,
15838    pub mutable_comparison_samplers: Bool32,
15839    pub point_polygons: Bool32,
15840    pub sampler_mip_lod_bias: Bool32,
15841    pub separate_stencil_mask_ref: Bool32,
15842    pub shader_sample_rate_interpolation_functions: Bool32,
15843    pub tessellation_isolines: Bool32,
15844    pub tessellation_point_mode: Bool32,
15845    pub triangle_fans: Bool32,
15846    pub vertex_attribute_access_beyond_stride: Bool32,
15847}
15848
15849impl Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
15850    #[inline]
15851    fn default() -> Self {
15852        Self {
15853            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
15854            next: ptr::null_mut(),
15855            constant_alpha_color_blend_factors: Bool32::default(),
15856            events: Bool32::default(),
15857            image_view_format_reinterpretation: Bool32::default(),
15858            image_view_format_swizzle: Bool32::default(),
15859            image_view_2d_on_3d_image: Bool32::default(),
15860            multisample_array_image: Bool32::default(),
15861            mutable_comparison_samplers: Bool32::default(),
15862            point_polygons: Bool32::default(),
15863            sampler_mip_lod_bias: Bool32::default(),
15864            separate_stencil_mask_ref: Bool32::default(),
15865            shader_sample_rate_interpolation_functions: Bool32::default(),
15866            tessellation_isolines: Bool32::default(),
15867            tessellation_point_mode: Bool32::default(),
15868            triangle_fans: Bool32::default(),
15869            vertex_attribute_access_beyond_stride: Bool32::default(),
15870        }
15871    }
15872}
15873
15874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>
15875#[repr(C)]
15876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15877pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
15878    pub s_type: StructureType,
15879    pub next: *mut c_void,
15880    pub min_vertex_input_binding_stride_alignment: u32,
15881}
15882
15883impl Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
15884    #[inline]
15885    fn default() -> Self {
15886        Self {
15887            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
15888            next: ptr::null_mut(),
15889            min_vertex_input_binding_stride_alignment: u32::default(),
15890        }
15891    }
15892}
15893
15894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html>
15895#[repr(C)]
15896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15897pub struct PhysicalDevicePresentBarrierFeaturesNV {
15898    pub s_type: StructureType,
15899    pub next: *mut c_void,
15900    pub present_barrier: Bool32,
15901}
15902
15903impl Default for PhysicalDevicePresentBarrierFeaturesNV {
15904    #[inline]
15905    fn default() -> Self {
15906        Self {
15907            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV,
15908            next: ptr::null_mut(),
15909            present_barrier: Bool32::default(),
15910        }
15911    }
15912}
15913
15914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>
15915#[repr(C)]
15916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15917pub struct PhysicalDevicePresentIdFeaturesKHR {
15918    pub s_type: StructureType,
15919    pub next: *mut c_void,
15920    pub present_id: Bool32,
15921}
15922
15923impl Default for PhysicalDevicePresentIdFeaturesKHR {
15924    #[inline]
15925    fn default() -> Self {
15926        Self {
15927            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
15928            next: ptr::null_mut(),
15929            present_id: Bool32::default(),
15930        }
15931    }
15932}
15933
15934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html>
15935#[repr(C)]
15936#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15937pub struct PhysicalDevicePresentMeteringFeaturesNV {
15938    pub s_type: StructureType,
15939    pub next: *mut c_void,
15940    pub present_metering: Bool32,
15941}
15942
15943impl Default for PhysicalDevicePresentMeteringFeaturesNV {
15944    #[inline]
15945    fn default() -> Self {
15946        Self {
15947            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV,
15948            next: ptr::null_mut(),
15949            present_metering: Bool32::default(),
15950        }
15951    }
15952}
15953
15954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT.html>
15955#[repr(C)]
15956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15957pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT {
15958    pub s_type: StructureType,
15959    pub next: *mut c_void,
15960    pub present_mode_fifo_latest_ready: Bool32,
15961}
15962
15963impl Default for PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT {
15964    #[inline]
15965    fn default() -> Self {
15966        Self {
15967            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT,
15968            next: ptr::null_mut(),
15969            present_mode_fifo_latest_ready: Bool32::default(),
15970        }
15971    }
15972}
15973
15974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>
15975#[repr(C)]
15976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15977pub struct PhysicalDevicePresentWaitFeaturesKHR {
15978    pub s_type: StructureType,
15979    pub next: *mut c_void,
15980    pub present_wait: Bool32,
15981}
15982
15983impl Default for PhysicalDevicePresentWaitFeaturesKHR {
15984    #[inline]
15985    fn default() -> Self {
15986        Self {
15987            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
15988            next: ptr::null_mut(),
15989            present_wait: Bool32::default(),
15990        }
15991    }
15992}
15993
15994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>
15995#[repr(C)]
15996#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15997pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
15998    pub s_type: StructureType,
15999    pub next: *mut c_void,
16000    pub primitive_topology_list_restart: Bool32,
16001    pub primitive_topology_patch_list_restart: Bool32,
16002}
16003
16004impl Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
16005    #[inline]
16006    fn default() -> Self {
16007        Self {
16008            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
16009            next: ptr::null_mut(),
16010            primitive_topology_list_restart: Bool32::default(),
16011            primitive_topology_patch_list_restart: Bool32::default(),
16012        }
16013    }
16014}
16015
16016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html>
16017#[repr(C)]
16018#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16019pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
16020    pub s_type: StructureType,
16021    pub next: *mut c_void,
16022    pub primitives_generated_query: Bool32,
16023    pub primitives_generated_query_with_rasterizer_discard: Bool32,
16024    pub primitives_generated_query_with_non_zero_streams: Bool32,
16025}
16026
16027impl Default for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
16028    #[inline]
16029    fn default() -> Self {
16030        Self {
16031            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,
16032            next: ptr::null_mut(),
16033            primitives_generated_query: Bool32::default(),
16034            primitives_generated_query_with_rasterizer_discard: Bool32::default(),
16035            primitives_generated_query_with_non_zero_streams: Bool32::default(),
16036        }
16037    }
16038}
16039
16040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html>
16041#[repr(C)]
16042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16043pub struct PhysicalDevicePrivateDataFeatures {
16044    pub s_type: StructureType,
16045    pub next: *mut c_void,
16046    pub private_data: Bool32,
16047}
16048
16049impl Default for PhysicalDevicePrivateDataFeatures {
16050    #[inline]
16051    fn default() -> Self {
16052        Self {
16053            s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
16054            next: ptr::null_mut(),
16055            private_data: Bool32::default(),
16056        }
16057    }
16058}
16059
16060/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html>
16061#[repr(C)]
16062#[derive(Copy, Clone, Default, Debug, PartialEq)]
16063pub struct PhysicalDeviceProperties {
16064    pub api_version: u32,
16065    pub driver_version: u32,
16066    pub vendor_id: u32,
16067    pub device_id: u32,
16068    pub device_type: PhysicalDeviceType,
16069    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
16070    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
16071    pub limits: PhysicalDeviceLimits,
16072    pub sparse_properties: PhysicalDeviceSparseProperties,
16073}
16074
16075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html>
16076#[repr(C)]
16077#[derive(Copy, Clone, Debug, PartialEq)]
16078pub struct PhysicalDeviceProperties2 {
16079    pub s_type: StructureType,
16080    pub next: *mut c_void,
16081    pub properties: PhysicalDeviceProperties,
16082}
16083
16084impl Default for PhysicalDeviceProperties2 {
16085    #[inline]
16086    fn default() -> Self {
16087        Self {
16088            s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
16089            next: ptr::null_mut(),
16090            properties: PhysicalDeviceProperties::default(),
16091        }
16092    }
16093}
16094
16095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>
16096#[repr(C)]
16097#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16098pub struct PhysicalDeviceProtectedMemoryFeatures {
16099    pub s_type: StructureType,
16100    pub next: *mut c_void,
16101    pub protected_memory: Bool32,
16102}
16103
16104impl Default for PhysicalDeviceProtectedMemoryFeatures {
16105    #[inline]
16106    fn default() -> Self {
16107        Self {
16108            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
16109            next: ptr::null_mut(),
16110            protected_memory: Bool32::default(),
16111        }
16112    }
16113}
16114
16115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>
16116#[repr(C)]
16117#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16118pub struct PhysicalDeviceProtectedMemoryProperties {
16119    pub s_type: StructureType,
16120    pub next: *mut c_void,
16121    pub protected_no_fault: Bool32,
16122}
16123
16124impl Default for PhysicalDeviceProtectedMemoryProperties {
16125    #[inline]
16126    fn default() -> Self {
16127        Self {
16128            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
16129            next: ptr::null_mut(),
16130            protected_no_fault: Bool32::default(),
16131        }
16132    }
16133}
16134
16135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>
16136#[repr(C)]
16137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16138pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
16139    pub s_type: StructureType,
16140    pub next: *mut c_void,
16141    pub provoking_vertex_last: Bool32,
16142    pub transform_feedback_preserves_provoking_vertex: Bool32,
16143}
16144
16145impl Default for PhysicalDeviceProvokingVertexFeaturesEXT {
16146    #[inline]
16147    fn default() -> Self {
16148        Self {
16149            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
16150            next: ptr::null_mut(),
16151            provoking_vertex_last: Bool32::default(),
16152            transform_feedback_preserves_provoking_vertex: Bool32::default(),
16153        }
16154    }
16155}
16156
16157/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>
16158#[repr(C)]
16159#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16160pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
16161    pub s_type: StructureType,
16162    pub next: *mut c_void,
16163    pub provoking_vertex_mode_per_pipeline: Bool32,
16164    pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
16165}
16166
16167impl Default for PhysicalDeviceProvokingVertexPropertiesEXT {
16168    #[inline]
16169    fn default() -> Self {
16170        Self {
16171            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
16172            next: ptr::null_mut(),
16173            provoking_vertex_mode_per_pipeline: Bool32::default(),
16174            transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
16175        }
16176    }
16177}
16178
16179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html>
16180#[repr(C)]
16181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16182pub struct PhysicalDevicePushDescriptorProperties {
16183    pub s_type: StructureType,
16184    pub next: *mut c_void,
16185    pub max_push_descriptors: u32,
16186}
16187
16188impl Default for PhysicalDevicePushDescriptorProperties {
16189    #[inline]
16190    fn default() -> Self {
16191        Self {
16192            s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,
16193            next: ptr::null_mut(),
16194            max_push_descriptors: u32::default(),
16195        }
16196    }
16197}
16198
16199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>
16200#[repr(C)]
16201#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16202pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
16203    pub s_type: StructureType,
16204    pub next: *mut c_void,
16205    pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
16206}
16207
16208impl Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
16209    #[inline]
16210    fn default() -> Self {
16211        Self {
16212            s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
16213            next: ptr::null_mut(),
16214            format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
16215        }
16216    }
16217}
16218
16219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html>
16220#[repr(C)]
16221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16222pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
16223    pub s_type: StructureType,
16224    pub next: *mut c_void,
16225    pub rasterization_order_color_attachment_access: Bool32,
16226    pub rasterization_order_depth_attachment_access: Bool32,
16227    pub rasterization_order_stencil_attachment_access: Bool32,
16228}
16229
16230impl Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
16231    #[inline]
16232    fn default() -> Self {
16233        Self {
16234            s_type:
16235                StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
16236            next: ptr::null_mut(),
16237            rasterization_order_color_attachment_access: Bool32::default(),
16238            rasterization_order_depth_attachment_access: Bool32::default(),
16239            rasterization_order_stencil_attachment_access: Bool32::default(),
16240        }
16241    }
16242}
16243
16244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html>
16245#[repr(C)]
16246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16247pub struct PhysicalDeviceRawAccessChainsFeaturesNV {
16248    pub s_type: StructureType,
16249    pub next: *mut c_void,
16250    pub shader_raw_access_chains: Bool32,
16251}
16252
16253impl Default for PhysicalDeviceRawAccessChainsFeaturesNV {
16254    #[inline]
16255    fn default() -> Self {
16256        Self {
16257            s_type: StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV,
16258            next: ptr::null_mut(),
16259            shader_raw_access_chains: Bool32::default(),
16260        }
16261    }
16262}
16263
16264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>
16265#[repr(C)]
16266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16267pub struct PhysicalDeviceRayQueryFeaturesKHR {
16268    pub s_type: StructureType,
16269    pub next: *mut c_void,
16270    pub ray_query: Bool32,
16271}
16272
16273impl Default for PhysicalDeviceRayQueryFeaturesKHR {
16274    #[inline]
16275    fn default() -> Self {
16276        Self {
16277            s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
16278            next: ptr::null_mut(),
16279            ray_query: Bool32::default(),
16280        }
16281    }
16282}
16283
16284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html>
16285#[repr(C)]
16286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16287pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
16288    pub s_type: StructureType,
16289    pub next: *mut c_void,
16290    pub ray_tracing_invocation_reorder: Bool32,
16291}
16292
16293impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
16294    #[inline]
16295    fn default() -> Self {
16296        Self {
16297            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV,
16298            next: ptr::null_mut(),
16299            ray_tracing_invocation_reorder: Bool32::default(),
16300        }
16301    }
16302}
16303
16304/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html>
16305#[repr(C)]
16306#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16307pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
16308    pub s_type: StructureType,
16309    pub next: *mut c_void,
16310    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeNV,
16311}
16312
16313impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
16314    #[inline]
16315    fn default() -> Self {
16316        Self {
16317            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV,
16318            next: ptr::null_mut(),
16319            ray_tracing_invocation_reorder_reordering_hint:
16320                RayTracingInvocationReorderModeNV::default(),
16321        }
16322    }
16323}
16324
16325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html>
16326#[repr(C)]
16327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16328pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
16329    pub s_type: StructureType,
16330    pub next: *mut c_void,
16331    pub spheres: Bool32,
16332    pub linear_swept_spheres: Bool32,
16333}
16334
16335impl Default for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
16336    #[inline]
16337    fn default() -> Self {
16338        Self {
16339            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV,
16340            next: ptr::null_mut(),
16341            spheres: Bool32::default(),
16342            linear_swept_spheres: Bool32::default(),
16343        }
16344    }
16345}
16346
16347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html>
16348#[repr(C)]
16349#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16350pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
16351    pub s_type: StructureType,
16352    pub next: *mut c_void,
16353    pub ray_tracing_maintenance1: Bool32,
16354    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
16355}
16356
16357impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
16358    #[inline]
16359    fn default() -> Self {
16360        Self {
16361            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR,
16362            next: ptr::null_mut(),
16363            ray_tracing_maintenance1: Bool32::default(),
16364            ray_tracing_pipeline_trace_rays_indirect2: Bool32::default(),
16365        }
16366    }
16367}
16368
16369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>
16370#[repr(C)]
16371#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16372pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
16373    pub s_type: StructureType,
16374    pub next: *mut c_void,
16375    pub ray_tracing_motion_blur: Bool32,
16376    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
16377}
16378
16379impl Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
16380    #[inline]
16381    fn default() -> Self {
16382        Self {
16383            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
16384            next: ptr::null_mut(),
16385            ray_tracing_motion_blur: Bool32::default(),
16386            ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
16387        }
16388    }
16389}
16390
16391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>
16392#[repr(C)]
16393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16394pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
16395    pub s_type: StructureType,
16396    pub next: *mut c_void,
16397    pub ray_tracing_pipeline: Bool32,
16398    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
16399    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
16400    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
16401    pub ray_traversal_primitive_culling: Bool32,
16402}
16403
16404impl Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
16405    #[inline]
16406    fn default() -> Self {
16407        Self {
16408            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
16409            next: ptr::null_mut(),
16410            ray_tracing_pipeline: Bool32::default(),
16411            ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
16412            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
16413            ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
16414            ray_traversal_primitive_culling: Bool32::default(),
16415        }
16416    }
16417}
16418
16419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>
16420#[repr(C)]
16421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16422pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
16423    pub s_type: StructureType,
16424    pub next: *mut c_void,
16425    pub shader_group_handle_size: u32,
16426    pub max_ray_recursion_depth: u32,
16427    pub max_shader_group_stride: u32,
16428    pub shader_group_base_alignment: u32,
16429    pub shader_group_handle_capture_replay_size: u32,
16430    pub max_ray_dispatch_invocation_count: u32,
16431    pub shader_group_handle_alignment: u32,
16432    pub max_ray_hit_attribute_size: u32,
16433}
16434
16435impl Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
16436    #[inline]
16437    fn default() -> Self {
16438        Self {
16439            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
16440            next: ptr::null_mut(),
16441            shader_group_handle_size: u32::default(),
16442            max_ray_recursion_depth: u32::default(),
16443            max_shader_group_stride: u32::default(),
16444            shader_group_base_alignment: u32::default(),
16445            shader_group_handle_capture_replay_size: u32::default(),
16446            max_ray_dispatch_invocation_count: u32::default(),
16447            shader_group_handle_alignment: u32::default(),
16448            max_ray_hit_attribute_size: u32::default(),
16449        }
16450    }
16451}
16452
16453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html>
16454#[repr(C)]
16455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16456pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
16457    pub s_type: StructureType,
16458    pub next: *mut c_void,
16459    pub ray_tracing_position_fetch: Bool32,
16460}
16461
16462impl Default for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
16463    #[inline]
16464    fn default() -> Self {
16465        Self {
16466            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR,
16467            next: ptr::null_mut(),
16468            ray_tracing_position_fetch: Bool32::default(),
16469        }
16470    }
16471}
16472
16473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>
16474#[repr(C)]
16475#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16476pub struct PhysicalDeviceRayTracingPropertiesNV {
16477    pub s_type: StructureType,
16478    pub next: *mut c_void,
16479    pub shader_group_handle_size: u32,
16480    pub max_recursion_depth: u32,
16481    pub max_shader_group_stride: u32,
16482    pub shader_group_base_alignment: u32,
16483    pub max_geometry_count: u64,
16484    pub max_instance_count: u64,
16485    pub max_triangle_count: u64,
16486    pub max_descriptor_set_acceleration_structures: u32,
16487}
16488
16489impl Default for PhysicalDeviceRayTracingPropertiesNV {
16490    #[inline]
16491    fn default() -> Self {
16492        Self {
16493            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
16494            next: ptr::null_mut(),
16495            shader_group_handle_size: u32::default(),
16496            max_recursion_depth: u32::default(),
16497            max_shader_group_stride: u32::default(),
16498            shader_group_base_alignment: u32::default(),
16499            max_geometry_count: u64::default(),
16500            max_instance_count: u64::default(),
16501            max_triangle_count: u64::default(),
16502            max_descriptor_set_acceleration_structures: u32::default(),
16503        }
16504    }
16505}
16506
16507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html>
16508#[repr(C)]
16509#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16510pub struct PhysicalDeviceRayTracingValidationFeaturesNV {
16511    pub s_type: StructureType,
16512    pub next: *mut c_void,
16513    pub ray_tracing_validation: Bool32,
16514}
16515
16516impl Default for PhysicalDeviceRayTracingValidationFeaturesNV {
16517    #[inline]
16518    fn default() -> Self {
16519        Self {
16520            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV,
16521            next: ptr::null_mut(),
16522            ray_tracing_validation: Bool32::default(),
16523        }
16524    }
16525}
16526
16527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html>
16528#[repr(C)]
16529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16530pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
16531    pub s_type: StructureType,
16532    pub next: *mut c_void,
16533    pub relaxed_line_rasterization: Bool32,
16534}
16535
16536impl Default for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
16537    #[inline]
16538    fn default() -> Self {
16539        Self {
16540            s_type: StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG,
16541            next: ptr::null_mut(),
16542            relaxed_line_rasterization: Bool32::default(),
16543        }
16544    }
16545}
16546
16547/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html>
16548#[repr(C)]
16549#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16550pub struct PhysicalDeviceRenderPassStripedFeaturesARM {
16551    pub s_type: StructureType,
16552    pub next: *mut c_void,
16553    pub render_pass_striped: Bool32,
16554}
16555
16556impl Default for PhysicalDeviceRenderPassStripedFeaturesARM {
16557    #[inline]
16558    fn default() -> Self {
16559        Self {
16560            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
16561            next: ptr::null_mut(),
16562            render_pass_striped: Bool32::default(),
16563        }
16564    }
16565}
16566
16567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html>
16568#[repr(C)]
16569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16570pub struct PhysicalDeviceRenderPassStripedPropertiesARM {
16571    pub s_type: StructureType,
16572    pub next: *mut c_void,
16573    pub render_pass_stripe_granularity: Extent2D,
16574    pub max_render_pass_stripes: u32,
16575}
16576
16577impl Default for PhysicalDeviceRenderPassStripedPropertiesARM {
16578    #[inline]
16579    fn default() -> Self {
16580        Self {
16581            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
16582            next: ptr::null_mut(),
16583            render_pass_stripe_granularity: Extent2D::default(),
16584            max_render_pass_stripes: u32::default(),
16585        }
16586    }
16587}
16588
16589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>
16590#[repr(C)]
16591#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16592pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
16593    pub s_type: StructureType,
16594    pub next: *mut c_void,
16595    pub representative_fragment_test: Bool32,
16596}
16597
16598impl Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
16599    #[inline]
16600    fn default() -> Self {
16601        Self {
16602            s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
16603            next: ptr::null_mut(),
16604            representative_fragment_test: Bool32::default(),
16605        }
16606    }
16607}
16608
16609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>
16610#[repr(C)]
16611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16612pub struct PhysicalDeviceRobustness2FeaturesEXT {
16613    pub s_type: StructureType,
16614    pub next: *mut c_void,
16615    pub robust_buffer_access2: Bool32,
16616    pub robust_image_access2: Bool32,
16617    pub null_descriptor: Bool32,
16618}
16619
16620impl Default for PhysicalDeviceRobustness2FeaturesEXT {
16621    #[inline]
16622    fn default() -> Self {
16623        Self {
16624            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT,
16625            next: ptr::null_mut(),
16626            robust_buffer_access2: Bool32::default(),
16627            robust_image_access2: Bool32::default(),
16628            null_descriptor: Bool32::default(),
16629        }
16630    }
16631}
16632
16633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>
16634#[repr(C)]
16635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16636pub struct PhysicalDeviceRobustness2PropertiesEXT {
16637    pub s_type: StructureType,
16638    pub next: *mut c_void,
16639    pub robust_storage_buffer_access_size_alignment: DeviceSize,
16640    pub robust_uniform_buffer_access_size_alignment: DeviceSize,
16641}
16642
16643impl Default for PhysicalDeviceRobustness2PropertiesEXT {
16644    #[inline]
16645    fn default() -> Self {
16646        Self {
16647            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT,
16648            next: ptr::null_mut(),
16649            robust_storage_buffer_access_size_alignment: DeviceSize::default(),
16650            robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
16651        }
16652    }
16653}
16654
16655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>
16656#[repr(C)]
16657#[derive(Copy, Clone, Debug, PartialEq)]
16658pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
16659    pub s_type: StructureType,
16660    pub next: *mut c_void,
16661    pub sample_location_sample_counts: SampleCountFlags,
16662    pub max_sample_location_grid_size: Extent2D,
16663    pub sample_location_coordinate_range: [f32; 2],
16664    pub sample_location_sub_pixel_bits: u32,
16665    pub variable_sample_locations: Bool32,
16666}
16667
16668impl Default for PhysicalDeviceSampleLocationsPropertiesEXT {
16669    #[inline]
16670    fn default() -> Self {
16671        Self {
16672            s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
16673            next: ptr::null_mut(),
16674            sample_location_sample_counts: SampleCountFlags::default(),
16675            max_sample_location_grid_size: Extent2D::default(),
16676            sample_location_coordinate_range: [f32::default(); 2],
16677            sample_location_sub_pixel_bits: u32::default(),
16678            variable_sample_locations: Bool32::default(),
16679        }
16680    }
16681}
16682
16683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>
16684#[repr(C)]
16685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16686pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
16687    pub s_type: StructureType,
16688    pub next: *mut c_void,
16689    pub filter_minmax_single_component_formats: Bool32,
16690    pub filter_minmax_image_component_mapping: Bool32,
16691}
16692
16693impl Default for PhysicalDeviceSamplerFilterMinmaxProperties {
16694    #[inline]
16695    fn default() -> Self {
16696        Self {
16697            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
16698            next: ptr::null_mut(),
16699            filter_minmax_single_component_formats: Bool32::default(),
16700            filter_minmax_image_component_mapping: Bool32::default(),
16701        }
16702    }
16703}
16704
16705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>
16706#[repr(C)]
16707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16708pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
16709    pub s_type: StructureType,
16710    pub next: *mut c_void,
16711    pub sampler_ycbcr_conversion: Bool32,
16712}
16713
16714impl Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
16715    #[inline]
16716    fn default() -> Self {
16717        Self {
16718            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
16719            next: ptr::null_mut(),
16720            sampler_ycbcr_conversion: Bool32::default(),
16721        }
16722    }
16723}
16724
16725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>
16726#[repr(C)]
16727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16728pub struct PhysicalDeviceScalarBlockLayoutFeatures {
16729    pub s_type: StructureType,
16730    pub next: *mut c_void,
16731    pub scalar_block_layout: Bool32,
16732}
16733
16734impl Default for PhysicalDeviceScalarBlockLayoutFeatures {
16735    #[inline]
16736    fn default() -> Self {
16737        Self {
16738            s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
16739            next: ptr::null_mut(),
16740            scalar_block_layout: Bool32::default(),
16741        }
16742    }
16743}
16744
16745/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html>
16746#[repr(C)]
16747#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16748pub struct PhysicalDeviceSchedulingControlsFeaturesARM {
16749    pub s_type: StructureType,
16750    pub next: *mut c_void,
16751    pub scheduling_controls: Bool32,
16752}
16753
16754impl Default for PhysicalDeviceSchedulingControlsFeaturesARM {
16755    #[inline]
16756    fn default() -> Self {
16757        Self {
16758            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM,
16759            next: ptr::null_mut(),
16760            scheduling_controls: Bool32::default(),
16761        }
16762    }
16763}
16764
16765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html>
16766#[repr(C)]
16767#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16768pub struct PhysicalDeviceSchedulingControlsPropertiesARM {
16769    pub s_type: StructureType,
16770    pub next: *mut c_void,
16771    pub scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM,
16772}
16773
16774impl Default for PhysicalDeviceSchedulingControlsPropertiesARM {
16775    #[inline]
16776    fn default() -> Self {
16777        Self {
16778            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM,
16779            next: ptr::null_mut(),
16780            scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM::default(),
16781        }
16782    }
16783}
16784
16785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>
16786#[repr(C)]
16787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16788pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
16789    pub s_type: StructureType,
16790    pub next: *mut c_void,
16791    pub separate_depth_stencil_layouts: Bool32,
16792}
16793
16794impl Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
16795    #[inline]
16796    fn default() -> Self {
16797        Self {
16798            s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
16799            next: ptr::null_mut(),
16800            separate_depth_stencil_layouts: Bool32::default(),
16801        }
16802    }
16803}
16804
16805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html>
16806#[repr(C)]
16807#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16808pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
16809    pub s_type: StructureType,
16810    pub next: *mut c_void,
16811    pub shader_float16_vector_atomics: Bool32,
16812}
16813
16814impl Default for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
16815    #[inline]
16816    fn default() -> Self {
16817        Self {
16818            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV,
16819            next: ptr::null_mut(),
16820            shader_float16_vector_atomics: Bool32::default(),
16821        }
16822    }
16823}
16824
16825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>
16826#[repr(C)]
16827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16828pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
16829    pub s_type: StructureType,
16830    pub next: *mut c_void,
16831    pub shader_buffer_float16_atomics: Bool32,
16832    pub shader_buffer_float16_atomic_add: Bool32,
16833    pub shader_buffer_float16_atomic_min_max: Bool32,
16834    pub shader_buffer_float32_atomic_min_max: Bool32,
16835    pub shader_buffer_float64_atomic_min_max: Bool32,
16836    pub shader_shared_float16_atomics: Bool32,
16837    pub shader_shared_float16_atomic_add: Bool32,
16838    pub shader_shared_float16_atomic_min_max: Bool32,
16839    pub shader_shared_float32_atomic_min_max: Bool32,
16840    pub shader_shared_float64_atomic_min_max: Bool32,
16841    pub shader_image_float32_atomic_min_max: Bool32,
16842    pub sparse_image_float32_atomic_min_max: Bool32,
16843}
16844
16845impl Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
16846    #[inline]
16847    fn default() -> Self {
16848        Self {
16849            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
16850            next: ptr::null_mut(),
16851            shader_buffer_float16_atomics: Bool32::default(),
16852            shader_buffer_float16_atomic_add: Bool32::default(),
16853            shader_buffer_float16_atomic_min_max: Bool32::default(),
16854            shader_buffer_float32_atomic_min_max: Bool32::default(),
16855            shader_buffer_float64_atomic_min_max: Bool32::default(),
16856            shader_shared_float16_atomics: Bool32::default(),
16857            shader_shared_float16_atomic_add: Bool32::default(),
16858            shader_shared_float16_atomic_min_max: Bool32::default(),
16859            shader_shared_float32_atomic_min_max: Bool32::default(),
16860            shader_shared_float64_atomic_min_max: Bool32::default(),
16861            shader_image_float32_atomic_min_max: Bool32::default(),
16862            sparse_image_float32_atomic_min_max: Bool32::default(),
16863        }
16864    }
16865}
16866
16867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>
16868#[repr(C)]
16869#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16870pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
16871    pub s_type: StructureType,
16872    pub next: *mut c_void,
16873    pub shader_buffer_float32_atomics: Bool32,
16874    pub shader_buffer_float32_atomic_add: Bool32,
16875    pub shader_buffer_float64_atomics: Bool32,
16876    pub shader_buffer_float64_atomic_add: Bool32,
16877    pub shader_shared_float32_atomics: Bool32,
16878    pub shader_shared_float32_atomic_add: Bool32,
16879    pub shader_shared_float64_atomics: Bool32,
16880    pub shader_shared_float64_atomic_add: Bool32,
16881    pub shader_image_float32_atomics: Bool32,
16882    pub shader_image_float32_atomic_add: Bool32,
16883    pub sparse_image_float32_atomics: Bool32,
16884    pub sparse_image_float32_atomic_add: Bool32,
16885}
16886
16887impl Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
16888    #[inline]
16889    fn default() -> Self {
16890        Self {
16891            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
16892            next: ptr::null_mut(),
16893            shader_buffer_float32_atomics: Bool32::default(),
16894            shader_buffer_float32_atomic_add: Bool32::default(),
16895            shader_buffer_float64_atomics: Bool32::default(),
16896            shader_buffer_float64_atomic_add: Bool32::default(),
16897            shader_shared_float32_atomics: Bool32::default(),
16898            shader_shared_float32_atomic_add: Bool32::default(),
16899            shader_shared_float64_atomics: Bool32::default(),
16900            shader_shared_float64_atomic_add: Bool32::default(),
16901            shader_image_float32_atomics: Bool32::default(),
16902            shader_image_float32_atomic_add: Bool32::default(),
16903            sparse_image_float32_atomics: Bool32::default(),
16904            sparse_image_float32_atomic_add: Bool32::default(),
16905        }
16906    }
16907}
16908
16909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>
16910#[repr(C)]
16911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16912pub struct PhysicalDeviceShaderAtomicInt64Features {
16913    pub s_type: StructureType,
16914    pub next: *mut c_void,
16915    pub shader_buffer_int64_atomics: Bool32,
16916    pub shader_shared_int64_atomics: Bool32,
16917}
16918
16919impl Default for PhysicalDeviceShaderAtomicInt64Features {
16920    #[inline]
16921    fn default() -> Self {
16922        Self {
16923            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
16924            next: ptr::null_mut(),
16925            shader_buffer_int64_atomics: Bool32::default(),
16926            shader_shared_int64_atomics: Bool32::default(),
16927        }
16928    }
16929}
16930
16931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>
16932#[repr(C)]
16933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16934pub struct PhysicalDeviceShaderClockFeaturesKHR {
16935    pub s_type: StructureType,
16936    pub next: *mut c_void,
16937    pub shader_subgroup_clock: Bool32,
16938    pub shader_device_clock: Bool32,
16939}
16940
16941impl Default for PhysicalDeviceShaderClockFeaturesKHR {
16942    #[inline]
16943    fn default() -> Self {
16944        Self {
16945            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
16946            next: ptr::null_mut(),
16947            shader_subgroup_clock: Bool32::default(),
16948            shader_device_clock: Bool32::default(),
16949        }
16950    }
16951}
16952
16953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html>
16954#[repr(C)]
16955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16956pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
16957    pub s_type: StructureType,
16958    pub next: *mut c_void,
16959    pub shader_core_builtins: Bool32,
16960}
16961
16962impl Default for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
16963    #[inline]
16964    fn default() -> Self {
16965        Self {
16966            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
16967            next: ptr::null_mut(),
16968            shader_core_builtins: Bool32::default(),
16969        }
16970    }
16971}
16972
16973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html>
16974#[repr(C)]
16975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16976pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
16977    pub s_type: StructureType,
16978    pub next: *mut c_void,
16979    pub shader_core_mask: u64,
16980    pub shader_core_count: u32,
16981    pub shader_warps_per_core: u32,
16982}
16983
16984impl Default for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
16985    #[inline]
16986    fn default() -> Self {
16987        Self {
16988            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
16989            next: ptr::null_mut(),
16990            shader_core_mask: u64::default(),
16991            shader_core_count: u32::default(),
16992            shader_warps_per_core: u32::default(),
16993        }
16994    }
16995}
16996
16997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>
16998#[repr(C)]
16999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17000pub struct PhysicalDeviceShaderCoreProperties2AMD {
17001    pub s_type: StructureType,
17002    pub next: *mut c_void,
17003    pub shader_core_features: ShaderCorePropertiesFlagsAMD,
17004    pub active_compute_unit_count: u32,
17005}
17006
17007impl Default for PhysicalDeviceShaderCoreProperties2AMD {
17008    #[inline]
17009    fn default() -> Self {
17010        Self {
17011            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
17012            next: ptr::null_mut(),
17013            shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
17014            active_compute_unit_count: u32::default(),
17015        }
17016    }
17017}
17018
17019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>
17020#[repr(C)]
17021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17022pub struct PhysicalDeviceShaderCorePropertiesAMD {
17023    pub s_type: StructureType,
17024    pub next: *mut c_void,
17025    pub shader_engine_count: u32,
17026    pub shader_arrays_per_engine_count: u32,
17027    pub compute_units_per_shader_array: u32,
17028    pub simd_per_compute_unit: u32,
17029    pub wavefronts_per_simd: u32,
17030    pub wavefront_size: u32,
17031    pub sgprs_per_simd: u32,
17032    pub min_sgpr_allocation: u32,
17033    pub max_sgpr_allocation: u32,
17034    pub sgpr_allocation_granularity: u32,
17035    pub vgprs_per_simd: u32,
17036    pub min_vgpr_allocation: u32,
17037    pub max_vgpr_allocation: u32,
17038    pub vgpr_allocation_granularity: u32,
17039}
17040
17041impl Default for PhysicalDeviceShaderCorePropertiesAMD {
17042    #[inline]
17043    fn default() -> Self {
17044        Self {
17045            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
17046            next: ptr::null_mut(),
17047            shader_engine_count: u32::default(),
17048            shader_arrays_per_engine_count: u32::default(),
17049            compute_units_per_shader_array: u32::default(),
17050            simd_per_compute_unit: u32::default(),
17051            wavefronts_per_simd: u32::default(),
17052            wavefront_size: u32::default(),
17053            sgprs_per_simd: u32::default(),
17054            min_sgpr_allocation: u32::default(),
17055            max_sgpr_allocation: u32::default(),
17056            sgpr_allocation_granularity: u32::default(),
17057            vgprs_per_simd: u32::default(),
17058            min_vgpr_allocation: u32::default(),
17059            max_vgpr_allocation: u32::default(),
17060            vgpr_allocation_granularity: u32::default(),
17061        }
17062    }
17063}
17064
17065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html>
17066#[repr(C)]
17067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17068pub struct PhysicalDeviceShaderCorePropertiesARM {
17069    pub s_type: StructureType,
17070    pub next: *mut c_void,
17071    pub pixel_rate: u32,
17072    pub texel_rate: u32,
17073    pub fma_rate: u32,
17074}
17075
17076impl Default for PhysicalDeviceShaderCorePropertiesARM {
17077    #[inline]
17078    fn default() -> Self {
17079        Self {
17080            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM,
17081            next: ptr::null_mut(),
17082            pixel_rate: u32::default(),
17083            texel_rate: u32::default(),
17084            fma_rate: u32::default(),
17085        }
17086    }
17087}
17088
17089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html>
17090#[repr(C)]
17091#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17092pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
17093    pub s_type: StructureType,
17094    pub next: *mut c_void,
17095    pub shader_demote_to_helper_invocation: Bool32,
17096}
17097
17098impl Default for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
17099    #[inline]
17100    fn default() -> Self {
17101        Self {
17102            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
17103            next: ptr::null_mut(),
17104            shader_demote_to_helper_invocation: Bool32::default(),
17105        }
17106    }
17107}
17108
17109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>
17110#[repr(C)]
17111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17112pub struct PhysicalDeviceShaderDrawParametersFeatures {
17113    pub s_type: StructureType,
17114    pub next: *mut c_void,
17115    pub shader_draw_parameters: Bool32,
17116}
17117
17118impl Default for PhysicalDeviceShaderDrawParametersFeatures {
17119    #[inline]
17120    fn default() -> Self {
17121        Self {
17122            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
17123            next: ptr::null_mut(),
17124            shader_draw_parameters: Bool32::default(),
17125        }
17126    }
17127}
17128
17129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html>
17130#[repr(C)]
17131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17132pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
17133    pub s_type: StructureType,
17134    pub next: *mut c_void,
17135    pub shader_early_and_late_fragment_tests: Bool32,
17136}
17137
17138impl Default for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
17139    #[inline]
17140    fn default() -> Self {
17141        Self {
17142            s_type:
17143                StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD,
17144            next: ptr::null_mut(),
17145            shader_early_and_late_fragment_tests: Bool32::default(),
17146        }
17147    }
17148}
17149
17150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html>
17151#[repr(C)]
17152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17153pub struct PhysicalDeviceShaderEnqueueFeaturesAMDX {
17154    pub s_type: StructureType,
17155    pub next: *mut c_void,
17156    pub shader_enqueue: Bool32,
17157    pub shader_mesh_enqueue: Bool32,
17158}
17159
17160impl Default for PhysicalDeviceShaderEnqueueFeaturesAMDX {
17161    #[inline]
17162    fn default() -> Self {
17163        Self {
17164            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX,
17165            next: ptr::null_mut(),
17166            shader_enqueue: Bool32::default(),
17167            shader_mesh_enqueue: Bool32::default(),
17168        }
17169    }
17170}
17171
17172/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html>
17173#[repr(C)]
17174#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17175pub struct PhysicalDeviceShaderEnqueuePropertiesAMDX {
17176    pub s_type: StructureType,
17177    pub next: *mut c_void,
17178    pub max_execution_graph_depth: u32,
17179    pub max_execution_graph_shader_output_nodes: u32,
17180    pub max_execution_graph_shader_payload_size: u32,
17181    pub max_execution_graph_shader_payload_count: u32,
17182    pub execution_graph_dispatch_address_alignment: u32,
17183    pub max_execution_graph_workgroup_count: [u32; 3],
17184    pub max_execution_graph_workgroups: u32,
17185}
17186
17187impl Default for PhysicalDeviceShaderEnqueuePropertiesAMDX {
17188    #[inline]
17189    fn default() -> Self {
17190        Self {
17191            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX,
17192            next: ptr::null_mut(),
17193            max_execution_graph_depth: u32::default(),
17194            max_execution_graph_shader_output_nodes: u32::default(),
17195            max_execution_graph_shader_payload_size: u32::default(),
17196            max_execution_graph_shader_payload_count: u32::default(),
17197            execution_graph_dispatch_address_alignment: u32::default(),
17198            max_execution_graph_workgroup_count: [u32::default(); 3],
17199            max_execution_graph_workgroups: u32::default(),
17200        }
17201    }
17202}
17203
17204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html>
17205#[repr(C)]
17206#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17207pub struct PhysicalDeviceShaderExpectAssumeFeatures {
17208    pub s_type: StructureType,
17209    pub next: *mut c_void,
17210    pub shader_expect_assume: Bool32,
17211}
17212
17213impl Default for PhysicalDeviceShaderExpectAssumeFeatures {
17214    #[inline]
17215    fn default() -> Self {
17216        Self {
17217            s_type: StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,
17218            next: ptr::null_mut(),
17219            shader_expect_assume: Bool32::default(),
17220        }
17221    }
17222}
17223
17224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>
17225#[repr(C)]
17226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17227pub struct PhysicalDeviceShaderFloat16Int8Features {
17228    pub s_type: StructureType,
17229    pub next: *mut c_void,
17230    pub shader_float16: Bool32,
17231    pub shader_int8: Bool32,
17232}
17233
17234impl Default for PhysicalDeviceShaderFloat16Int8Features {
17235    #[inline]
17236    fn default() -> Self {
17237        Self {
17238            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
17239            next: ptr::null_mut(),
17240            shader_float16: Bool32::default(),
17241            shader_int8: Bool32::default(),
17242        }
17243    }
17244}
17245
17246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html>
17247#[repr(C)]
17248#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17249pub struct PhysicalDeviceShaderFloatControls2Features {
17250    pub s_type: StructureType,
17251    pub next: *mut c_void,
17252    pub shader_float_controls2: Bool32,
17253}
17254
17255impl Default for PhysicalDeviceShaderFloatControls2Features {
17256    #[inline]
17257    fn default() -> Self {
17258        Self {
17259            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,
17260            next: ptr::null_mut(),
17261            shader_float_controls2: Bool32::default(),
17262        }
17263    }
17264}
17265
17266/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>
17267#[repr(C)]
17268#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17269pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
17270    pub s_type: StructureType,
17271    pub next: *mut c_void,
17272    pub shader_image_int64_atomics: Bool32,
17273    pub sparse_image_int64_atomics: Bool32,
17274}
17275
17276impl Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
17277    #[inline]
17278    fn default() -> Self {
17279        Self {
17280            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
17281            next: ptr::null_mut(),
17282            shader_image_int64_atomics: Bool32::default(),
17283            sparse_image_int64_atomics: Bool32::default(),
17284        }
17285    }
17286}
17287
17288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>
17289#[repr(C)]
17290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17291pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
17292    pub s_type: StructureType,
17293    pub next: *mut c_void,
17294    pub image_footprint: Bool32,
17295}
17296
17297impl Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
17298    #[inline]
17299    fn default() -> Self {
17300        Self {
17301            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
17302            next: ptr::null_mut(),
17303            image_footprint: Bool32::default(),
17304        }
17305    }
17306}
17307
17308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html>
17309#[repr(C)]
17310#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17311pub struct PhysicalDeviceShaderIntegerDotProductFeatures {
17312    pub s_type: StructureType,
17313    pub next: *mut c_void,
17314    pub shader_integer_dot_product: Bool32,
17315}
17316
17317impl Default for PhysicalDeviceShaderIntegerDotProductFeatures {
17318    #[inline]
17319    fn default() -> Self {
17320        Self {
17321            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
17322            next: ptr::null_mut(),
17323            shader_integer_dot_product: Bool32::default(),
17324        }
17325    }
17326}
17327
17328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html>
17329#[repr(C)]
17330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17331pub struct PhysicalDeviceShaderIntegerDotProductProperties {
17332    pub s_type: StructureType,
17333    pub next: *mut c_void,
17334    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
17335    pub integer_dot_product_8bit_signed_accelerated: Bool32,
17336    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
17337    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
17338    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
17339    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
17340    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
17341    pub integer_dot_product_16bit_signed_accelerated: Bool32,
17342    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
17343    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
17344    pub integer_dot_product_32bit_signed_accelerated: Bool32,
17345    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
17346    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
17347    pub integer_dot_product_64bit_signed_accelerated: Bool32,
17348    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
17349    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
17350    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
17351    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
17352    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
17353    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
17354    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
17355        Bool32,
17356    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
17357    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
17358    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
17359    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
17360    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
17361    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
17362    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
17363    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
17364    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
17365}
17366
17367impl Default for PhysicalDeviceShaderIntegerDotProductProperties {
17368    #[inline]
17369    fn default() -> Self {
17370        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() }
17371    }
17372}
17373
17374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>
17375#[repr(C)]
17376#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17377pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
17378    pub s_type: StructureType,
17379    pub next: *mut c_void,
17380    pub shader_integer_functions2: Bool32,
17381}
17382
17383impl Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
17384    #[inline]
17385    fn default() -> Self {
17386        Self {
17387            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
17388            next: ptr::null_mut(),
17389            shader_integer_functions2: Bool32::default(),
17390        }
17391    }
17392}
17393
17394/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html>
17395#[repr(C)]
17396#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17397pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
17398    pub s_type: StructureType,
17399    pub next: *mut c_void,
17400    pub shader_maximal_reconvergence: Bool32,
17401}
17402
17403impl Default for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
17404    #[inline]
17405    fn default() -> Self {
17406        Self {
17407            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR,
17408            next: ptr::null_mut(),
17409            shader_maximal_reconvergence: Bool32::default(),
17410        }
17411    }
17412}
17413
17414/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html>
17415#[repr(C)]
17416#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17417pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
17418    pub s_type: StructureType,
17419    pub next: *mut c_void,
17420    pub shader_module_identifier: Bool32,
17421}
17422
17423impl Default for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
17424    #[inline]
17425    fn default() -> Self {
17426        Self {
17427            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT,
17428            next: ptr::null_mut(),
17429            shader_module_identifier: Bool32::default(),
17430        }
17431    }
17432}
17433
17434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html>
17435#[repr(C)]
17436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17437pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
17438    pub s_type: StructureType,
17439    pub next: *mut c_void,
17440    pub shader_module_identifier_algorithm_uuid: ByteArray<UUID_SIZE>,
17441}
17442
17443impl Default for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
17444    #[inline]
17445    fn default() -> Self {
17446        Self {
17447            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT,
17448            next: ptr::null_mut(),
17449            shader_module_identifier_algorithm_uuid: ByteArray::default(),
17450        }
17451    }
17452}
17453
17454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html>
17455#[repr(C)]
17456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17457pub struct PhysicalDeviceShaderObjectFeaturesEXT {
17458    pub s_type: StructureType,
17459    pub next: *mut c_void,
17460    pub shader_object: Bool32,
17461}
17462
17463impl Default for PhysicalDeviceShaderObjectFeaturesEXT {
17464    #[inline]
17465    fn default() -> Self {
17466        Self {
17467            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT,
17468            next: ptr::null_mut(),
17469            shader_object: Bool32::default(),
17470        }
17471    }
17472}
17473
17474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html>
17475#[repr(C)]
17476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17477pub struct PhysicalDeviceShaderObjectPropertiesEXT {
17478    pub s_type: StructureType,
17479    pub next: *mut c_void,
17480    pub shader_binary_uuid: ByteArray<UUID_SIZE>,
17481    pub shader_binary_version: u32,
17482}
17483
17484impl Default for PhysicalDeviceShaderObjectPropertiesEXT {
17485    #[inline]
17486    fn default() -> Self {
17487        Self {
17488            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT,
17489            next: ptr::null_mut(),
17490            shader_binary_uuid: ByteArray::default(),
17491            shader_binary_version: u32::default(),
17492        }
17493    }
17494}
17495
17496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html>
17497#[repr(C)]
17498#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17499pub struct PhysicalDeviceShaderQuadControlFeaturesKHR {
17500    pub s_type: StructureType,
17501    pub next: *mut c_void,
17502    pub shader_quad_control: Bool32,
17503}
17504
17505impl Default for PhysicalDeviceShaderQuadControlFeaturesKHR {
17506    #[inline]
17507    fn default() -> Self {
17508        Self {
17509            s_type: StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR,
17510            next: ptr::null_mut(),
17511            shader_quad_control: Bool32::default(),
17512        }
17513    }
17514}
17515
17516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html>
17517#[repr(C)]
17518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17519pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
17520    pub s_type: StructureType,
17521    pub next: *mut c_void,
17522    pub shader_relaxed_extended_instruction: Bool32,
17523}
17524
17525impl Default for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
17526    #[inline]
17527    fn default() -> Self {
17528        Self {
17529            s_type: StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR,
17530            next: ptr::null_mut(),
17531            shader_relaxed_extended_instruction: Bool32::default(),
17532        }
17533    }
17534}
17535
17536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html>
17537#[repr(C)]
17538#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17539pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
17540    pub s_type: StructureType,
17541    pub next: *mut c_void,
17542    pub shader_replicated_composites: Bool32,
17543}
17544
17545impl Default for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
17546    #[inline]
17547    fn default() -> Self {
17548        Self {
17549            s_type: StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT,
17550            next: ptr::null_mut(),
17551            shader_replicated_composites: Bool32::default(),
17552        }
17553    }
17554}
17555
17556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>
17557#[repr(C)]
17558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17559pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
17560    pub s_type: StructureType,
17561    pub next: *mut c_void,
17562    pub shader_sm_builtins: Bool32,
17563}
17564
17565impl Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
17566    #[inline]
17567    fn default() -> Self {
17568        Self {
17569            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
17570            next: ptr::null_mut(),
17571            shader_sm_builtins: Bool32::default(),
17572        }
17573    }
17574}
17575
17576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>
17577#[repr(C)]
17578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17579pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
17580    pub s_type: StructureType,
17581    pub next: *mut c_void,
17582    pub shader_sm_count: u32,
17583    pub shader_warps_per_sm: u32,
17584}
17585
17586impl Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
17587    #[inline]
17588    fn default() -> Self {
17589        Self {
17590            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
17591            next: ptr::null_mut(),
17592            shader_sm_count: u32::default(),
17593            shader_warps_per_sm: u32::default(),
17594        }
17595    }
17596}
17597
17598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>
17599#[repr(C)]
17600#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17601pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
17602    pub s_type: StructureType,
17603    pub next: *mut c_void,
17604    pub shader_subgroup_extended_types: Bool32,
17605}
17606
17607impl Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
17608    #[inline]
17609    fn default() -> Self {
17610        Self {
17611            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
17612            next: ptr::null_mut(),
17613            shader_subgroup_extended_types: Bool32::default(),
17614        }
17615    }
17616}
17617
17618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html>
17619#[repr(C)]
17620#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17621pub struct PhysicalDeviceShaderSubgroupRotateFeatures {
17622    pub s_type: StructureType,
17623    pub next: *mut c_void,
17624    pub shader_subgroup_rotate: Bool32,
17625    pub shader_subgroup_rotate_clustered: Bool32,
17626}
17627
17628impl Default for PhysicalDeviceShaderSubgroupRotateFeatures {
17629    #[inline]
17630    fn default() -> Self {
17631        Self {
17632            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
17633            next: ptr::null_mut(),
17634            shader_subgroup_rotate: Bool32::default(),
17635            shader_subgroup_rotate_clustered: Bool32::default(),
17636        }
17637    }
17638}
17639
17640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>
17641#[repr(C)]
17642#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17643pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
17644    pub s_type: StructureType,
17645    pub next: *mut c_void,
17646    pub shader_subgroup_uniform_control_flow: Bool32,
17647}
17648
17649impl Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
17650    #[inline]
17651    fn default() -> Self {
17652        Self {
17653            s_type:
17654                StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
17655            next: ptr::null_mut(),
17656            shader_subgroup_uniform_control_flow: Bool32::default(),
17657        }
17658    }
17659}
17660
17661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html>
17662#[repr(C)]
17663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17664pub struct PhysicalDeviceShaderTerminateInvocationFeatures {
17665    pub s_type: StructureType,
17666    pub next: *mut c_void,
17667    pub shader_terminate_invocation: Bool32,
17668}
17669
17670impl Default for PhysicalDeviceShaderTerminateInvocationFeatures {
17671    #[inline]
17672    fn default() -> Self {
17673        Self {
17674            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
17675            next: ptr::null_mut(),
17676            shader_terminate_invocation: Bool32::default(),
17677        }
17678    }
17679}
17680
17681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html>
17682#[repr(C)]
17683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17684pub struct PhysicalDeviceShaderTileImageFeaturesEXT {
17685    pub s_type: StructureType,
17686    pub next: *mut c_void,
17687    pub shader_tile_image_color_read_access: Bool32,
17688    pub shader_tile_image_depth_read_access: Bool32,
17689    pub shader_tile_image_stencil_read_access: Bool32,
17690}
17691
17692impl Default for PhysicalDeviceShaderTileImageFeaturesEXT {
17693    #[inline]
17694    fn default() -> Self {
17695        Self {
17696            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT,
17697            next: ptr::null_mut(),
17698            shader_tile_image_color_read_access: Bool32::default(),
17699            shader_tile_image_depth_read_access: Bool32::default(),
17700            shader_tile_image_stencil_read_access: Bool32::default(),
17701        }
17702    }
17703}
17704
17705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html>
17706#[repr(C)]
17707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17708pub struct PhysicalDeviceShaderTileImagePropertiesEXT {
17709    pub s_type: StructureType,
17710    pub next: *mut c_void,
17711    pub shader_tile_image_coherent_read_accelerated: Bool32,
17712    pub shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32,
17713    pub shader_tile_image_read_from_helper_invocation: Bool32,
17714}
17715
17716impl Default for PhysicalDeviceShaderTileImagePropertiesEXT {
17717    #[inline]
17718    fn default() -> Self {
17719        Self {
17720            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT,
17721            next: ptr::null_mut(),
17722            shader_tile_image_coherent_read_accelerated: Bool32::default(),
17723            shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32::default(),
17724            shader_tile_image_read_from_helper_invocation: Bool32::default(),
17725        }
17726    }
17727}
17728
17729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>
17730#[repr(C)]
17731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17732pub struct PhysicalDeviceShadingRateImageFeaturesNV {
17733    pub s_type: StructureType,
17734    pub next: *mut c_void,
17735    pub shading_rate_image: Bool32,
17736    pub shading_rate_coarse_sample_order: Bool32,
17737}
17738
17739impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
17740    #[inline]
17741    fn default() -> Self {
17742        Self {
17743            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
17744            next: ptr::null_mut(),
17745            shading_rate_image: Bool32::default(),
17746            shading_rate_coarse_sample_order: Bool32::default(),
17747        }
17748    }
17749}
17750
17751/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>
17752#[repr(C)]
17753#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17754pub struct PhysicalDeviceShadingRateImagePropertiesNV {
17755    pub s_type: StructureType,
17756    pub next: *mut c_void,
17757    pub shading_rate_texel_size: Extent2D,
17758    pub shading_rate_palette_size: u32,
17759    pub shading_rate_max_coarse_samples: u32,
17760}
17761
17762impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
17763    #[inline]
17764    fn default() -> Self {
17765        Self {
17766            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
17767            next: ptr::null_mut(),
17768            shading_rate_texel_size: Extent2D::default(),
17769            shading_rate_palette_size: u32::default(),
17770            shading_rate_max_coarse_samples: u32::default(),
17771        }
17772    }
17773}
17774
17775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>
17776#[repr(C)]
17777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17778pub struct PhysicalDeviceSparseImageFormatInfo2 {
17779    pub s_type: StructureType,
17780    pub next: *const c_void,
17781    pub format: Format,
17782    pub type_: ImageType,
17783    pub samples: SampleCountFlags,
17784    pub usage: ImageUsageFlags,
17785    pub tiling: ImageTiling,
17786}
17787
17788impl Default for PhysicalDeviceSparseImageFormatInfo2 {
17789    #[inline]
17790    fn default() -> Self {
17791        Self {
17792            s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
17793            next: ptr::null(),
17794            format: Format::default(),
17795            type_: ImageType::default(),
17796            samples: SampleCountFlags::default(),
17797            usage: ImageUsageFlags::default(),
17798            tiling: ImageTiling::default(),
17799        }
17800    }
17801}
17802
17803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html>
17804#[repr(C)]
17805#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
17806pub struct PhysicalDeviceSparseProperties {
17807    pub residency_standard_2d_block_shape: Bool32,
17808    pub residency_standard_2d_multisample_block_shape: Bool32,
17809    pub residency_standard_3d_block_shape: Bool32,
17810    pub residency_aligned_mip_size: Bool32,
17811    pub residency_non_resident_strict: Bool32,
17812}
17813
17814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html>
17815#[repr(C)]
17816#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17817pub struct PhysicalDeviceSubgroupProperties {
17818    pub s_type: StructureType,
17819    pub next: *mut c_void,
17820    pub subgroup_size: u32,
17821    pub supported_stages: ShaderStageFlags,
17822    pub supported_operations: SubgroupFeatureFlags,
17823    pub quad_operations_in_all_stages: Bool32,
17824}
17825
17826impl Default for PhysicalDeviceSubgroupProperties {
17827    #[inline]
17828    fn default() -> Self {
17829        Self {
17830            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
17831            next: ptr::null_mut(),
17832            subgroup_size: u32::default(),
17833            supported_stages: ShaderStageFlags::default(),
17834            supported_operations: SubgroupFeatureFlags::default(),
17835            quad_operations_in_all_stages: Bool32::default(),
17836        }
17837    }
17838}
17839
17840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html>
17841#[repr(C)]
17842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17843pub struct PhysicalDeviceSubgroupSizeControlFeatures {
17844    pub s_type: StructureType,
17845    pub next: *mut c_void,
17846    pub subgroup_size_control: Bool32,
17847    pub compute_full_subgroups: Bool32,
17848}
17849
17850impl Default for PhysicalDeviceSubgroupSizeControlFeatures {
17851    #[inline]
17852    fn default() -> Self {
17853        Self {
17854            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
17855            next: ptr::null_mut(),
17856            subgroup_size_control: Bool32::default(),
17857            compute_full_subgroups: Bool32::default(),
17858        }
17859    }
17860}
17861
17862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html>
17863#[repr(C)]
17864#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17865pub struct PhysicalDeviceSubgroupSizeControlProperties {
17866    pub s_type: StructureType,
17867    pub next: *mut c_void,
17868    pub min_subgroup_size: u32,
17869    pub max_subgroup_size: u32,
17870    pub max_compute_workgroup_subgroups: u32,
17871    pub required_subgroup_size_stages: ShaderStageFlags,
17872}
17873
17874impl Default for PhysicalDeviceSubgroupSizeControlProperties {
17875    #[inline]
17876    fn default() -> Self {
17877        Self {
17878            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
17879            next: ptr::null_mut(),
17880            min_subgroup_size: u32::default(),
17881            max_subgroup_size: u32::default(),
17882            max_compute_workgroup_subgroups: u32::default(),
17883            required_subgroup_size_stages: ShaderStageFlags::default(),
17884        }
17885    }
17886}
17887
17888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html>
17889#[repr(C)]
17890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17891pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
17892    pub s_type: StructureType,
17893    pub next: *mut c_void,
17894    pub subpass_merge_feedback: Bool32,
17895}
17896
17897impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
17898    #[inline]
17899    fn default() -> Self {
17900        Self {
17901            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT,
17902            next: ptr::null_mut(),
17903            subpass_merge_feedback: Bool32::default(),
17904        }
17905    }
17906}
17907
17908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>
17909#[repr(C)]
17910#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17911pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
17912    pub s_type: StructureType,
17913    pub next: *mut c_void,
17914    pub subpass_shading: Bool32,
17915}
17916
17917impl Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
17918    #[inline]
17919    fn default() -> Self {
17920        Self {
17921            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
17922            next: ptr::null_mut(),
17923            subpass_shading: Bool32::default(),
17924        }
17925    }
17926}
17927
17928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>
17929#[repr(C)]
17930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17931pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
17932    pub s_type: StructureType,
17933    pub next: *mut c_void,
17934    pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
17935}
17936
17937impl Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
17938    #[inline]
17939    fn default() -> Self {
17940        Self {
17941            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
17942            next: ptr::null_mut(),
17943            max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
17944        }
17945    }
17946}
17947
17948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>
17949#[repr(C)]
17950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17951pub struct PhysicalDeviceSurfaceInfo2KHR {
17952    pub s_type: StructureType,
17953    pub next: *const c_void,
17954    pub surface: SurfaceKHR,
17955}
17956
17957impl Default for PhysicalDeviceSurfaceInfo2KHR {
17958    #[inline]
17959    fn default() -> Self {
17960        Self {
17961            s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
17962            next: ptr::null(),
17963            surface: SurfaceKHR::default(),
17964        }
17965    }
17966}
17967
17968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html>
17969#[repr(C)]
17970#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17971pub struct PhysicalDeviceSwapchainMaintenance1FeaturesEXT {
17972    pub s_type: StructureType,
17973    pub next: *mut c_void,
17974    pub swapchain_maintenance1: Bool32,
17975}
17976
17977impl Default for PhysicalDeviceSwapchainMaintenance1FeaturesEXT {
17978    #[inline]
17979    fn default() -> Self {
17980        Self {
17981            s_type: StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT,
17982            next: ptr::null_mut(),
17983            swapchain_maintenance1: Bool32::default(),
17984        }
17985    }
17986}
17987
17988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html>
17989#[repr(C)]
17990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17991pub struct PhysicalDeviceSynchronization2Features {
17992    pub s_type: StructureType,
17993    pub next: *mut c_void,
17994    pub synchronization2: Bool32,
17995}
17996
17997impl Default for PhysicalDeviceSynchronization2Features {
17998    #[inline]
17999    fn default() -> Self {
18000        Self {
18001            s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
18002            next: ptr::null_mut(),
18003            synchronization2: Bool32::default(),
18004        }
18005    }
18006}
18007
18008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>
18009#[repr(C)]
18010#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18011pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
18012    pub s_type: StructureType,
18013    pub next: *mut c_void,
18014    pub texel_buffer_alignment: Bool32,
18015}
18016
18017impl Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
18018    #[inline]
18019    fn default() -> Self {
18020        Self {
18021            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
18022            next: ptr::null_mut(),
18023            texel_buffer_alignment: Bool32::default(),
18024        }
18025    }
18026}
18027
18028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html>
18029#[repr(C)]
18030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18031pub struct PhysicalDeviceTexelBufferAlignmentProperties {
18032    pub s_type: StructureType,
18033    pub next: *mut c_void,
18034    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
18035    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
18036    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
18037    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
18038}
18039
18040impl Default for PhysicalDeviceTexelBufferAlignmentProperties {
18041    #[inline]
18042    fn default() -> Self {
18043        Self {
18044            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
18045            next: ptr::null_mut(),
18046            storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
18047            storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
18048            uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
18049            uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
18050        }
18051    }
18052}
18053
18054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html>
18055#[repr(C)]
18056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18057pub struct PhysicalDeviceTextureCompressionASTCHDRFeatures {
18058    pub s_type: StructureType,
18059    pub next: *mut c_void,
18060    pub texture_compression_astc_hdr: Bool32,
18061}
18062
18063impl Default for PhysicalDeviceTextureCompressionASTCHDRFeatures {
18064    #[inline]
18065    fn default() -> Self {
18066        Self {
18067            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
18068            next: ptr::null_mut(),
18069            texture_compression_astc_hdr: Bool32::default(),
18070        }
18071    }
18072}
18073
18074/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html>
18075#[repr(C)]
18076#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18077pub struct PhysicalDeviceTilePropertiesFeaturesQCOM {
18078    pub s_type: StructureType,
18079    pub next: *mut c_void,
18080    pub tile_properties: Bool32,
18081}
18082
18083impl Default for PhysicalDeviceTilePropertiesFeaturesQCOM {
18084    #[inline]
18085    fn default() -> Self {
18086        Self {
18087            s_type: StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM,
18088            next: ptr::null_mut(),
18089            tile_properties: Bool32::default(),
18090        }
18091    }
18092}
18093
18094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>
18095#[repr(C)]
18096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18097pub struct PhysicalDeviceTimelineSemaphoreFeatures {
18098    pub s_type: StructureType,
18099    pub next: *mut c_void,
18100    pub timeline_semaphore: Bool32,
18101}
18102
18103impl Default for PhysicalDeviceTimelineSemaphoreFeatures {
18104    #[inline]
18105    fn default() -> Self {
18106        Self {
18107            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
18108            next: ptr::null_mut(),
18109            timeline_semaphore: Bool32::default(),
18110        }
18111    }
18112}
18113
18114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>
18115#[repr(C)]
18116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18117pub struct PhysicalDeviceTimelineSemaphoreProperties {
18118    pub s_type: StructureType,
18119    pub next: *mut c_void,
18120    pub max_timeline_semaphore_value_difference: u64,
18121}
18122
18123impl Default for PhysicalDeviceTimelineSemaphoreProperties {
18124    #[inline]
18125    fn default() -> Self {
18126        Self {
18127            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
18128            next: ptr::null_mut(),
18129            max_timeline_semaphore_value_difference: u64::default(),
18130        }
18131    }
18132}
18133
18134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html>
18135#[repr(C)]
18136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18137pub struct PhysicalDeviceToolProperties {
18138    pub s_type: StructureType,
18139    pub next: *mut c_void,
18140    pub name: StringArray<MAX_EXTENSION_NAME_SIZE>,
18141    pub version: StringArray<MAX_EXTENSION_NAME_SIZE>,
18142    pub purposes: ToolPurposeFlags,
18143    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
18144    pub layer: StringArray<MAX_EXTENSION_NAME_SIZE>,
18145}
18146
18147impl Default for PhysicalDeviceToolProperties {
18148    #[inline]
18149    fn default() -> Self {
18150        Self {
18151            s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES,
18152            next: ptr::null_mut(),
18153            name: StringArray::default(),
18154            version: StringArray::default(),
18155            purposes: ToolPurposeFlags::default(),
18156            description: StringArray::default(),
18157            layer: StringArray::default(),
18158        }
18159    }
18160}
18161
18162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>
18163#[repr(C)]
18164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18165pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
18166    pub s_type: StructureType,
18167    pub next: *mut c_void,
18168    pub transform_feedback: Bool32,
18169    pub geometry_streams: Bool32,
18170}
18171
18172impl Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
18173    #[inline]
18174    fn default() -> Self {
18175        Self {
18176            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
18177            next: ptr::null_mut(),
18178            transform_feedback: Bool32::default(),
18179            geometry_streams: Bool32::default(),
18180        }
18181    }
18182}
18183
18184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>
18185#[repr(C)]
18186#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18187pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
18188    pub s_type: StructureType,
18189    pub next: *mut c_void,
18190    pub max_transform_feedback_streams: u32,
18191    pub max_transform_feedback_buffers: u32,
18192    pub max_transform_feedback_buffer_size: DeviceSize,
18193    pub max_transform_feedback_stream_data_size: u32,
18194    pub max_transform_feedback_buffer_data_size: u32,
18195    pub max_transform_feedback_buffer_data_stride: u32,
18196    pub transform_feedback_queries: Bool32,
18197    pub transform_feedback_streams_lines_triangles: Bool32,
18198    pub transform_feedback_rasterization_stream_select: Bool32,
18199    pub transform_feedback_draw: Bool32,
18200}
18201
18202impl Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
18203    #[inline]
18204    fn default() -> Self {
18205        Self {
18206            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
18207            next: ptr::null_mut(),
18208            max_transform_feedback_streams: u32::default(),
18209            max_transform_feedback_buffers: u32::default(),
18210            max_transform_feedback_buffer_size: DeviceSize::default(),
18211            max_transform_feedback_stream_data_size: u32::default(),
18212            max_transform_feedback_buffer_data_size: u32::default(),
18213            max_transform_feedback_buffer_data_stride: u32::default(),
18214            transform_feedback_queries: Bool32::default(),
18215            transform_feedback_streams_lines_triangles: Bool32::default(),
18216            transform_feedback_rasterization_stream_select: Bool32::default(),
18217            transform_feedback_draw: Bool32::default(),
18218        }
18219    }
18220}
18221
18222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>
18223#[repr(C)]
18224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18225pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
18226    pub s_type: StructureType,
18227    pub next: *mut c_void,
18228    pub uniform_buffer_standard_layout: Bool32,
18229}
18230
18231impl Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
18232    #[inline]
18233    fn default() -> Self {
18234        Self {
18235            s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
18236            next: ptr::null_mut(),
18237            uniform_buffer_standard_layout: Bool32::default(),
18238        }
18239    }
18240}
18241
18242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html>
18243#[repr(C)]
18244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18245pub struct PhysicalDeviceVariablePointersFeatures {
18246    pub s_type: StructureType,
18247    pub next: *mut c_void,
18248    pub variable_pointers_storage_buffer: Bool32,
18249    pub variable_pointers: Bool32,
18250}
18251
18252impl Default for PhysicalDeviceVariablePointersFeatures {
18253    #[inline]
18254    fn default() -> Self {
18255        Self {
18256            s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
18257            next: ptr::null_mut(),
18258            variable_pointers_storage_buffer: Bool32::default(),
18259            variable_pointers: Bool32::default(),
18260        }
18261    }
18262}
18263
18264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html>
18265#[repr(C)]
18266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18267pub struct PhysicalDeviceVertexAttributeDivisorFeatures {
18268    pub s_type: StructureType,
18269    pub next: *mut c_void,
18270    pub vertex_attribute_instance_rate_divisor: Bool32,
18271    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
18272}
18273
18274impl Default for PhysicalDeviceVertexAttributeDivisorFeatures {
18275    #[inline]
18276    fn default() -> Self {
18277        Self {
18278            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,
18279            next: ptr::null_mut(),
18280            vertex_attribute_instance_rate_divisor: Bool32::default(),
18281            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
18282        }
18283    }
18284}
18285
18286/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html>
18287#[repr(C)]
18288#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18289pub struct PhysicalDeviceVertexAttributeDivisorProperties {
18290    pub s_type: StructureType,
18291    pub next: *mut c_void,
18292    pub max_vertex_attrib_divisor: u32,
18293    pub supports_non_zero_first_instance: Bool32,
18294}
18295
18296impl Default for PhysicalDeviceVertexAttributeDivisorProperties {
18297    #[inline]
18298    fn default() -> Self {
18299        Self {
18300            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,
18301            next: ptr::null_mut(),
18302            max_vertex_attrib_divisor: u32::default(),
18303            supports_non_zero_first_instance: Bool32::default(),
18304        }
18305    }
18306}
18307
18308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>
18309#[repr(C)]
18310#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18311pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
18312    pub s_type: StructureType,
18313    pub next: *mut c_void,
18314    pub max_vertex_attrib_divisor: u32,
18315}
18316
18317impl Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
18318    #[inline]
18319    fn default() -> Self {
18320        Self {
18321            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
18322            next: ptr::null_mut(),
18323            max_vertex_attrib_divisor: u32::default(),
18324        }
18325    }
18326}
18327
18328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html>
18329#[repr(C)]
18330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18331pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
18332    pub s_type: StructureType,
18333    pub next: *mut c_void,
18334    pub vertex_attribute_robustness: Bool32,
18335}
18336
18337impl Default for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
18338    #[inline]
18339    fn default() -> Self {
18340        Self {
18341            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT,
18342            next: ptr::null_mut(),
18343            vertex_attribute_robustness: Bool32::default(),
18344        }
18345    }
18346}
18347
18348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>
18349#[repr(C)]
18350#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18351pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
18352    pub s_type: StructureType,
18353    pub next: *mut c_void,
18354    pub vertex_input_dynamic_state: Bool32,
18355}
18356
18357impl Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
18358    #[inline]
18359    fn default() -> Self {
18360        Self {
18361            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
18362            next: ptr::null_mut(),
18363            vertex_input_dynamic_state: Bool32::default(),
18364        }
18365    }
18366}
18367
18368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html>
18369#[repr(C)]
18370#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18371pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHR {
18372    pub s_type: StructureType,
18373    pub next: *mut c_void,
18374    pub video_encode_av1: Bool32,
18375}
18376
18377impl Default for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
18378    #[inline]
18379    fn default() -> Self {
18380        Self {
18381            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR,
18382            next: ptr::null_mut(),
18383            video_encode_av1: Bool32::default(),
18384        }
18385    }
18386}
18387
18388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html>
18389#[repr(C)]
18390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18391pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
18392    pub s_type: StructureType,
18393    pub next: *const c_void,
18394    pub video_profile: *const VideoProfileInfoKHR,
18395    pub quality_level: u32,
18396}
18397
18398impl Default for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
18399    #[inline]
18400    fn default() -> Self {
18401        Self {
18402            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
18403            next: ptr::null(),
18404            video_profile: ptr::null(),
18405            quality_level: u32::default(),
18406        }
18407    }
18408}
18409
18410/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html>
18411#[repr(C)]
18412#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18413pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
18414    pub s_type: StructureType,
18415    pub next: *mut c_void,
18416    pub video_encode_quantization_map: Bool32,
18417}
18418
18419impl Default for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
18420    #[inline]
18421    fn default() -> Self {
18422        Self {
18423            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR,
18424            next: ptr::null_mut(),
18425            video_encode_quantization_map: Bool32::default(),
18426        }
18427    }
18428}
18429
18430/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>
18431#[repr(C)]
18432#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18433pub struct PhysicalDeviceVideoFormatInfoKHR {
18434    pub s_type: StructureType,
18435    pub next: *const c_void,
18436    pub image_usage: ImageUsageFlags,
18437}
18438
18439impl Default for PhysicalDeviceVideoFormatInfoKHR {
18440    #[inline]
18441    fn default() -> Self {
18442        Self {
18443            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
18444            next: ptr::null(),
18445            image_usage: ImageUsageFlags::default(),
18446        }
18447    }
18448}
18449
18450/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html>
18451#[repr(C)]
18452#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18453pub struct PhysicalDeviceVideoMaintenance1FeaturesKHR {
18454    pub s_type: StructureType,
18455    pub next: *mut c_void,
18456    pub video_maintenance1: Bool32,
18457}
18458
18459impl Default for PhysicalDeviceVideoMaintenance1FeaturesKHR {
18460    #[inline]
18461    fn default() -> Self {
18462        Self {
18463            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR,
18464            next: ptr::null_mut(),
18465            video_maintenance1: Bool32::default(),
18466        }
18467    }
18468}
18469
18470/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html>
18471#[repr(C)]
18472#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18473pub struct PhysicalDeviceVideoMaintenance2FeaturesKHR {
18474    pub s_type: StructureType,
18475    pub next: *mut c_void,
18476    pub video_maintenance2: Bool32,
18477}
18478
18479impl Default for PhysicalDeviceVideoMaintenance2FeaturesKHR {
18480    #[inline]
18481    fn default() -> Self {
18482        Self {
18483            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR,
18484            next: ptr::null_mut(),
18485            video_maintenance2: Bool32::default(),
18486        }
18487    }
18488}
18489
18490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html>
18491#[repr(C)]
18492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18493pub struct PhysicalDeviceVulkan11Features {
18494    pub s_type: StructureType,
18495    pub next: *mut c_void,
18496    pub storage_buffer_16bit_access: Bool32,
18497    pub uniform_and_storage_buffer_16bit_access: Bool32,
18498    pub storage_push_constant16: Bool32,
18499    pub storage_input_output16: Bool32,
18500    pub multiview: Bool32,
18501    pub multiview_geometry_shader: Bool32,
18502    pub multiview_tessellation_shader: Bool32,
18503    pub variable_pointers_storage_buffer: Bool32,
18504    pub variable_pointers: Bool32,
18505    pub protected_memory: Bool32,
18506    pub sampler_ycbcr_conversion: Bool32,
18507    pub shader_draw_parameters: Bool32,
18508}
18509
18510impl Default for PhysicalDeviceVulkan11Features {
18511    #[inline]
18512    fn default() -> Self {
18513        Self {
18514            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
18515            next: ptr::null_mut(),
18516            storage_buffer_16bit_access: Bool32::default(),
18517            uniform_and_storage_buffer_16bit_access: Bool32::default(),
18518            storage_push_constant16: Bool32::default(),
18519            storage_input_output16: Bool32::default(),
18520            multiview: Bool32::default(),
18521            multiview_geometry_shader: Bool32::default(),
18522            multiview_tessellation_shader: Bool32::default(),
18523            variable_pointers_storage_buffer: Bool32::default(),
18524            variable_pointers: Bool32::default(),
18525            protected_memory: Bool32::default(),
18526            sampler_ycbcr_conversion: Bool32::default(),
18527            shader_draw_parameters: Bool32::default(),
18528        }
18529    }
18530}
18531
18532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html>
18533#[repr(C)]
18534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18535pub struct PhysicalDeviceVulkan11Properties {
18536    pub s_type: StructureType,
18537    pub next: *mut c_void,
18538    pub device_uuid: ByteArray<UUID_SIZE>,
18539    pub driver_uuid: ByteArray<UUID_SIZE>,
18540    pub device_luid: ByteArray<LUID_SIZE>,
18541    pub device_node_mask: u32,
18542    pub device_luid_valid: Bool32,
18543    pub subgroup_size: u32,
18544    pub subgroup_supported_stages: ShaderStageFlags,
18545    pub subgroup_supported_operations: SubgroupFeatureFlags,
18546    pub subgroup_quad_operations_in_all_stages: Bool32,
18547    pub point_clipping_behavior: PointClippingBehavior,
18548    pub max_multiview_view_count: u32,
18549    pub max_multiview_instance_index: u32,
18550    pub protected_no_fault: Bool32,
18551    pub max_per_set_descriptors: u32,
18552    pub max_memory_allocation_size: DeviceSize,
18553}
18554
18555impl Default for PhysicalDeviceVulkan11Properties {
18556    #[inline]
18557    fn default() -> Self {
18558        Self {
18559            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
18560            next: ptr::null_mut(),
18561            device_uuid: ByteArray::default(),
18562            driver_uuid: ByteArray::default(),
18563            device_luid: ByteArray::default(),
18564            device_node_mask: u32::default(),
18565            device_luid_valid: Bool32::default(),
18566            subgroup_size: u32::default(),
18567            subgroup_supported_stages: ShaderStageFlags::default(),
18568            subgroup_supported_operations: SubgroupFeatureFlags::default(),
18569            subgroup_quad_operations_in_all_stages: Bool32::default(),
18570            point_clipping_behavior: PointClippingBehavior::default(),
18571            max_multiview_view_count: u32::default(),
18572            max_multiview_instance_index: u32::default(),
18573            protected_no_fault: Bool32::default(),
18574            max_per_set_descriptors: u32::default(),
18575            max_memory_allocation_size: DeviceSize::default(),
18576        }
18577    }
18578}
18579
18580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html>
18581#[repr(C)]
18582#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18583pub struct PhysicalDeviceVulkan12Features {
18584    pub s_type: StructureType,
18585    pub next: *mut c_void,
18586    pub sampler_mirror_clamp_to_edge: Bool32,
18587    pub draw_indirect_count: Bool32,
18588    pub storage_buffer_8bit_access: Bool32,
18589    pub uniform_and_storage_buffer_8bit_access: Bool32,
18590    pub storage_push_constant8: Bool32,
18591    pub shader_buffer_int64_atomics: Bool32,
18592    pub shader_shared_int64_atomics: Bool32,
18593    pub shader_float16: Bool32,
18594    pub shader_int8: Bool32,
18595    pub descriptor_indexing: Bool32,
18596    pub shader_input_attachment_array_dynamic_indexing: Bool32,
18597    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
18598    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
18599    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
18600    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
18601    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
18602    pub shader_storage_image_array_non_uniform_indexing: Bool32,
18603    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
18604    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
18605    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
18606    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
18607    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
18608    pub descriptor_binding_storage_image_update_after_bind: Bool32,
18609    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
18610    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
18611    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
18612    pub descriptor_binding_update_unused_while_pending: Bool32,
18613    pub descriptor_binding_partially_bound: Bool32,
18614    pub descriptor_binding_variable_descriptor_count: Bool32,
18615    pub runtime_descriptor_array: Bool32,
18616    pub sampler_filter_minmax: Bool32,
18617    pub scalar_block_layout: Bool32,
18618    pub imageless_framebuffer: Bool32,
18619    pub uniform_buffer_standard_layout: Bool32,
18620    pub shader_subgroup_extended_types: Bool32,
18621    pub separate_depth_stencil_layouts: Bool32,
18622    pub host_query_reset: Bool32,
18623    pub timeline_semaphore: Bool32,
18624    pub buffer_device_address: Bool32,
18625    pub buffer_device_address_capture_replay: Bool32,
18626    pub buffer_device_address_multi_device: Bool32,
18627    pub vulkan_memory_model: Bool32,
18628    pub vulkan_memory_model_device_scope: Bool32,
18629    pub vulkan_memory_model_availability_visibility_chains: Bool32,
18630    pub shader_output_viewport_index: Bool32,
18631    pub shader_output_layer: Bool32,
18632    pub subgroup_broadcast_dynamic_id: Bool32,
18633}
18634
18635impl Default for PhysicalDeviceVulkan12Features {
18636    #[inline]
18637    fn default() -> Self {
18638        Self {
18639            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
18640            next: ptr::null_mut(),
18641            sampler_mirror_clamp_to_edge: Bool32::default(),
18642            draw_indirect_count: Bool32::default(),
18643            storage_buffer_8bit_access: Bool32::default(),
18644            uniform_and_storage_buffer_8bit_access: Bool32::default(),
18645            storage_push_constant8: Bool32::default(),
18646            shader_buffer_int64_atomics: Bool32::default(),
18647            shader_shared_int64_atomics: Bool32::default(),
18648            shader_float16: Bool32::default(),
18649            shader_int8: Bool32::default(),
18650            descriptor_indexing: Bool32::default(),
18651            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
18652            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
18653            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
18654            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
18655            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
18656            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
18657            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
18658            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
18659            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
18660            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
18661            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
18662            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
18663            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
18664            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
18665            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
18666            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
18667            descriptor_binding_update_unused_while_pending: Bool32::default(),
18668            descriptor_binding_partially_bound: Bool32::default(),
18669            descriptor_binding_variable_descriptor_count: Bool32::default(),
18670            runtime_descriptor_array: Bool32::default(),
18671            sampler_filter_minmax: Bool32::default(),
18672            scalar_block_layout: Bool32::default(),
18673            imageless_framebuffer: Bool32::default(),
18674            uniform_buffer_standard_layout: Bool32::default(),
18675            shader_subgroup_extended_types: Bool32::default(),
18676            separate_depth_stencil_layouts: Bool32::default(),
18677            host_query_reset: Bool32::default(),
18678            timeline_semaphore: Bool32::default(),
18679            buffer_device_address: Bool32::default(),
18680            buffer_device_address_capture_replay: Bool32::default(),
18681            buffer_device_address_multi_device: Bool32::default(),
18682            vulkan_memory_model: Bool32::default(),
18683            vulkan_memory_model_device_scope: Bool32::default(),
18684            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
18685            shader_output_viewport_index: Bool32::default(),
18686            shader_output_layer: Bool32::default(),
18687            subgroup_broadcast_dynamic_id: Bool32::default(),
18688        }
18689    }
18690}
18691
18692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html>
18693#[repr(C)]
18694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18695pub struct PhysicalDeviceVulkan12Properties {
18696    pub s_type: StructureType,
18697    pub next: *mut c_void,
18698    pub driver_id: DriverId,
18699    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
18700    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
18701    pub conformance_version: ConformanceVersion,
18702    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
18703    pub rounding_mode_independence: ShaderFloatControlsIndependence,
18704    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
18705    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
18706    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
18707    pub shader_denorm_preserve_float16: Bool32,
18708    pub shader_denorm_preserve_float32: Bool32,
18709    pub shader_denorm_preserve_float64: Bool32,
18710    pub shader_denorm_flush_to_zero_float16: Bool32,
18711    pub shader_denorm_flush_to_zero_float32: Bool32,
18712    pub shader_denorm_flush_to_zero_float64: Bool32,
18713    pub shader_rounding_mode_rte_float16: Bool32,
18714    pub shader_rounding_mode_rte_float32: Bool32,
18715    pub shader_rounding_mode_rte_float64: Bool32,
18716    pub shader_rounding_mode_rtz_float16: Bool32,
18717    pub shader_rounding_mode_rtz_float32: Bool32,
18718    pub shader_rounding_mode_rtz_float64: Bool32,
18719    pub max_update_after_bind_descriptors_in_all_pools: u32,
18720    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
18721    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
18722    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
18723    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
18724    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
18725    pub robust_buffer_access_update_after_bind: Bool32,
18726    pub quad_divergent_implicit_lod: Bool32,
18727    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
18728    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
18729    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
18730    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
18731    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
18732    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
18733    pub max_per_stage_update_after_bind_resources: u32,
18734    pub max_descriptor_set_update_after_bind_samplers: u32,
18735    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
18736    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
18737    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
18738    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
18739    pub max_descriptor_set_update_after_bind_sampled_images: u32,
18740    pub max_descriptor_set_update_after_bind_storage_images: u32,
18741    pub max_descriptor_set_update_after_bind_input_attachments: u32,
18742    pub supported_depth_resolve_modes: ResolveModeFlags,
18743    pub supported_stencil_resolve_modes: ResolveModeFlags,
18744    pub independent_resolve_none: Bool32,
18745    pub independent_resolve: Bool32,
18746    pub filter_minmax_single_component_formats: Bool32,
18747    pub filter_minmax_image_component_mapping: Bool32,
18748    pub max_timeline_semaphore_value_difference: u64,
18749    pub framebuffer_integer_color_sample_counts: SampleCountFlags,
18750}
18751
18752impl Default for PhysicalDeviceVulkan12Properties {
18753    #[inline]
18754    fn default() -> Self {
18755        Self {
18756            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
18757            next: ptr::null_mut(),
18758            driver_id: DriverId::default(),
18759            driver_name: StringArray::default(),
18760            driver_info: StringArray::default(),
18761            conformance_version: ConformanceVersion::default(),
18762            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
18763            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
18764            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
18765            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
18766            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
18767            shader_denorm_preserve_float16: Bool32::default(),
18768            shader_denorm_preserve_float32: Bool32::default(),
18769            shader_denorm_preserve_float64: Bool32::default(),
18770            shader_denorm_flush_to_zero_float16: Bool32::default(),
18771            shader_denorm_flush_to_zero_float32: Bool32::default(),
18772            shader_denorm_flush_to_zero_float64: Bool32::default(),
18773            shader_rounding_mode_rte_float16: Bool32::default(),
18774            shader_rounding_mode_rte_float32: Bool32::default(),
18775            shader_rounding_mode_rte_float64: Bool32::default(),
18776            shader_rounding_mode_rtz_float16: Bool32::default(),
18777            shader_rounding_mode_rtz_float32: Bool32::default(),
18778            shader_rounding_mode_rtz_float64: Bool32::default(),
18779            max_update_after_bind_descriptors_in_all_pools: u32::default(),
18780            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
18781            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
18782            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
18783            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
18784            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
18785            robust_buffer_access_update_after_bind: Bool32::default(),
18786            quad_divergent_implicit_lod: Bool32::default(),
18787            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
18788            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
18789            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
18790            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
18791            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
18792            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
18793            max_per_stage_update_after_bind_resources: u32::default(),
18794            max_descriptor_set_update_after_bind_samplers: u32::default(),
18795            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
18796            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
18797            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
18798            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
18799            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
18800            max_descriptor_set_update_after_bind_storage_images: u32::default(),
18801            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
18802            supported_depth_resolve_modes: ResolveModeFlags::default(),
18803            supported_stencil_resolve_modes: ResolveModeFlags::default(),
18804            independent_resolve_none: Bool32::default(),
18805            independent_resolve: Bool32::default(),
18806            filter_minmax_single_component_formats: Bool32::default(),
18807            filter_minmax_image_component_mapping: Bool32::default(),
18808            max_timeline_semaphore_value_difference: u64::default(),
18809            framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
18810        }
18811    }
18812}
18813
18814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html>
18815#[repr(C)]
18816#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18817pub struct PhysicalDeviceVulkan13Features {
18818    pub s_type: StructureType,
18819    pub next: *mut c_void,
18820    pub robust_image_access: Bool32,
18821    pub inline_uniform_block: Bool32,
18822    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
18823    pub pipeline_creation_cache_control: Bool32,
18824    pub private_data: Bool32,
18825    pub shader_demote_to_helper_invocation: Bool32,
18826    pub shader_terminate_invocation: Bool32,
18827    pub subgroup_size_control: Bool32,
18828    pub compute_full_subgroups: Bool32,
18829    pub synchronization2: Bool32,
18830    pub texture_compression_astc_hdr: Bool32,
18831    pub shader_zero_initialize_workgroup_memory: Bool32,
18832    pub dynamic_rendering: Bool32,
18833    pub shader_integer_dot_product: Bool32,
18834    pub maintenance4: Bool32,
18835}
18836
18837impl Default for PhysicalDeviceVulkan13Features {
18838    #[inline]
18839    fn default() -> Self {
18840        Self {
18841            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
18842            next: ptr::null_mut(),
18843            robust_image_access: Bool32::default(),
18844            inline_uniform_block: Bool32::default(),
18845            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
18846            pipeline_creation_cache_control: Bool32::default(),
18847            private_data: Bool32::default(),
18848            shader_demote_to_helper_invocation: Bool32::default(),
18849            shader_terminate_invocation: Bool32::default(),
18850            subgroup_size_control: Bool32::default(),
18851            compute_full_subgroups: Bool32::default(),
18852            synchronization2: Bool32::default(),
18853            texture_compression_astc_hdr: Bool32::default(),
18854            shader_zero_initialize_workgroup_memory: Bool32::default(),
18855            dynamic_rendering: Bool32::default(),
18856            shader_integer_dot_product: Bool32::default(),
18857            maintenance4: Bool32::default(),
18858        }
18859    }
18860}
18861
18862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html>
18863#[repr(C)]
18864#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18865pub struct PhysicalDeviceVulkan13Properties {
18866    pub s_type: StructureType,
18867    pub next: *mut c_void,
18868    pub min_subgroup_size: u32,
18869    pub max_subgroup_size: u32,
18870    pub max_compute_workgroup_subgroups: u32,
18871    pub required_subgroup_size_stages: ShaderStageFlags,
18872    pub max_inline_uniform_block_size: u32,
18873    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
18874    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
18875    pub max_descriptor_set_inline_uniform_blocks: u32,
18876    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
18877    pub max_inline_uniform_total_size: u32,
18878    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
18879    pub integer_dot_product_8bit_signed_accelerated: Bool32,
18880    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
18881    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
18882    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
18883    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
18884    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
18885    pub integer_dot_product_16bit_signed_accelerated: Bool32,
18886    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
18887    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
18888    pub integer_dot_product_32bit_signed_accelerated: Bool32,
18889    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
18890    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
18891    pub integer_dot_product_64bit_signed_accelerated: Bool32,
18892    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
18893    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
18894    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
18895    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
18896    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
18897    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
18898    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
18899        Bool32,
18900    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
18901    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
18902    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
18903    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
18904    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
18905    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
18906    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
18907    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
18908    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
18909    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
18910    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
18911    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
18912    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
18913    pub max_buffer_size: DeviceSize,
18914}
18915
18916impl Default for PhysicalDeviceVulkan13Properties {
18917    #[inline]
18918    fn default() -> Self {
18919        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() }
18920    }
18921}
18922
18923/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html>
18924#[repr(C)]
18925#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18926pub struct PhysicalDeviceVulkan14Features {
18927    pub s_type: StructureType,
18928    pub next: *mut c_void,
18929    pub global_priority_query: Bool32,
18930    pub shader_subgroup_rotate: Bool32,
18931    pub shader_subgroup_rotate_clustered: Bool32,
18932    pub shader_float_controls2: Bool32,
18933    pub shader_expect_assume: Bool32,
18934    pub rectangular_lines: Bool32,
18935    pub bresenham_lines: Bool32,
18936    pub smooth_lines: Bool32,
18937    pub stippled_rectangular_lines: Bool32,
18938    pub stippled_bresenham_lines: Bool32,
18939    pub stippled_smooth_lines: Bool32,
18940    pub vertex_attribute_instance_rate_divisor: Bool32,
18941    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
18942    pub index_type_uint8: Bool32,
18943    pub dynamic_rendering_local_read: Bool32,
18944    pub maintenance5: Bool32,
18945    pub maintenance6: Bool32,
18946    pub pipeline_protected_access: Bool32,
18947    pub pipeline_robustness: Bool32,
18948    pub host_image_copy: Bool32,
18949    pub push_descriptor: Bool32,
18950}
18951
18952impl Default for PhysicalDeviceVulkan14Features {
18953    #[inline]
18954    fn default() -> Self {
18955        Self {
18956            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES,
18957            next: ptr::null_mut(),
18958            global_priority_query: Bool32::default(),
18959            shader_subgroup_rotate: Bool32::default(),
18960            shader_subgroup_rotate_clustered: Bool32::default(),
18961            shader_float_controls2: Bool32::default(),
18962            shader_expect_assume: Bool32::default(),
18963            rectangular_lines: Bool32::default(),
18964            bresenham_lines: Bool32::default(),
18965            smooth_lines: Bool32::default(),
18966            stippled_rectangular_lines: Bool32::default(),
18967            stippled_bresenham_lines: Bool32::default(),
18968            stippled_smooth_lines: Bool32::default(),
18969            vertex_attribute_instance_rate_divisor: Bool32::default(),
18970            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
18971            index_type_uint8: Bool32::default(),
18972            dynamic_rendering_local_read: Bool32::default(),
18973            maintenance5: Bool32::default(),
18974            maintenance6: Bool32::default(),
18975            pipeline_protected_access: Bool32::default(),
18976            pipeline_robustness: Bool32::default(),
18977            host_image_copy: Bool32::default(),
18978            push_descriptor: Bool32::default(),
18979        }
18980    }
18981}
18982
18983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html>
18984#[repr(C)]
18985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18986pub struct PhysicalDeviceVulkan14Properties {
18987    pub s_type: StructureType,
18988    pub next: *mut c_void,
18989    pub line_sub_pixel_precision_bits: u32,
18990    pub max_vertex_attrib_divisor: u32,
18991    pub supports_non_zero_first_instance: Bool32,
18992    pub max_push_descriptors: u32,
18993    pub dynamic_rendering_local_read_depth_stencil_attachments: Bool32,
18994    pub dynamic_rendering_local_read_multisampled_attachments: Bool32,
18995    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
18996    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
18997    pub depth_stencil_swizzle_one_support: Bool32,
18998    pub polygon_mode_point_size: Bool32,
18999    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
19000    pub non_strict_wide_lines_use_parallelogram: Bool32,
19001    pub block_texel_view_compatible_multiple_layers: Bool32,
19002    pub max_combined_image_sampler_descriptor_count: u32,
19003    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
19004    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
19005    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
19006    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
19007    pub default_robustness_images: PipelineRobustnessImageBehavior,
19008    pub copy_src_layout_count: u32,
19009    pub copy_src_layouts: *mut ImageLayout,
19010    pub copy_dst_layout_count: u32,
19011    pub copy_dst_layouts: *mut ImageLayout,
19012    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
19013    pub identical_memory_type_requirements: Bool32,
19014}
19015
19016impl Default for PhysicalDeviceVulkan14Properties {
19017    #[inline]
19018    fn default() -> Self {
19019        Self {
19020            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES,
19021            next: ptr::null_mut(),
19022            line_sub_pixel_precision_bits: u32::default(),
19023            max_vertex_attrib_divisor: u32::default(),
19024            supports_non_zero_first_instance: Bool32::default(),
19025            max_push_descriptors: u32::default(),
19026            dynamic_rendering_local_read_depth_stencil_attachments: Bool32::default(),
19027            dynamic_rendering_local_read_multisampled_attachments: Bool32::default(),
19028            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
19029            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
19030            depth_stencil_swizzle_one_support: Bool32::default(),
19031            polygon_mode_point_size: Bool32::default(),
19032            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
19033            non_strict_wide_lines_use_parallelogram: Bool32::default(),
19034            block_texel_view_compatible_multiple_layers: Bool32::default(),
19035            max_combined_image_sampler_descriptor_count: u32::default(),
19036            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
19037            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
19038            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
19039            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
19040            default_robustness_images: PipelineRobustnessImageBehavior::default(),
19041            copy_src_layout_count: u32::default(),
19042            copy_src_layouts: ptr::null_mut(),
19043            copy_dst_layout_count: u32::default(),
19044            copy_dst_layouts: ptr::null_mut(),
19045            optimal_tiling_layout_uuid: ByteArray::default(),
19046            identical_memory_type_requirements: Bool32::default(),
19047        }
19048    }
19049}
19050
19051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>
19052#[repr(C)]
19053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19054pub struct PhysicalDeviceVulkanMemoryModelFeatures {
19055    pub s_type: StructureType,
19056    pub next: *mut c_void,
19057    pub vulkan_memory_model: Bool32,
19058    pub vulkan_memory_model_device_scope: Bool32,
19059    pub vulkan_memory_model_availability_visibility_chains: Bool32,
19060}
19061
19062impl Default for PhysicalDeviceVulkanMemoryModelFeatures {
19063    #[inline]
19064    fn default() -> Self {
19065        Self {
19066            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
19067            next: ptr::null_mut(),
19068            vulkan_memory_model: Bool32::default(),
19069            vulkan_memory_model_device_scope: Bool32::default(),
19070            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
19071        }
19072    }
19073}
19074
19075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>
19076#[repr(C)]
19077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19078pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
19079    pub s_type: StructureType,
19080    pub next: *mut c_void,
19081    pub workgroup_memory_explicit_layout: Bool32,
19082    pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
19083    pub workgroup_memory_explicit_layout_8bit_access: Bool32,
19084    pub workgroup_memory_explicit_layout_16bit_access: Bool32,
19085}
19086
19087impl Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
19088    #[inline]
19089    fn default() -> Self {
19090        Self {
19091            s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
19092            next: ptr::null_mut(),
19093            workgroup_memory_explicit_layout: Bool32::default(),
19094            workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
19095            workgroup_memory_explicit_layout_8bit_access: Bool32::default(),
19096            workgroup_memory_explicit_layout_16bit_access: Bool32::default(),
19097        }
19098    }
19099}
19100
19101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>
19102#[repr(C)]
19103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19104pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
19105    pub s_type: StructureType,
19106    pub next: *mut c_void,
19107    pub ycbcr2plane444_formats: Bool32,
19108}
19109
19110impl Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
19111    #[inline]
19112    fn default() -> Self {
19113        Self {
19114            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
19115            next: ptr::null_mut(),
19116            ycbcr2plane444_formats: Bool32::default(),
19117        }
19118    }
19119}
19120
19121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html>
19122#[repr(C)]
19123#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19124pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOM {
19125    pub s_type: StructureType,
19126    pub next: *mut c_void,
19127    pub ycbcr_degamma: Bool32,
19128}
19129
19130impl Default for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
19131    #[inline]
19132    fn default() -> Self {
19133        Self {
19134            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM,
19135            next: ptr::null_mut(),
19136            ycbcr_degamma: Bool32::default(),
19137        }
19138    }
19139}
19140
19141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>
19142#[repr(C)]
19143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19144pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
19145    pub s_type: StructureType,
19146    pub next: *mut c_void,
19147    pub ycbcr_image_arrays: Bool32,
19148}
19149
19150impl Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
19151    #[inline]
19152    fn default() -> Self {
19153        Self {
19154            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
19155            next: ptr::null_mut(),
19156            ycbcr_image_arrays: Bool32::default(),
19157        }
19158    }
19159}
19160
19161/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html>
19162#[repr(C)]
19163#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19164pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
19165    pub s_type: StructureType,
19166    pub next: *mut c_void,
19167    pub shader_zero_initialize_workgroup_memory: Bool32,
19168}
19169
19170impl Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
19171    #[inline]
19172    fn default() -> Self {
19173        Self {
19174            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
19175            next: ptr::null_mut(),
19176            shader_zero_initialize_workgroup_memory: Bool32::default(),
19177        }
19178    }
19179}
19180
19181/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html>
19182#[repr(C)]
19183#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19184pub struct PipelineBinaryCreateInfoKHR {
19185    pub s_type: StructureType,
19186    pub next: *const c_void,
19187    pub keys_and_data_info: *const PipelineBinaryKeysAndDataKHR,
19188    pub pipeline: Pipeline,
19189    pub pipeline_create_info: *const PipelineCreateInfoKHR,
19190}
19191
19192impl Default for PipelineBinaryCreateInfoKHR {
19193    #[inline]
19194    fn default() -> Self {
19195        Self {
19196            s_type: StructureType::PIPELINE_BINARY_CREATE_INFO_KHR,
19197            next: ptr::null(),
19198            keys_and_data_info: ptr::null(),
19199            pipeline: Pipeline::default(),
19200            pipeline_create_info: ptr::null(),
19201        }
19202    }
19203}
19204
19205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html>
19206#[repr(C)]
19207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19208pub struct PipelineBinaryDataInfoKHR {
19209    pub s_type: StructureType,
19210    pub next: *mut c_void,
19211    pub pipeline_binary: PipelineBinaryKHR,
19212}
19213
19214impl Default for PipelineBinaryDataInfoKHR {
19215    #[inline]
19216    fn default() -> Self {
19217        Self {
19218            s_type: StructureType::PIPELINE_BINARY_DATA_INFO_KHR,
19219            next: ptr::null_mut(),
19220            pipeline_binary: PipelineBinaryKHR::default(),
19221        }
19222    }
19223}
19224
19225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html>
19226#[repr(C)]
19227#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19228pub struct PipelineBinaryDataKHR {
19229    pub data_size: usize,
19230    pub data: *mut c_void,
19231}
19232
19233impl Default for PipelineBinaryDataKHR {
19234    #[inline]
19235    fn default() -> Self {
19236        Self {
19237            data_size: usize::default(),
19238            data: ptr::null_mut(),
19239        }
19240    }
19241}
19242
19243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html>
19244#[repr(C)]
19245#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19246pub struct PipelineBinaryHandlesInfoKHR {
19247    pub s_type: StructureType,
19248    pub next: *const c_void,
19249    pub pipeline_binary_count: u32,
19250    pub pipeline_binaries: *mut PipelineBinaryKHR,
19251}
19252
19253impl Default for PipelineBinaryHandlesInfoKHR {
19254    #[inline]
19255    fn default() -> Self {
19256        Self {
19257            s_type: StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR,
19258            next: ptr::null(),
19259            pipeline_binary_count: u32::default(),
19260            pipeline_binaries: ptr::null_mut(),
19261        }
19262    }
19263}
19264
19265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html>
19266#[repr(C)]
19267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19268pub struct PipelineBinaryInfoKHR {
19269    pub s_type: StructureType,
19270    pub next: *const c_void,
19271    pub binary_count: u32,
19272    pub pipeline_binaries: *const PipelineBinaryKHR,
19273}
19274
19275impl Default for PipelineBinaryInfoKHR {
19276    #[inline]
19277    fn default() -> Self {
19278        Self {
19279            s_type: StructureType::PIPELINE_BINARY_INFO_KHR,
19280            next: ptr::null(),
19281            binary_count: u32::default(),
19282            pipeline_binaries: ptr::null(),
19283        }
19284    }
19285}
19286
19287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html>
19288#[repr(C)]
19289#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19290pub struct PipelineBinaryKeyKHR {
19291    pub s_type: StructureType,
19292    pub next: *mut c_void,
19293    pub key_size: u32,
19294    pub key: ByteArray<MAX_PIPELINE_BINARY_KEY_SIZE_KHR>,
19295}
19296
19297impl Default for PipelineBinaryKeyKHR {
19298    #[inline]
19299    fn default() -> Self {
19300        Self {
19301            s_type: StructureType::PIPELINE_BINARY_KEY_KHR,
19302            next: ptr::null_mut(),
19303            key_size: u32::default(),
19304            key: ByteArray::default(),
19305        }
19306    }
19307}
19308
19309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html>
19310#[repr(C)]
19311#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19312pub struct PipelineBinaryKeysAndDataKHR {
19313    pub binary_count: u32,
19314    pub pipeline_binary_keys: *const PipelineBinaryKeyKHR,
19315    pub pipeline_binary_data: *const PipelineBinaryDataKHR,
19316}
19317
19318impl Default for PipelineBinaryKeysAndDataKHR {
19319    #[inline]
19320    fn default() -> Self {
19321        Self {
19322            binary_count: u32::default(),
19323            pipeline_binary_keys: ptr::null(),
19324            pipeline_binary_data: ptr::null(),
19325        }
19326    }
19327}
19328
19329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html>
19330#[repr(C)]
19331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19332pub struct PipelineCacheCreateInfo {
19333    pub s_type: StructureType,
19334    pub next: *const c_void,
19335    pub flags: PipelineCacheCreateFlags,
19336    pub initial_data_size: usize,
19337    pub initial_data: *const c_void,
19338}
19339
19340impl Default for PipelineCacheCreateInfo {
19341    #[inline]
19342    fn default() -> Self {
19343        Self {
19344            s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
19345            next: ptr::null(),
19346            flags: PipelineCacheCreateFlags::default(),
19347            initial_data_size: usize::default(),
19348            initial_data: ptr::null(),
19349        }
19350    }
19351}
19352
19353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html>
19354#[repr(C)]
19355#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
19356pub struct PipelineCacheHeaderVersionOne {
19357    pub header_size: u32,
19358    pub header_version: PipelineCacheHeaderVersion,
19359    pub vendor_id: u32,
19360    pub device_id: u32,
19361    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
19362}
19363
19364/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>
19365#[repr(C)]
19366#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19367pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
19368    pub s_type: StructureType,
19369    pub next: *const c_void,
19370    pub src_premultiplied: Bool32,
19371    pub dst_premultiplied: Bool32,
19372    pub blend_overlap: BlendOverlapEXT,
19373}
19374
19375impl Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
19376    #[inline]
19377    fn default() -> Self {
19378        Self {
19379            s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
19380            next: ptr::null(),
19381            src_premultiplied: Bool32::default(),
19382            dst_premultiplied: Bool32::default(),
19383            blend_overlap: BlendOverlapEXT::default(),
19384        }
19385    }
19386}
19387
19388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html>
19389#[repr(C)]
19390#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
19391pub struct PipelineColorBlendAttachmentState {
19392    pub blend_enable: Bool32,
19393    pub src_color_blend_factor: BlendFactor,
19394    pub dst_color_blend_factor: BlendFactor,
19395    pub color_blend_op: BlendOp,
19396    pub src_alpha_blend_factor: BlendFactor,
19397    pub dst_alpha_blend_factor: BlendFactor,
19398    pub alpha_blend_op: BlendOp,
19399    pub color_write_mask: ColorComponentFlags,
19400}
19401
19402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html>
19403#[repr(C)]
19404#[derive(Copy, Clone, Debug, PartialEq)]
19405pub struct PipelineColorBlendStateCreateInfo {
19406    pub s_type: StructureType,
19407    pub next: *const c_void,
19408    pub flags: PipelineColorBlendStateCreateFlags,
19409    pub logic_op_enable: Bool32,
19410    pub logic_op: LogicOp,
19411    pub attachment_count: u32,
19412    pub attachments: *const PipelineColorBlendAttachmentState,
19413    pub blend_constants: [f32; 4],
19414}
19415
19416impl Default for PipelineColorBlendStateCreateInfo {
19417    #[inline]
19418    fn default() -> Self {
19419        Self {
19420            s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
19421            next: ptr::null(),
19422            flags: PipelineColorBlendStateCreateFlags::default(),
19423            logic_op_enable: Bool32::default(),
19424            logic_op: LogicOp::default(),
19425            attachment_count: u32::default(),
19426            attachments: ptr::null(),
19427            blend_constants: [f32::default(); 4],
19428        }
19429    }
19430}
19431
19432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html>
19433#[repr(C)]
19434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19435pub struct PipelineColorWriteCreateInfoEXT {
19436    pub s_type: StructureType,
19437    pub next: *const c_void,
19438    pub attachment_count: u32,
19439    pub color_write_enables: *const Bool32,
19440}
19441
19442impl Default for PipelineColorWriteCreateInfoEXT {
19443    #[inline]
19444    fn default() -> Self {
19445        Self {
19446            s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
19447            next: ptr::null(),
19448            attachment_count: u32::default(),
19449            color_write_enables: ptr::null(),
19450        }
19451    }
19452}
19453
19454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html>
19455#[repr(C)]
19456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19457pub struct PipelineCompilerControlCreateInfoAMD {
19458    pub s_type: StructureType,
19459    pub next: *const c_void,
19460    pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
19461}
19462
19463impl Default for PipelineCompilerControlCreateInfoAMD {
19464    #[inline]
19465    fn default() -> Self {
19466        Self {
19467            s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
19468            next: ptr::null(),
19469            compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
19470        }
19471    }
19472}
19473
19474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>
19475#[repr(C)]
19476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19477pub struct PipelineCoverageModulationStateCreateInfoNV {
19478    pub s_type: StructureType,
19479    pub next: *const c_void,
19480    pub flags: PipelineCoverageModulationStateCreateFlagsNV,
19481    pub coverage_modulation_mode: CoverageModulationModeNV,
19482    pub coverage_modulation_table_enable: Bool32,
19483    pub coverage_modulation_table_count: u32,
19484    pub coverage_modulation_table: *const f32,
19485}
19486
19487impl Default for PipelineCoverageModulationStateCreateInfoNV {
19488    #[inline]
19489    fn default() -> Self {
19490        Self {
19491            s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
19492            next: ptr::null(),
19493            flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
19494            coverage_modulation_mode: CoverageModulationModeNV::default(),
19495            coverage_modulation_table_enable: Bool32::default(),
19496            coverage_modulation_table_count: u32::default(),
19497            coverage_modulation_table: ptr::null(),
19498        }
19499    }
19500}
19501
19502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>
19503#[repr(C)]
19504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19505pub struct PipelineCoverageReductionStateCreateInfoNV {
19506    pub s_type: StructureType,
19507    pub next: *const c_void,
19508    pub flags: PipelineCoverageReductionStateCreateFlagsNV,
19509    pub coverage_reduction_mode: CoverageReductionModeNV,
19510}
19511
19512impl Default for PipelineCoverageReductionStateCreateInfoNV {
19513    #[inline]
19514    fn default() -> Self {
19515        Self {
19516            s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
19517            next: ptr::null(),
19518            flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
19519            coverage_reduction_mode: CoverageReductionModeNV::default(),
19520        }
19521    }
19522}
19523
19524/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>
19525#[repr(C)]
19526#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19527pub struct PipelineCoverageToColorStateCreateInfoNV {
19528    pub s_type: StructureType,
19529    pub next: *const c_void,
19530    pub flags: PipelineCoverageToColorStateCreateFlagsNV,
19531    pub coverage_to_color_enable: Bool32,
19532    pub coverage_to_color_location: u32,
19533}
19534
19535impl Default for PipelineCoverageToColorStateCreateInfoNV {
19536    #[inline]
19537    fn default() -> Self {
19538        Self {
19539            s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
19540            next: ptr::null(),
19541            flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
19542            coverage_to_color_enable: Bool32::default(),
19543            coverage_to_color_location: u32::default(),
19544        }
19545    }
19546}
19547
19548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html>
19549#[repr(C)]
19550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19551pub struct PipelineCreateFlags2CreateInfo {
19552    pub s_type: StructureType,
19553    pub next: *const c_void,
19554    pub flags: PipelineCreateFlags2,
19555}
19556
19557impl Default for PipelineCreateFlags2CreateInfo {
19558    #[inline]
19559    fn default() -> Self {
19560        Self {
19561            s_type: StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO,
19562            next: ptr::null(),
19563            flags: PipelineCreateFlags2::default(),
19564        }
19565    }
19566}
19567
19568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html>
19569#[repr(C)]
19570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19571pub struct PipelineCreateInfoKHR {
19572    pub s_type: StructureType,
19573    pub next: *mut c_void,
19574}
19575
19576impl Default for PipelineCreateInfoKHR {
19577    #[inline]
19578    fn default() -> Self {
19579        Self {
19580            s_type: StructureType::PIPELINE_CREATE_INFO_KHR,
19581            next: ptr::null_mut(),
19582        }
19583    }
19584}
19585
19586/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html>
19587#[repr(C)]
19588#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
19589pub struct PipelineCreationFeedback {
19590    pub flags: PipelineCreationFeedbackFlags,
19591    pub duration: u64,
19592}
19593
19594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html>
19595#[repr(C)]
19596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19597pub struct PipelineCreationFeedbackCreateInfo {
19598    pub s_type: StructureType,
19599    pub next: *const c_void,
19600    pub pipeline_creation_feedback: *mut PipelineCreationFeedback,
19601    pub pipeline_stage_creation_feedback_count: u32,
19602    pub pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedback,
19603}
19604
19605impl Default for PipelineCreationFeedbackCreateInfo {
19606    #[inline]
19607    fn default() -> Self {
19608        Self {
19609            s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
19610            next: ptr::null(),
19611            pipeline_creation_feedback: ptr::null_mut(),
19612            pipeline_stage_creation_feedback_count: u32::default(),
19613            pipeline_stage_creation_feedbacks: ptr::null_mut(),
19614        }
19615    }
19616}
19617
19618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html>
19619#[repr(C)]
19620#[derive(Copy, Clone, Debug, PartialEq)]
19621pub struct PipelineDepthStencilStateCreateInfo {
19622    pub s_type: StructureType,
19623    pub next: *const c_void,
19624    pub flags: PipelineDepthStencilStateCreateFlags,
19625    pub depth_test_enable: Bool32,
19626    pub depth_write_enable: Bool32,
19627    pub depth_compare_op: CompareOp,
19628    pub depth_bounds_test_enable: Bool32,
19629    pub stencil_test_enable: Bool32,
19630    pub front: StencilOpState,
19631    pub back: StencilOpState,
19632    pub min_depth_bounds: f32,
19633    pub max_depth_bounds: f32,
19634}
19635
19636impl Default for PipelineDepthStencilStateCreateInfo {
19637    #[inline]
19638    fn default() -> Self {
19639        Self {
19640            s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
19641            next: ptr::null(),
19642            flags: PipelineDepthStencilStateCreateFlags::default(),
19643            depth_test_enable: Bool32::default(),
19644            depth_write_enable: Bool32::default(),
19645            depth_compare_op: CompareOp::default(),
19646            depth_bounds_test_enable: Bool32::default(),
19647            stencil_test_enable: Bool32::default(),
19648            front: StencilOpState::default(),
19649            back: StencilOpState::default(),
19650            min_depth_bounds: f32::default(),
19651            max_depth_bounds: f32::default(),
19652        }
19653    }
19654}
19655
19656/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>
19657#[repr(C)]
19658#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19659pub struct PipelineDiscardRectangleStateCreateInfoEXT {
19660    pub s_type: StructureType,
19661    pub next: *const c_void,
19662    pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
19663    pub discard_rectangle_mode: DiscardRectangleModeEXT,
19664    pub discard_rectangle_count: u32,
19665    pub discard_rectangles: *const Rect2D,
19666}
19667
19668impl Default for PipelineDiscardRectangleStateCreateInfoEXT {
19669    #[inline]
19670    fn default() -> Self {
19671        Self {
19672            s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
19673            next: ptr::null(),
19674            flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
19675            discard_rectangle_mode: DiscardRectangleModeEXT::default(),
19676            discard_rectangle_count: u32::default(),
19677            discard_rectangles: ptr::null(),
19678        }
19679    }
19680}
19681
19682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html>
19683#[repr(C)]
19684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19685pub struct PipelineDynamicStateCreateInfo {
19686    pub s_type: StructureType,
19687    pub next: *const c_void,
19688    pub flags: PipelineDynamicStateCreateFlags,
19689    pub dynamic_state_count: u32,
19690    pub dynamic_states: *const DynamicState,
19691}
19692
19693impl Default for PipelineDynamicStateCreateInfo {
19694    #[inline]
19695    fn default() -> Self {
19696        Self {
19697            s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
19698            next: ptr::null(),
19699            flags: PipelineDynamicStateCreateFlags::default(),
19700            dynamic_state_count: u32::default(),
19701            dynamic_states: ptr::null(),
19702        }
19703    }
19704}
19705
19706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html>
19707#[repr(C)]
19708#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19709pub struct PipelineExecutableInfoKHR {
19710    pub s_type: StructureType,
19711    pub next: *const c_void,
19712    pub pipeline: Pipeline,
19713    pub executable_index: u32,
19714}
19715
19716impl Default for PipelineExecutableInfoKHR {
19717    #[inline]
19718    fn default() -> Self {
19719        Self {
19720            s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
19721            next: ptr::null(),
19722            pipeline: Pipeline::default(),
19723            executable_index: u32::default(),
19724        }
19725    }
19726}
19727
19728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html>
19729#[repr(C)]
19730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19731pub struct PipelineExecutableInternalRepresentationKHR {
19732    pub s_type: StructureType,
19733    pub next: *mut c_void,
19734    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
19735    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
19736    pub is_text: Bool32,
19737    pub data_size: usize,
19738    pub data: *mut c_void,
19739}
19740
19741impl Default for PipelineExecutableInternalRepresentationKHR {
19742    #[inline]
19743    fn default() -> Self {
19744        Self {
19745            s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
19746            next: ptr::null_mut(),
19747            name: StringArray::default(),
19748            description: StringArray::default(),
19749            is_text: Bool32::default(),
19750            data_size: usize::default(),
19751            data: ptr::null_mut(),
19752        }
19753    }
19754}
19755
19756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html>
19757#[repr(C)]
19758#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19759pub struct PipelineExecutablePropertiesKHR {
19760    pub s_type: StructureType,
19761    pub next: *mut c_void,
19762    pub stages: ShaderStageFlags,
19763    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
19764    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
19765    pub subgroup_size: u32,
19766}
19767
19768impl Default for PipelineExecutablePropertiesKHR {
19769    #[inline]
19770    fn default() -> Self {
19771        Self {
19772            s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
19773            next: ptr::null_mut(),
19774            stages: ShaderStageFlags::default(),
19775            name: StringArray::default(),
19776            description: StringArray::default(),
19777            subgroup_size: u32::default(),
19778        }
19779    }
19780}
19781
19782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html>
19783#[repr(C)]
19784#[derive(Copy, Clone, Debug)]
19785pub struct PipelineExecutableStatisticKHR {
19786    pub s_type: StructureType,
19787    pub next: *mut c_void,
19788    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
19789    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
19790    pub format: PipelineExecutableStatisticFormatKHR,
19791    pub value: PipelineExecutableStatisticValueKHR,
19792}
19793
19794impl Default for PipelineExecutableStatisticKHR {
19795    #[inline]
19796    fn default() -> Self {
19797        Self {
19798            s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
19799            next: ptr::null_mut(),
19800            name: StringArray::default(),
19801            description: StringArray::default(),
19802            format: PipelineExecutableStatisticFormatKHR::default(),
19803            value: PipelineExecutableStatisticValueKHR::default(),
19804        }
19805    }
19806}
19807
19808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>
19809#[repr(C)]
19810#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19811pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
19812    pub s_type: StructureType,
19813    pub next: *const c_void,
19814    pub shading_rate_type: FragmentShadingRateTypeNV,
19815    pub shading_rate: FragmentShadingRateNV,
19816    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
19817}
19818
19819impl Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
19820    #[inline]
19821    fn default() -> Self {
19822        Self {
19823            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
19824            next: ptr::null(),
19825            shading_rate_type: FragmentShadingRateTypeNV::default(),
19826            shading_rate: FragmentShadingRateNV::default(),
19827            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
19828        }
19829    }
19830}
19831
19832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>
19833#[repr(C)]
19834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19835pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
19836    pub s_type: StructureType,
19837    pub next: *const c_void,
19838    pub fragment_size: Extent2D,
19839    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
19840}
19841
19842impl Default for PipelineFragmentShadingRateStateCreateInfoKHR {
19843    #[inline]
19844    fn default() -> Self {
19845        Self {
19846            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
19847            next: ptr::null(),
19848            fragment_size: Extent2D::default(),
19849            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
19850        }
19851    }
19852}
19853
19854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html>
19855#[repr(C)]
19856#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19857pub struct PipelineIndirectDeviceAddressInfoNV {
19858    pub s_type: StructureType,
19859    pub next: *const c_void,
19860    pub pipeline_bind_point: PipelineBindPoint,
19861    pub pipeline: Pipeline,
19862}
19863
19864impl Default for PipelineIndirectDeviceAddressInfoNV {
19865    #[inline]
19866    fn default() -> Self {
19867        Self {
19868            s_type: StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV,
19869            next: ptr::null(),
19870            pipeline_bind_point: PipelineBindPoint::default(),
19871            pipeline: Pipeline::default(),
19872        }
19873    }
19874}
19875
19876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html>
19877#[repr(C)]
19878#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19879pub struct PipelineInfoKHR {
19880    pub s_type: StructureType,
19881    pub next: *const c_void,
19882    pub pipeline: Pipeline,
19883}
19884
19885impl Default for PipelineInfoKHR {
19886    #[inline]
19887    fn default() -> Self {
19888        Self {
19889            s_type: StructureType::PIPELINE_INFO_KHR,
19890            next: ptr::null(),
19891            pipeline: Pipeline::default(),
19892        }
19893    }
19894}
19895
19896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html>
19897#[repr(C)]
19898#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19899pub struct PipelineInputAssemblyStateCreateInfo {
19900    pub s_type: StructureType,
19901    pub next: *const c_void,
19902    pub flags: PipelineInputAssemblyStateCreateFlags,
19903    pub topology: PrimitiveTopology,
19904    pub primitive_restart_enable: Bool32,
19905}
19906
19907impl Default for PipelineInputAssemblyStateCreateInfo {
19908    #[inline]
19909    fn default() -> Self {
19910        Self {
19911            s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
19912            next: ptr::null(),
19913            flags: PipelineInputAssemblyStateCreateFlags::default(),
19914            topology: PrimitiveTopology::default(),
19915            primitive_restart_enable: Bool32::default(),
19916        }
19917    }
19918}
19919
19920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html>
19921#[repr(C)]
19922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19923pub struct PipelineLayoutCreateInfo {
19924    pub s_type: StructureType,
19925    pub next: *const c_void,
19926    pub flags: PipelineLayoutCreateFlags,
19927    pub set_layout_count: u32,
19928    pub set_layouts: *const DescriptorSetLayout,
19929    pub push_constant_range_count: u32,
19930    pub push_constant_ranges: *const PushConstantRange,
19931}
19932
19933impl Default for PipelineLayoutCreateInfo {
19934    #[inline]
19935    fn default() -> Self {
19936        Self {
19937            s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
19938            next: ptr::null(),
19939            flags: PipelineLayoutCreateFlags::default(),
19940            set_layout_count: u32::default(),
19941            set_layouts: ptr::null(),
19942            push_constant_range_count: u32::default(),
19943            push_constant_ranges: ptr::null(),
19944        }
19945    }
19946}
19947
19948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html>
19949#[repr(C)]
19950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19951pub struct PipelineLibraryCreateInfoKHR {
19952    pub s_type: StructureType,
19953    pub next: *const c_void,
19954    pub library_count: u32,
19955    pub libraries: *const Pipeline,
19956}
19957
19958impl Default for PipelineLibraryCreateInfoKHR {
19959    #[inline]
19960    fn default() -> Self {
19961        Self {
19962            s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
19963            next: ptr::null(),
19964            library_count: u32::default(),
19965            libraries: ptr::null(),
19966        }
19967    }
19968}
19969
19970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html>
19971#[repr(C)]
19972#[derive(Copy, Clone, Debug, PartialEq)]
19973pub struct PipelineMultisampleStateCreateInfo {
19974    pub s_type: StructureType,
19975    pub next: *const c_void,
19976    pub flags: PipelineMultisampleStateCreateFlags,
19977    pub rasterization_samples: SampleCountFlags,
19978    pub sample_shading_enable: Bool32,
19979    pub min_sample_shading: f32,
19980    pub sample_mask: *const SampleMask,
19981    pub alpha_to_coverage_enable: Bool32,
19982    pub alpha_to_one_enable: Bool32,
19983}
19984
19985impl Default for PipelineMultisampleStateCreateInfo {
19986    #[inline]
19987    fn default() -> Self {
19988        Self {
19989            s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
19990            next: ptr::null(),
19991            flags: PipelineMultisampleStateCreateFlags::default(),
19992            rasterization_samples: SampleCountFlags::default(),
19993            sample_shading_enable: Bool32::default(),
19994            min_sample_shading: f32::default(),
19995            sample_mask: ptr::null(),
19996            alpha_to_coverage_enable: Bool32::default(),
19997            alpha_to_one_enable: Bool32::default(),
19998        }
19999    }
20000}
20001
20002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html>
20003#[repr(C)]
20004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20005pub struct PipelinePropertiesIdentifierEXT {
20006    pub s_type: StructureType,
20007    pub next: *mut c_void,
20008    pub pipeline_identifier: ByteArray<UUID_SIZE>,
20009}
20010
20011impl Default for PipelinePropertiesIdentifierEXT {
20012    #[inline]
20013    fn default() -> Self {
20014        Self {
20015            s_type: StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT,
20016            next: ptr::null_mut(),
20017            pipeline_identifier: ByteArray::default(),
20018        }
20019    }
20020}
20021
20022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>
20023#[repr(C)]
20024#[derive(Copy, Clone, Debug, PartialEq)]
20025pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
20026    pub s_type: StructureType,
20027    pub next: *const c_void,
20028    pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
20029    pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
20030    pub extra_primitive_overestimation_size: f32,
20031}
20032
20033impl Default for PipelineRasterizationConservativeStateCreateInfoEXT {
20034    #[inline]
20035    fn default() -> Self {
20036        Self {
20037            s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
20038            next: ptr::null(),
20039            flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
20040            conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
20041            extra_primitive_overestimation_size: f32::default(),
20042        }
20043    }
20044}
20045
20046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>
20047#[repr(C)]
20048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20049pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
20050    pub s_type: StructureType,
20051    pub next: *const c_void,
20052    pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
20053    pub depth_clip_enable: Bool32,
20054}
20055
20056impl Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
20057    #[inline]
20058    fn default() -> Self {
20059        Self {
20060            s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
20061            next: ptr::null(),
20062            flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
20063            depth_clip_enable: Bool32::default(),
20064        }
20065    }
20066}
20067
20068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html>
20069#[repr(C)]
20070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20071pub struct PipelineRasterizationLineStateCreateInfo {
20072    pub s_type: StructureType,
20073    pub next: *const c_void,
20074    pub line_rasterization_mode: LineRasterizationMode,
20075    pub stippled_line_enable: Bool32,
20076    pub line_stipple_factor: u32,
20077    pub line_stipple_pattern: u16,
20078}
20079
20080impl Default for PipelineRasterizationLineStateCreateInfo {
20081    #[inline]
20082    fn default() -> Self {
20083        Self {
20084            s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,
20085            next: ptr::null(),
20086            line_rasterization_mode: LineRasterizationMode::default(),
20087            stippled_line_enable: Bool32::default(),
20088            line_stipple_factor: u32::default(),
20089            line_stipple_pattern: u16::default(),
20090        }
20091    }
20092}
20093
20094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>
20095#[repr(C)]
20096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20097pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
20098    pub s_type: StructureType,
20099    pub next: *const c_void,
20100    pub provoking_vertex_mode: ProvokingVertexModeEXT,
20101}
20102
20103impl Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
20104    #[inline]
20105    fn default() -> Self {
20106        Self {
20107            s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
20108            next: ptr::null(),
20109            provoking_vertex_mode: ProvokingVertexModeEXT::default(),
20110        }
20111    }
20112}
20113
20114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html>
20115#[repr(C)]
20116#[derive(Copy, Clone, Debug, PartialEq)]
20117pub struct PipelineRasterizationStateCreateInfo {
20118    pub s_type: StructureType,
20119    pub next: *const c_void,
20120    pub flags: PipelineRasterizationStateCreateFlags,
20121    pub depth_clamp_enable: Bool32,
20122    pub rasterizer_discard_enable: Bool32,
20123    pub polygon_mode: PolygonMode,
20124    pub cull_mode: CullModeFlags,
20125    pub front_face: FrontFace,
20126    pub depth_bias_enable: Bool32,
20127    pub depth_bias_constant_factor: f32,
20128    pub depth_bias_clamp: f32,
20129    pub depth_bias_slope_factor: f32,
20130    pub line_width: f32,
20131}
20132
20133impl Default for PipelineRasterizationStateCreateInfo {
20134    #[inline]
20135    fn default() -> Self {
20136        Self {
20137            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
20138            next: ptr::null(),
20139            flags: PipelineRasterizationStateCreateFlags::default(),
20140            depth_clamp_enable: Bool32::default(),
20141            rasterizer_discard_enable: Bool32::default(),
20142            polygon_mode: PolygonMode::default(),
20143            cull_mode: CullModeFlags::default(),
20144            front_face: FrontFace::default(),
20145            depth_bias_enable: Bool32::default(),
20146            depth_bias_constant_factor: f32::default(),
20147            depth_bias_clamp: f32::default(),
20148            depth_bias_slope_factor: f32::default(),
20149            line_width: f32::default(),
20150        }
20151    }
20152}
20153
20154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>
20155#[repr(C)]
20156#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20157pub struct PipelineRasterizationStateRasterizationOrderAMD {
20158    pub s_type: StructureType,
20159    pub next: *const c_void,
20160    pub rasterization_order: RasterizationOrderAMD,
20161}
20162
20163impl Default for PipelineRasterizationStateRasterizationOrderAMD {
20164    #[inline]
20165    fn default() -> Self {
20166        Self {
20167            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
20168            next: ptr::null(),
20169            rasterization_order: RasterizationOrderAMD::default(),
20170        }
20171    }
20172}
20173
20174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>
20175#[repr(C)]
20176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20177pub struct PipelineRasterizationStateStreamCreateInfoEXT {
20178    pub s_type: StructureType,
20179    pub next: *const c_void,
20180    pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
20181    pub rasterization_stream: u32,
20182}
20183
20184impl Default for PipelineRasterizationStateStreamCreateInfoEXT {
20185    #[inline]
20186    fn default() -> Self {
20187        Self {
20188            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
20189            next: ptr::null(),
20190            flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
20191            rasterization_stream: u32::default(),
20192        }
20193    }
20194}
20195
20196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html>
20197#[repr(C)]
20198#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20199pub struct PipelineRenderingCreateInfo {
20200    pub s_type: StructureType,
20201    pub next: *const c_void,
20202    pub view_mask: u32,
20203    pub color_attachment_count: u32,
20204    pub color_attachment_formats: *const Format,
20205    pub depth_attachment_format: Format,
20206    pub stencil_attachment_format: Format,
20207}
20208
20209impl Default for PipelineRenderingCreateInfo {
20210    #[inline]
20211    fn default() -> Self {
20212        Self {
20213            s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO,
20214            next: ptr::null(),
20215            view_mask: u32::default(),
20216            color_attachment_count: u32::default(),
20217            color_attachment_formats: ptr::null(),
20218            depth_attachment_format: Format::default(),
20219            stencil_attachment_format: Format::default(),
20220        }
20221    }
20222}
20223
20224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>
20225#[repr(C)]
20226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20227pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
20228    pub s_type: StructureType,
20229    pub next: *const c_void,
20230    pub representative_fragment_test_enable: Bool32,
20231}
20232
20233impl Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
20234    #[inline]
20235    fn default() -> Self {
20236        Self {
20237            s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
20238            next: ptr::null(),
20239            representative_fragment_test_enable: Bool32::default(),
20240        }
20241    }
20242}
20243
20244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html>
20245#[repr(C)]
20246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20247pub struct PipelineRobustnessCreateInfo {
20248    pub s_type: StructureType,
20249    pub next: *const c_void,
20250    pub storage_buffers: PipelineRobustnessBufferBehavior,
20251    pub uniform_buffers: PipelineRobustnessBufferBehavior,
20252    pub vertex_inputs: PipelineRobustnessBufferBehavior,
20253    pub images: PipelineRobustnessImageBehavior,
20254}
20255
20256impl Default for PipelineRobustnessCreateInfo {
20257    #[inline]
20258    fn default() -> Self {
20259        Self {
20260            s_type: StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO,
20261            next: ptr::null(),
20262            storage_buffers: PipelineRobustnessBufferBehavior::default(),
20263            uniform_buffers: PipelineRobustnessBufferBehavior::default(),
20264            vertex_inputs: PipelineRobustnessBufferBehavior::default(),
20265            images: PipelineRobustnessImageBehavior::default(),
20266        }
20267    }
20268}
20269
20270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>
20271#[repr(C)]
20272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20273pub struct PipelineSampleLocationsStateCreateInfoEXT {
20274    pub s_type: StructureType,
20275    pub next: *const c_void,
20276    pub sample_locations_enable: Bool32,
20277    pub sample_locations_info: SampleLocationsInfoEXT,
20278}
20279
20280impl Default for PipelineSampleLocationsStateCreateInfoEXT {
20281    #[inline]
20282    fn default() -> Self {
20283        Self {
20284            s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
20285            next: ptr::null(),
20286            sample_locations_enable: Bool32::default(),
20287            sample_locations_info: SampleLocationsInfoEXT::default(),
20288        }
20289    }
20290}
20291
20292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html>
20293#[repr(C)]
20294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20295pub struct PipelineShaderStageCreateInfo {
20296    pub s_type: StructureType,
20297    pub next: *const c_void,
20298    pub flags: PipelineShaderStageCreateFlags,
20299    pub stage: ShaderStageFlags,
20300    pub module: ShaderModule,
20301    pub name: *const c_char,
20302    pub specialization_info: *const SpecializationInfo,
20303}
20304
20305impl Default for PipelineShaderStageCreateInfo {
20306    #[inline]
20307    fn default() -> Self {
20308        Self {
20309            s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
20310            next: ptr::null(),
20311            flags: PipelineShaderStageCreateFlags::default(),
20312            stage: ShaderStageFlags::default(),
20313            module: ShaderModule::default(),
20314            name: ptr::null(),
20315            specialization_info: ptr::null(),
20316        }
20317    }
20318}
20319
20320/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html>
20321#[repr(C)]
20322#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20323pub struct PipelineShaderStageModuleIdentifierCreateInfoEXT {
20324    pub s_type: StructureType,
20325    pub next: *const c_void,
20326    pub identifier_size: u32,
20327    pub identifier: *const u8,
20328}
20329
20330impl Default for PipelineShaderStageModuleIdentifierCreateInfoEXT {
20331    #[inline]
20332    fn default() -> Self {
20333        Self {
20334            s_type: StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT,
20335            next: ptr::null(),
20336            identifier_size: u32::default(),
20337            identifier: ptr::null(),
20338        }
20339    }
20340}
20341
20342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html>
20343#[repr(C)]
20344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20345pub struct PipelineShaderStageNodeCreateInfoAMDX {
20346    pub s_type: StructureType,
20347    pub next: *const c_void,
20348    pub name: *const c_char,
20349    pub index: u32,
20350}
20351
20352impl Default for PipelineShaderStageNodeCreateInfoAMDX {
20353    #[inline]
20354    fn default() -> Self {
20355        Self {
20356            s_type: StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX,
20357            next: ptr::null(),
20358            name: ptr::null(),
20359            index: u32::default(),
20360        }
20361    }
20362}
20363
20364/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html>
20365#[repr(C)]
20366#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20367pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfo {
20368    pub s_type: StructureType,
20369    pub next: *mut c_void,
20370    pub required_subgroup_size: u32,
20371}
20372
20373impl Default for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
20374    #[inline]
20375    fn default() -> Self {
20376        Self {
20377            s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
20378            next: ptr::null_mut(),
20379            required_subgroup_size: u32::default(),
20380        }
20381    }
20382}
20383
20384/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>
20385#[repr(C)]
20386#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20387pub struct PipelineTessellationDomainOriginStateCreateInfo {
20388    pub s_type: StructureType,
20389    pub next: *const c_void,
20390    pub domain_origin: TessellationDomainOrigin,
20391}
20392
20393impl Default for PipelineTessellationDomainOriginStateCreateInfo {
20394    #[inline]
20395    fn default() -> Self {
20396        Self {
20397            s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
20398            next: ptr::null(),
20399            domain_origin: TessellationDomainOrigin::default(),
20400        }
20401    }
20402}
20403
20404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html>
20405#[repr(C)]
20406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20407pub struct PipelineTessellationStateCreateInfo {
20408    pub s_type: StructureType,
20409    pub next: *const c_void,
20410    pub flags: PipelineTessellationStateCreateFlags,
20411    pub patch_control_points: u32,
20412}
20413
20414impl Default for PipelineTessellationStateCreateInfo {
20415    #[inline]
20416    fn default() -> Self {
20417        Self {
20418            s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
20419            next: ptr::null(),
20420            flags: PipelineTessellationStateCreateFlags::default(),
20421            patch_control_points: u32::default(),
20422        }
20423    }
20424}
20425
20426/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html>
20427#[repr(C)]
20428#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20429pub struct PipelineVertexInputDivisorStateCreateInfo {
20430    pub s_type: StructureType,
20431    pub next: *const c_void,
20432    pub vertex_binding_divisor_count: u32,
20433    pub vertex_binding_divisors: *const VertexInputBindingDivisorDescription,
20434}
20435
20436impl Default for PipelineVertexInputDivisorStateCreateInfo {
20437    #[inline]
20438    fn default() -> Self {
20439        Self {
20440            s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,
20441            next: ptr::null(),
20442            vertex_binding_divisor_count: u32::default(),
20443            vertex_binding_divisors: ptr::null(),
20444        }
20445    }
20446}
20447
20448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html>
20449#[repr(C)]
20450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20451pub struct PipelineVertexInputStateCreateInfo {
20452    pub s_type: StructureType,
20453    pub next: *const c_void,
20454    pub flags: PipelineVertexInputStateCreateFlags,
20455    pub vertex_binding_description_count: u32,
20456    pub vertex_binding_descriptions: *const VertexInputBindingDescription,
20457    pub vertex_attribute_description_count: u32,
20458    pub vertex_attribute_descriptions: *const VertexInputAttributeDescription,
20459}
20460
20461impl Default for PipelineVertexInputStateCreateInfo {
20462    #[inline]
20463    fn default() -> Self {
20464        Self {
20465            s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
20466            next: ptr::null(),
20467            flags: PipelineVertexInputStateCreateFlags::default(),
20468            vertex_binding_description_count: u32::default(),
20469            vertex_binding_descriptions: ptr::null(),
20470            vertex_attribute_description_count: u32::default(),
20471            vertex_attribute_descriptions: ptr::null(),
20472        }
20473    }
20474}
20475
20476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>
20477#[repr(C)]
20478#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20479pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
20480    pub s_type: StructureType,
20481    pub next: *const c_void,
20482    pub sample_order_type: CoarseSampleOrderTypeNV,
20483    pub custom_sample_order_count: u32,
20484    pub custom_sample_orders: *const CoarseSampleOrderCustomNV,
20485}
20486
20487impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
20488    #[inline]
20489    fn default() -> Self {
20490        Self {
20491            s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
20492            next: ptr::null(),
20493            sample_order_type: CoarseSampleOrderTypeNV::default(),
20494            custom_sample_order_count: u32::default(),
20495            custom_sample_orders: ptr::null(),
20496        }
20497    }
20498}
20499
20500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html>
20501#[repr(C)]
20502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20503pub struct PipelineViewportDepthClampControlCreateInfoEXT {
20504    pub s_type: StructureType,
20505    pub next: *const c_void,
20506    pub depth_clamp_mode: DepthClampModeEXT,
20507    pub depth_clamp_range: *const DepthClampRangeEXT,
20508}
20509
20510impl Default for PipelineViewportDepthClampControlCreateInfoEXT {
20511    #[inline]
20512    fn default() -> Self {
20513        Self {
20514            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT,
20515            next: ptr::null(),
20516            depth_clamp_mode: DepthClampModeEXT::default(),
20517            depth_clamp_range: ptr::null(),
20518        }
20519    }
20520}
20521
20522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>
20523#[repr(C)]
20524#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20525pub struct PipelineViewportDepthClipControlCreateInfoEXT {
20526    pub s_type: StructureType,
20527    pub next: *const c_void,
20528    pub negative_one_to_one: Bool32,
20529}
20530
20531impl Default for PipelineViewportDepthClipControlCreateInfoEXT {
20532    #[inline]
20533    fn default() -> Self {
20534        Self {
20535            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
20536            next: ptr::null(),
20537            negative_one_to_one: Bool32::default(),
20538        }
20539    }
20540}
20541
20542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>
20543#[repr(C)]
20544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20545pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
20546    pub s_type: StructureType,
20547    pub next: *const c_void,
20548    pub exclusive_scissor_count: u32,
20549    pub exclusive_scissors: *const Rect2D,
20550}
20551
20552impl Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
20553    #[inline]
20554    fn default() -> Self {
20555        Self {
20556            s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
20557            next: ptr::null(),
20558            exclusive_scissor_count: u32::default(),
20559            exclusive_scissors: ptr::null(),
20560        }
20561    }
20562}
20563
20564/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>
20565#[repr(C)]
20566#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20567pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
20568    pub s_type: StructureType,
20569    pub next: *const c_void,
20570    pub shading_rate_image_enable: Bool32,
20571    pub viewport_count: u32,
20572    pub shading_rate_palettes: *const ShadingRatePaletteNV,
20573}
20574
20575impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
20576    #[inline]
20577    fn default() -> Self {
20578        Self {
20579            s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
20580            next: ptr::null(),
20581            shading_rate_image_enable: Bool32::default(),
20582            viewport_count: u32::default(),
20583            shading_rate_palettes: ptr::null(),
20584        }
20585    }
20586}
20587
20588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html>
20589#[repr(C)]
20590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20591pub struct PipelineViewportStateCreateInfo {
20592    pub s_type: StructureType,
20593    pub next: *const c_void,
20594    pub flags: PipelineViewportStateCreateFlags,
20595    pub viewport_count: u32,
20596    pub viewports: *const Viewport,
20597    pub scissor_count: u32,
20598    pub scissors: *const Rect2D,
20599}
20600
20601impl Default for PipelineViewportStateCreateInfo {
20602    #[inline]
20603    fn default() -> Self {
20604        Self {
20605            s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
20606            next: ptr::null(),
20607            flags: PipelineViewportStateCreateFlags::default(),
20608            viewport_count: u32::default(),
20609            viewports: ptr::null(),
20610            scissor_count: u32::default(),
20611            scissors: ptr::null(),
20612        }
20613    }
20614}
20615
20616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>
20617#[repr(C)]
20618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20619pub struct PipelineViewportSwizzleStateCreateInfoNV {
20620    pub s_type: StructureType,
20621    pub next: *const c_void,
20622    pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
20623    pub viewport_count: u32,
20624    pub viewport_swizzles: *const ViewportSwizzleNV,
20625}
20626
20627impl Default for PipelineViewportSwizzleStateCreateInfoNV {
20628    #[inline]
20629    fn default() -> Self {
20630        Self {
20631            s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
20632            next: ptr::null(),
20633            flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
20634            viewport_count: u32::default(),
20635            viewport_swizzles: ptr::null(),
20636        }
20637    }
20638}
20639
20640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>
20641#[repr(C)]
20642#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20643pub struct PipelineViewportWScalingStateCreateInfoNV {
20644    pub s_type: StructureType,
20645    pub next: *const c_void,
20646    pub viewport_w_scaling_enable: Bool32,
20647    pub viewport_count: u32,
20648    pub viewport_w_scalings: *const ViewportWScalingNV,
20649}
20650
20651impl Default for PipelineViewportWScalingStateCreateInfoNV {
20652    #[inline]
20653    fn default() -> Self {
20654        Self {
20655            s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
20656            next: ptr::null(),
20657            viewport_w_scaling_enable: Bool32::default(),
20658            viewport_count: u32::default(),
20659            viewport_w_scalings: ptr::null(),
20660        }
20661    }
20662}
20663
20664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html>
20665#[repr(C)]
20666#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20667pub struct PresentFrameTokenGGP {
20668    pub s_type: StructureType,
20669    pub next: *const c_void,
20670    pub frame_token: GgpFrameToken,
20671}
20672
20673impl Default for PresentFrameTokenGGP {
20674    #[inline]
20675    fn default() -> Self {
20676        Self {
20677            s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
20678            next: ptr::null(),
20679            frame_token: GgpFrameToken::default(),
20680        }
20681    }
20682}
20683
20684/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentIdKHR.html>
20685#[repr(C)]
20686#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20687pub struct PresentIdKHR {
20688    pub s_type: StructureType,
20689    pub next: *const c_void,
20690    pub swapchain_count: u32,
20691    pub present_ids: *const u64,
20692}
20693
20694impl Default for PresentIdKHR {
20695    #[inline]
20696    fn default() -> Self {
20697        Self {
20698            s_type: StructureType::PRESENT_ID_KHR,
20699            next: ptr::null(),
20700            swapchain_count: u32::default(),
20701            present_ids: ptr::null(),
20702        }
20703    }
20704}
20705
20706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentInfoKHR.html>
20707#[repr(C)]
20708#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20709pub struct PresentInfoKHR {
20710    pub s_type: StructureType,
20711    pub next: *const c_void,
20712    pub wait_semaphore_count: u32,
20713    pub wait_semaphores: *const Semaphore,
20714    pub swapchain_count: u32,
20715    pub swapchains: *const SwapchainKHR,
20716    pub image_indices: *const u32,
20717    pub results: *mut Result,
20718}
20719
20720impl Default for PresentInfoKHR {
20721    #[inline]
20722    fn default() -> Self {
20723        Self {
20724            s_type: StructureType::PRESENT_INFO_KHR,
20725            next: ptr::null(),
20726            wait_semaphore_count: u32::default(),
20727            wait_semaphores: ptr::null(),
20728            swapchain_count: u32::default(),
20729            swapchains: ptr::null(),
20730            image_indices: ptr::null(),
20731            results: ptr::null_mut(),
20732        }
20733    }
20734}
20735
20736/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionKHR.html>
20737#[repr(C)]
20738#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20739pub struct PresentRegionKHR {
20740    pub rectangle_count: u32,
20741    pub rectangles: *const RectLayerKHR,
20742}
20743
20744impl Default for PresentRegionKHR {
20745    #[inline]
20746    fn default() -> Self {
20747        Self {
20748            rectangle_count: u32::default(),
20749            rectangles: ptr::null(),
20750        }
20751    }
20752}
20753
20754/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html>
20755#[repr(C)]
20756#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20757pub struct PresentRegionsKHR {
20758    pub s_type: StructureType,
20759    pub next: *const c_void,
20760    pub swapchain_count: u32,
20761    pub regions: *const PresentRegionKHR,
20762}
20763
20764impl Default for PresentRegionsKHR {
20765    #[inline]
20766    fn default() -> Self {
20767        Self {
20768            s_type: StructureType::PRESENT_REGIONS_KHR,
20769            next: ptr::null(),
20770            swapchain_count: u32::default(),
20771            regions: ptr::null(),
20772        }
20773    }
20774}
20775
20776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html>
20777#[repr(C)]
20778#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
20779pub struct PresentTimeGOOGLE {
20780    pub present_id: u32,
20781    pub desired_present_time: u64,
20782}
20783
20784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html>
20785#[repr(C)]
20786#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20787pub struct PresentTimesInfoGOOGLE {
20788    pub s_type: StructureType,
20789    pub next: *const c_void,
20790    pub swapchain_count: u32,
20791    pub times: *const PresentTimeGOOGLE,
20792}
20793
20794impl Default for PresentTimesInfoGOOGLE {
20795    #[inline]
20796    fn default() -> Self {
20797        Self {
20798            s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
20799            next: ptr::null(),
20800            swapchain_count: u32::default(),
20801            times: ptr::null(),
20802        }
20803    }
20804}
20805
20806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html>
20807#[repr(C)]
20808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20809pub struct PrivateDataSlotCreateInfo {
20810    pub s_type: StructureType,
20811    pub next: *const c_void,
20812    pub flags: PrivateDataSlotCreateFlags,
20813}
20814
20815impl Default for PrivateDataSlotCreateInfo {
20816    #[inline]
20817    fn default() -> Self {
20818        Self {
20819            s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO,
20820            next: ptr::null(),
20821            flags: PrivateDataSlotCreateFlags::default(),
20822        }
20823    }
20824}
20825
20826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html>
20827#[repr(C)]
20828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20829pub struct ProtectedSubmitInfo {
20830    pub s_type: StructureType,
20831    pub next: *const c_void,
20832    pub protected_submit: Bool32,
20833}
20834
20835impl Default for ProtectedSubmitInfo {
20836    #[inline]
20837    fn default() -> Self {
20838        Self {
20839            s_type: StructureType::PROTECTED_SUBMIT_INFO,
20840            next: ptr::null(),
20841            protected_submit: Bool32::default(),
20842        }
20843    }
20844}
20845
20846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantRange.html>
20847#[repr(C)]
20848#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
20849pub struct PushConstantRange {
20850    pub stage_flags: ShaderStageFlags,
20851    pub offset: u32,
20852    pub size: u32,
20853}
20854
20855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfo.html>
20856#[repr(C)]
20857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20858pub struct PushConstantsInfo {
20859    pub s_type: StructureType,
20860    pub next: *const c_void,
20861    pub layout: PipelineLayout,
20862    pub stage_flags: ShaderStageFlags,
20863    pub offset: u32,
20864    pub size: u32,
20865    pub values: *const c_void,
20866}
20867
20868impl Default for PushConstantsInfo {
20869    #[inline]
20870    fn default() -> Self {
20871        Self {
20872            s_type: StructureType::PUSH_CONSTANTS_INFO,
20873            next: ptr::null(),
20874            layout: PipelineLayout::default(),
20875            stage_flags: ShaderStageFlags::default(),
20876            offset: u32::default(),
20877            size: u32::default(),
20878            values: ptr::null(),
20879        }
20880    }
20881}
20882
20883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html>
20884#[repr(C)]
20885#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20886pub struct PushDescriptorSetInfo {
20887    pub s_type: StructureType,
20888    pub next: *const c_void,
20889    pub stage_flags: ShaderStageFlags,
20890    pub layout: PipelineLayout,
20891    pub set: u32,
20892    pub descriptor_write_count: u32,
20893    pub descriptor_writes: *const WriteDescriptorSet,
20894}
20895
20896impl Default for PushDescriptorSetInfo {
20897    #[inline]
20898    fn default() -> Self {
20899        Self {
20900            s_type: StructureType::PUSH_DESCRIPTOR_SET_INFO,
20901            next: ptr::null(),
20902            stage_flags: ShaderStageFlags::default(),
20903            layout: PipelineLayout::default(),
20904            set: u32::default(),
20905            descriptor_write_count: u32::default(),
20906            descriptor_writes: ptr::null(),
20907        }
20908    }
20909}
20910
20911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html>
20912#[repr(C)]
20913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20914pub struct PushDescriptorSetWithTemplateInfo {
20915    pub s_type: StructureType,
20916    pub next: *const c_void,
20917    pub descriptor_update_template: DescriptorUpdateTemplate,
20918    pub layout: PipelineLayout,
20919    pub set: u32,
20920    pub data: *const c_void,
20921}
20922
20923impl Default for PushDescriptorSetWithTemplateInfo {
20924    #[inline]
20925    fn default() -> Self {
20926        Self {
20927            s_type: StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,
20928            next: ptr::null(),
20929            descriptor_update_template: DescriptorUpdateTemplate::default(),
20930            layout: PipelineLayout::default(),
20931            set: u32::default(),
20932            data: ptr::null(),
20933        }
20934    }
20935}
20936
20937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html>
20938#[repr(C)]
20939#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20940pub struct QueryLowLatencySupportNV {
20941    pub s_type: StructureType,
20942    pub next: *const c_void,
20943    pub queried_low_latency_data: *mut c_void,
20944}
20945
20946impl Default for QueryLowLatencySupportNV {
20947    #[inline]
20948    fn default() -> Self {
20949        Self {
20950            s_type: StructureType::QUERY_LOW_LATENCY_SUPPORT_NV,
20951            next: ptr::null(),
20952            queried_low_latency_data: ptr::null_mut(),
20953        }
20954    }
20955}
20956
20957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html>
20958#[repr(C)]
20959#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20960pub struct QueryPoolCreateInfo {
20961    pub s_type: StructureType,
20962    pub next: *const c_void,
20963    pub flags: QueryPoolCreateFlags,
20964    pub query_type: QueryType,
20965    pub query_count: u32,
20966    pub pipeline_statistics: QueryPipelineStatisticFlags,
20967}
20968
20969impl Default for QueryPoolCreateInfo {
20970    #[inline]
20971    fn default() -> Self {
20972        Self {
20973            s_type: StructureType::QUERY_POOL_CREATE_INFO,
20974            next: ptr::null(),
20975            flags: QueryPoolCreateFlags::default(),
20976            query_type: QueryType::default(),
20977            query_count: u32::default(),
20978            pipeline_statistics: QueryPipelineStatisticFlags::default(),
20979        }
20980    }
20981}
20982
20983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>
20984#[repr(C)]
20985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20986pub struct QueryPoolPerformanceCreateInfoKHR {
20987    pub s_type: StructureType,
20988    pub next: *const c_void,
20989    pub queue_family_index: u32,
20990    pub counter_index_count: u32,
20991    pub counter_indices: *const u32,
20992}
20993
20994impl Default for QueryPoolPerformanceCreateInfoKHR {
20995    #[inline]
20996    fn default() -> Self {
20997        Self {
20998            s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
20999            next: ptr::null(),
21000            queue_family_index: u32::default(),
21001            counter_index_count: u32::default(),
21002            counter_indices: ptr::null(),
21003        }
21004    }
21005}
21006
21007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>
21008#[repr(C)]
21009#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21010pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
21011    pub s_type: StructureType,
21012    pub next: *const c_void,
21013    pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
21014}
21015
21016impl Default for QueryPoolPerformanceQueryCreateInfoINTEL {
21017    #[inline]
21018    fn default() -> Self {
21019        Self {
21020            s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
21021            next: ptr::null(),
21022            performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
21023        }
21024    }
21025}
21026
21027/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html>
21028#[repr(C)]
21029#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21030pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHR {
21031    pub s_type: StructureType,
21032    pub next: *const c_void,
21033    pub encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
21034}
21035
21036impl Default for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
21037    #[inline]
21038    fn default() -> Self {
21039        Self {
21040            s_type: StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR,
21041            next: ptr::null(),
21042            encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
21043        }
21044    }
21045}
21046
21047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html>
21048#[repr(C)]
21049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21050pub struct QueueFamilyCheckpointProperties2NV {
21051    pub s_type: StructureType,
21052    pub next: *mut c_void,
21053    pub checkpoint_execution_stage_mask: PipelineStageFlags2,
21054}
21055
21056impl Default for QueueFamilyCheckpointProperties2NV {
21057    #[inline]
21058    fn default() -> Self {
21059        Self {
21060            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
21061            next: ptr::null_mut(),
21062            checkpoint_execution_stage_mask: PipelineStageFlags2::default(),
21063        }
21064    }
21065}
21066
21067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html>
21068#[repr(C)]
21069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21070pub struct QueueFamilyCheckpointPropertiesNV {
21071    pub s_type: StructureType,
21072    pub next: *mut c_void,
21073    pub checkpoint_execution_stage_mask: PipelineStageFlags,
21074}
21075
21076impl Default for QueueFamilyCheckpointPropertiesNV {
21077    #[inline]
21078    fn default() -> Self {
21079        Self {
21080            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
21081            next: ptr::null_mut(),
21082            checkpoint_execution_stage_mask: PipelineStageFlags::default(),
21083        }
21084    }
21085}
21086
21087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html>
21088#[repr(C)]
21089#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21090pub struct QueueFamilyGlobalPriorityProperties {
21091    pub s_type: StructureType,
21092    pub next: *mut c_void,
21093    pub priority_count: u32,
21094    pub priorities: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE],
21095}
21096
21097impl Default for QueueFamilyGlobalPriorityProperties {
21098    #[inline]
21099    fn default() -> Self {
21100        Self {
21101            s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,
21102            next: ptr::null_mut(),
21103            priority_count: u32::default(),
21104            priorities: [QueueGlobalPriority::default(); MAX_GLOBAL_PRIORITY_SIZE],
21105        }
21106    }
21107}
21108
21109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html>
21110#[repr(C)]
21111#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21112pub struct QueueFamilyProperties {
21113    pub queue_flags: QueueFlags,
21114    pub queue_count: u32,
21115    pub timestamp_valid_bits: u32,
21116    pub min_image_transfer_granularity: Extent3D,
21117}
21118
21119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html>
21120#[repr(C)]
21121#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21122pub struct QueueFamilyProperties2 {
21123    pub s_type: StructureType,
21124    pub next: *mut c_void,
21125    pub queue_family_properties: QueueFamilyProperties,
21126}
21127
21128impl Default for QueueFamilyProperties2 {
21129    #[inline]
21130    fn default() -> Self {
21131        Self {
21132            s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
21133            next: ptr::null_mut(),
21134            queue_family_properties: QueueFamilyProperties::default(),
21135        }
21136    }
21137}
21138
21139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html>
21140#[repr(C)]
21141#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21142pub struct QueueFamilyQueryResultStatusPropertiesKHR {
21143    pub s_type: StructureType,
21144    pub next: *mut c_void,
21145    pub query_result_status_support: Bool32,
21146}
21147
21148impl Default for QueueFamilyQueryResultStatusPropertiesKHR {
21149    #[inline]
21150    fn default() -> Self {
21151        Self {
21152            s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR,
21153            next: ptr::null_mut(),
21154            query_result_status_support: Bool32::default(),
21155        }
21156    }
21157}
21158
21159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html>
21160#[repr(C)]
21161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21162pub struct QueueFamilyVideoPropertiesKHR {
21163    pub s_type: StructureType,
21164    pub next: *mut c_void,
21165    pub video_codec_operations: VideoCodecOperationFlagsKHR,
21166}
21167
21168impl Default for QueueFamilyVideoPropertiesKHR {
21169    #[inline]
21170    fn default() -> Self {
21171        Self {
21172            s_type: StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR,
21173            next: ptr::null_mut(),
21174            video_codec_operations: VideoCodecOperationFlagsKHR::default(),
21175        }
21176    }
21177}
21178
21179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html>
21180#[repr(C)]
21181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21182pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
21183    pub s_type: StructureType,
21184    pub next: *mut c_void,
21185    pub allow_cluster_acceleration_structure: Bool32,
21186}
21187
21188impl Default for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
21189    #[inline]
21190    fn default() -> Self {
21191        Self {
21192            s_type:
21193                StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
21194            next: ptr::null_mut(),
21195            allow_cluster_acceleration_structure: Bool32::default(),
21196        }
21197    }
21198}
21199
21200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html>
21201#[repr(C)]
21202#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21203pub struct RayTracingPipelineCreateInfoKHR {
21204    pub s_type: StructureType,
21205    pub next: *const c_void,
21206    pub flags: PipelineCreateFlags,
21207    pub stage_count: u32,
21208    pub stages: *const PipelineShaderStageCreateInfo,
21209    pub group_count: u32,
21210    pub groups: *const RayTracingShaderGroupCreateInfoKHR,
21211    pub max_pipeline_ray_recursion_depth: u32,
21212    pub library_info: *const PipelineLibraryCreateInfoKHR,
21213    pub library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
21214    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
21215    pub layout: PipelineLayout,
21216    pub base_pipeline_handle: Pipeline,
21217    pub base_pipeline_index: i32,
21218}
21219
21220impl Default for RayTracingPipelineCreateInfoKHR {
21221    #[inline]
21222    fn default() -> Self {
21223        Self {
21224            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
21225            next: ptr::null(),
21226            flags: PipelineCreateFlags::default(),
21227            stage_count: u32::default(),
21228            stages: ptr::null(),
21229            group_count: u32::default(),
21230            groups: ptr::null(),
21231            max_pipeline_ray_recursion_depth: u32::default(),
21232            library_info: ptr::null(),
21233            library_interface: ptr::null(),
21234            dynamic_state: ptr::null(),
21235            layout: PipelineLayout::default(),
21236            base_pipeline_handle: Pipeline::default(),
21237            base_pipeline_index: i32::default(),
21238        }
21239    }
21240}
21241
21242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html>
21243#[repr(C)]
21244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21245pub struct RayTracingPipelineCreateInfoNV {
21246    pub s_type: StructureType,
21247    pub next: *const c_void,
21248    pub flags: PipelineCreateFlags,
21249    pub stage_count: u32,
21250    pub stages: *const PipelineShaderStageCreateInfo,
21251    pub group_count: u32,
21252    pub groups: *const RayTracingShaderGroupCreateInfoNV,
21253    pub max_recursion_depth: u32,
21254    pub layout: PipelineLayout,
21255    pub base_pipeline_handle: Pipeline,
21256    pub base_pipeline_index: i32,
21257}
21258
21259impl Default for RayTracingPipelineCreateInfoNV {
21260    #[inline]
21261    fn default() -> Self {
21262        Self {
21263            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
21264            next: ptr::null(),
21265            flags: PipelineCreateFlags::default(),
21266            stage_count: u32::default(),
21267            stages: ptr::null(),
21268            group_count: u32::default(),
21269            groups: ptr::null(),
21270            max_recursion_depth: u32::default(),
21271            layout: PipelineLayout::default(),
21272            base_pipeline_handle: Pipeline::default(),
21273            base_pipeline_index: i32::default(),
21274        }
21275    }
21276}
21277
21278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>
21279#[repr(C)]
21280#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21281pub struct RayTracingPipelineInterfaceCreateInfoKHR {
21282    pub s_type: StructureType,
21283    pub next: *const c_void,
21284    pub max_pipeline_ray_payload_size: u32,
21285    pub max_pipeline_ray_hit_attribute_size: u32,
21286}
21287
21288impl Default for RayTracingPipelineInterfaceCreateInfoKHR {
21289    #[inline]
21290    fn default() -> Self {
21291        Self {
21292            s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
21293            next: ptr::null(),
21294            max_pipeline_ray_payload_size: u32::default(),
21295            max_pipeline_ray_hit_attribute_size: u32::default(),
21296        }
21297    }
21298}
21299
21300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>
21301#[repr(C)]
21302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21303pub struct RayTracingShaderGroupCreateInfoKHR {
21304    pub s_type: StructureType,
21305    pub next: *const c_void,
21306    pub type_: RayTracingShaderGroupTypeKHR,
21307    pub general_shader: u32,
21308    pub closest_hit_shader: u32,
21309    pub any_hit_shader: u32,
21310    pub intersection_shader: u32,
21311    pub shader_group_capture_replay_handle: *const c_void,
21312}
21313
21314impl Default for RayTracingShaderGroupCreateInfoKHR {
21315    #[inline]
21316    fn default() -> Self {
21317        Self {
21318            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
21319            next: ptr::null(),
21320            type_: RayTracingShaderGroupTypeKHR::default(),
21321            general_shader: u32::default(),
21322            closest_hit_shader: u32::default(),
21323            any_hit_shader: u32::default(),
21324            intersection_shader: u32::default(),
21325            shader_group_capture_replay_handle: ptr::null(),
21326        }
21327    }
21328}
21329
21330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html>
21331#[repr(C)]
21332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21333pub struct RayTracingShaderGroupCreateInfoNV {
21334    pub s_type: StructureType,
21335    pub next: *const c_void,
21336    pub type_: RayTracingShaderGroupTypeKHR,
21337    pub general_shader: u32,
21338    pub closest_hit_shader: u32,
21339    pub any_hit_shader: u32,
21340    pub intersection_shader: u32,
21341}
21342
21343impl Default for RayTracingShaderGroupCreateInfoNV {
21344    #[inline]
21345    fn default() -> Self {
21346        Self {
21347            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
21348            next: ptr::null(),
21349            type_: RayTracingShaderGroupTypeKHR::default(),
21350            general_shader: u32::default(),
21351            closest_hit_shader: u32::default(),
21352            any_hit_shader: u32::default(),
21353            intersection_shader: u32::default(),
21354        }
21355    }
21356}
21357
21358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRect2D.html>
21359#[repr(C)]
21360#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21361pub struct Rect2D {
21362    pub offset: Offset2D,
21363    pub extent: Extent2D,
21364}
21365
21366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRectLayerKHR.html>
21367#[repr(C)]
21368#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21369pub struct RectLayerKHR {
21370    pub offset: Offset2D,
21371    pub extent: Extent2D,
21372    pub layer: u32,
21373}
21374
21375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html>
21376#[repr(C)]
21377#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21378pub struct RefreshCycleDurationGOOGLE {
21379    pub refresh_duration: u64,
21380}
21381
21382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectKHR.html>
21383#[repr(C)]
21384#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21385pub struct RefreshObjectKHR {
21386    pub object_type: ObjectType,
21387    pub object_handle: u64,
21388    pub flags: RefreshObjectFlagsKHR,
21389}
21390
21391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectListKHR.html>
21392#[repr(C)]
21393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21394pub struct RefreshObjectListKHR {
21395    pub s_type: StructureType,
21396    pub next: *const c_void,
21397    pub object_count: u32,
21398    pub objects: *const RefreshObjectKHR,
21399}
21400
21401impl Default for RefreshObjectListKHR {
21402    #[inline]
21403    fn default() -> Self {
21404        Self {
21405            s_type: StructureType::REFRESH_OBJECT_LIST_KHR,
21406            next: ptr::null(),
21407            object_count: u32::default(),
21408            objects: ptr::null(),
21409        }
21410    }
21411}
21412
21413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html>
21414#[repr(C)]
21415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21416pub struct ReleaseCapturedPipelineDataInfoKHR {
21417    pub s_type: StructureType,
21418    pub next: *mut c_void,
21419    pub pipeline: Pipeline,
21420}
21421
21422impl Default for ReleaseCapturedPipelineDataInfoKHR {
21423    #[inline]
21424    fn default() -> Self {
21425        Self {
21426            s_type: StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR,
21427            next: ptr::null_mut(),
21428            pipeline: Pipeline::default(),
21429        }
21430    }
21431}
21432
21433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoEXT.html>
21434#[repr(C)]
21435#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21436pub struct ReleaseSwapchainImagesInfoEXT {
21437    pub s_type: StructureType,
21438    pub next: *const c_void,
21439    pub swapchain: SwapchainKHR,
21440    pub image_index_count: u32,
21441    pub image_indices: *const u32,
21442}
21443
21444impl Default for ReleaseSwapchainImagesInfoEXT {
21445    #[inline]
21446    fn default() -> Self {
21447        Self {
21448            s_type: StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_EXT,
21449            next: ptr::null(),
21450            swapchain: SwapchainKHR::default(),
21451            image_index_count: u32::default(),
21452            image_indices: ptr::null(),
21453        }
21454    }
21455}
21456
21457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html>
21458#[repr(C)]
21459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21460pub struct RenderPassAttachmentBeginInfo {
21461    pub s_type: StructureType,
21462    pub next: *const c_void,
21463    pub attachment_count: u32,
21464    pub attachments: *const ImageView,
21465}
21466
21467impl Default for RenderPassAttachmentBeginInfo {
21468    #[inline]
21469    fn default() -> Self {
21470        Self {
21471            s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
21472            next: ptr::null(),
21473            attachment_count: u32::default(),
21474            attachments: ptr::null(),
21475        }
21476    }
21477}
21478
21479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html>
21480#[repr(C)]
21481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21482pub struct RenderPassBeginInfo {
21483    pub s_type: StructureType,
21484    pub next: *const c_void,
21485    pub render_pass: RenderPass,
21486    pub framebuffer: Framebuffer,
21487    pub render_area: Rect2D,
21488    pub clear_value_count: u32,
21489    pub clear_values: *const ClearValue,
21490}
21491
21492impl Default for RenderPassBeginInfo {
21493    #[inline]
21494    fn default() -> Self {
21495        Self {
21496            s_type: StructureType::RENDER_PASS_BEGIN_INFO,
21497            next: ptr::null(),
21498            render_pass: RenderPass::default(),
21499            framebuffer: Framebuffer::default(),
21500            render_area: Rect2D::default(),
21501            clear_value_count: u32::default(),
21502            clear_values: ptr::null(),
21503        }
21504    }
21505}
21506
21507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html>
21508#[repr(C)]
21509#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21510pub struct RenderPassCreateInfo {
21511    pub s_type: StructureType,
21512    pub next: *const c_void,
21513    pub flags: RenderPassCreateFlags,
21514    pub attachment_count: u32,
21515    pub attachments: *const AttachmentDescription,
21516    pub subpass_count: u32,
21517    pub subpasses: *const SubpassDescription,
21518    pub dependency_count: u32,
21519    pub dependencies: *const SubpassDependency,
21520}
21521
21522impl Default for RenderPassCreateInfo {
21523    #[inline]
21524    fn default() -> Self {
21525        Self {
21526            s_type: StructureType::RENDER_PASS_CREATE_INFO,
21527            next: ptr::null(),
21528            flags: RenderPassCreateFlags::default(),
21529            attachment_count: u32::default(),
21530            attachments: ptr::null(),
21531            subpass_count: u32::default(),
21532            subpasses: ptr::null(),
21533            dependency_count: u32::default(),
21534            dependencies: ptr::null(),
21535        }
21536    }
21537}
21538
21539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html>
21540#[repr(C)]
21541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21542pub struct RenderPassCreateInfo2 {
21543    pub s_type: StructureType,
21544    pub next: *const c_void,
21545    pub flags: RenderPassCreateFlags,
21546    pub attachment_count: u32,
21547    pub attachments: *const AttachmentDescription2,
21548    pub subpass_count: u32,
21549    pub subpasses: *const SubpassDescription2,
21550    pub dependency_count: u32,
21551    pub dependencies: *const SubpassDependency2,
21552    pub correlated_view_mask_count: u32,
21553    pub correlated_view_masks: *const u32,
21554}
21555
21556impl Default for RenderPassCreateInfo2 {
21557    #[inline]
21558    fn default() -> Self {
21559        Self {
21560            s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
21561            next: ptr::null(),
21562            flags: RenderPassCreateFlags::default(),
21563            attachment_count: u32::default(),
21564            attachments: ptr::null(),
21565            subpass_count: u32::default(),
21566            subpasses: ptr::null(),
21567            dependency_count: u32::default(),
21568            dependencies: ptr::null(),
21569            correlated_view_mask_count: u32::default(),
21570            correlated_view_masks: ptr::null(),
21571        }
21572    }
21573}
21574
21575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html>
21576#[repr(C)]
21577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21578pub struct RenderPassCreationControlEXT {
21579    pub s_type: StructureType,
21580    pub next: *const c_void,
21581    pub disallow_merging: Bool32,
21582}
21583
21584impl Default for RenderPassCreationControlEXT {
21585    #[inline]
21586    fn default() -> Self {
21587        Self {
21588            s_type: StructureType::RENDER_PASS_CREATION_CONTROL_EXT,
21589            next: ptr::null(),
21590            disallow_merging: Bool32::default(),
21591        }
21592    }
21593}
21594
21595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html>
21596#[repr(C)]
21597#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21598pub struct RenderPassCreationFeedbackCreateInfoEXT {
21599    pub s_type: StructureType,
21600    pub next: *const c_void,
21601    pub render_pass_feedback: *mut RenderPassCreationFeedbackInfoEXT,
21602}
21603
21604impl Default for RenderPassCreationFeedbackCreateInfoEXT {
21605    #[inline]
21606    fn default() -> Self {
21607        Self {
21608            s_type: StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT,
21609            next: ptr::null(),
21610            render_pass_feedback: ptr::null_mut(),
21611        }
21612    }
21613}
21614
21615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html>
21616#[repr(C)]
21617#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21618pub struct RenderPassCreationFeedbackInfoEXT {
21619    pub post_merge_subpass_count: u32,
21620}
21621
21622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>
21623#[repr(C)]
21624#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21625pub struct RenderPassFragmentDensityMapCreateInfoEXT {
21626    pub s_type: StructureType,
21627    pub next: *const c_void,
21628    pub fragment_density_map_attachment: AttachmentReference,
21629}
21630
21631impl Default for RenderPassFragmentDensityMapCreateInfoEXT {
21632    #[inline]
21633    fn default() -> Self {
21634        Self {
21635            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
21636            next: ptr::null(),
21637            fragment_density_map_attachment: AttachmentReference::default(),
21638        }
21639    }
21640}
21641
21642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>
21643#[repr(C)]
21644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21645pub struct RenderPassInputAttachmentAspectCreateInfo {
21646    pub s_type: StructureType,
21647    pub next: *const c_void,
21648    pub aspect_reference_count: u32,
21649    pub aspect_references: *const InputAttachmentAspectReference,
21650}
21651
21652impl Default for RenderPassInputAttachmentAspectCreateInfo {
21653    #[inline]
21654    fn default() -> Self {
21655        Self {
21656            s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
21657            next: ptr::null(),
21658            aspect_reference_count: u32::default(),
21659            aspect_references: ptr::null(),
21660        }
21661    }
21662}
21663
21664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html>
21665#[repr(C)]
21666#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21667pub struct RenderPassMultiviewCreateInfo {
21668    pub s_type: StructureType,
21669    pub next: *const c_void,
21670    pub subpass_count: u32,
21671    pub view_masks: *const u32,
21672    pub dependency_count: u32,
21673    pub view_offsets: *const i32,
21674    pub correlation_mask_count: u32,
21675    pub correlation_masks: *const u32,
21676}
21677
21678impl Default for RenderPassMultiviewCreateInfo {
21679    #[inline]
21680    fn default() -> Self {
21681        Self {
21682            s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
21683            next: ptr::null(),
21684            subpass_count: u32::default(),
21685            view_masks: ptr::null(),
21686            dependency_count: u32::default(),
21687            view_offsets: ptr::null(),
21688            correlation_mask_count: u32::default(),
21689            correlation_masks: ptr::null(),
21690        }
21691    }
21692}
21693
21694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>
21695#[repr(C)]
21696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21697pub struct RenderPassSampleLocationsBeginInfoEXT {
21698    pub s_type: StructureType,
21699    pub next: *const c_void,
21700    pub attachment_initial_sample_locations_count: u32,
21701    pub attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
21702    pub post_subpass_sample_locations_count: u32,
21703    pub post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
21704}
21705
21706impl Default for RenderPassSampleLocationsBeginInfoEXT {
21707    #[inline]
21708    fn default() -> Self {
21709        Self {
21710            s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
21711            next: ptr::null(),
21712            attachment_initial_sample_locations_count: u32::default(),
21713            attachment_initial_sample_locations: ptr::null(),
21714            post_subpass_sample_locations_count: u32::default(),
21715            post_subpass_sample_locations: ptr::null(),
21716        }
21717    }
21718}
21719
21720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html>
21721#[repr(C)]
21722#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21723pub struct RenderPassStripeBeginInfoARM {
21724    pub s_type: StructureType,
21725    pub next: *const c_void,
21726    pub stripe_info_count: u32,
21727    pub stripe_infos: *const RenderPassStripeInfoARM,
21728}
21729
21730impl Default for RenderPassStripeBeginInfoARM {
21731    #[inline]
21732    fn default() -> Self {
21733        Self {
21734            s_type: StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
21735            next: ptr::null(),
21736            stripe_info_count: u32::default(),
21737            stripe_infos: ptr::null(),
21738        }
21739    }
21740}
21741
21742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html>
21743#[repr(C)]
21744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21745pub struct RenderPassStripeInfoARM {
21746    pub s_type: StructureType,
21747    pub next: *const c_void,
21748    pub stripe_area: Rect2D,
21749}
21750
21751impl Default for RenderPassStripeInfoARM {
21752    #[inline]
21753    fn default() -> Self {
21754        Self {
21755            s_type: StructureType::RENDER_PASS_STRIPE_INFO_ARM,
21756            next: ptr::null(),
21757            stripe_area: Rect2D::default(),
21758        }
21759    }
21760}
21761
21762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html>
21763#[repr(C)]
21764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21765pub struct RenderPassStripeSubmitInfoARM {
21766    pub s_type: StructureType,
21767    pub next: *const c_void,
21768    pub stripe_semaphore_info_count: u32,
21769    pub stripe_semaphore_infos: *const SemaphoreSubmitInfo,
21770}
21771
21772impl Default for RenderPassStripeSubmitInfoARM {
21773    #[inline]
21774    fn default() -> Self {
21775        Self {
21776            s_type: StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
21777            next: ptr::null(),
21778            stripe_semaphore_info_count: u32::default(),
21779            stripe_semaphore_infos: ptr::null(),
21780        }
21781    }
21782}
21783
21784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html>
21785#[repr(C)]
21786#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21787pub struct RenderPassSubpassFeedbackCreateInfoEXT {
21788    pub s_type: StructureType,
21789    pub next: *const c_void,
21790    pub subpass_feedback: *mut RenderPassSubpassFeedbackInfoEXT,
21791}
21792
21793impl Default for RenderPassSubpassFeedbackCreateInfoEXT {
21794    #[inline]
21795    fn default() -> Self {
21796        Self {
21797            s_type: StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT,
21798            next: ptr::null(),
21799            subpass_feedback: ptr::null_mut(),
21800        }
21801    }
21802}
21803
21804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html>
21805#[repr(C)]
21806#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21807pub struct RenderPassSubpassFeedbackInfoEXT {
21808    pub subpass_merge_status: SubpassMergeStatusEXT,
21809    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
21810    pub post_merge_index: u32,
21811}
21812
21813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html>
21814#[repr(C)]
21815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21816pub struct RenderPassTransformBeginInfoQCOM {
21817    pub s_type: StructureType,
21818    pub next: *mut c_void,
21819    pub transform: SurfaceTransformFlagsKHR,
21820}
21821
21822impl Default for RenderPassTransformBeginInfoQCOM {
21823    #[inline]
21824    fn default() -> Self {
21825        Self {
21826            s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
21827            next: ptr::null_mut(),
21828            transform: SurfaceTransformFlagsKHR::default(),
21829        }
21830    }
21831}
21832
21833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html>
21834#[repr(C)]
21835#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21836pub struct RenderingAreaInfo {
21837    pub s_type: StructureType,
21838    pub next: *const c_void,
21839    pub view_mask: u32,
21840    pub color_attachment_count: u32,
21841    pub color_attachment_formats: *const Format,
21842    pub depth_attachment_format: Format,
21843    pub stencil_attachment_format: Format,
21844}
21845
21846impl Default for RenderingAreaInfo {
21847    #[inline]
21848    fn default() -> Self {
21849        Self {
21850            s_type: StructureType::RENDERING_AREA_INFO,
21851            next: ptr::null(),
21852            view_mask: u32::default(),
21853            color_attachment_count: u32::default(),
21854            color_attachment_formats: ptr::null(),
21855            depth_attachment_format: Format::default(),
21856            stencil_attachment_format: Format::default(),
21857        }
21858    }
21859}
21860
21861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html>
21862#[repr(C)]
21863#[derive(Copy, Clone, Debug)]
21864pub struct RenderingAttachmentInfo {
21865    pub s_type: StructureType,
21866    pub next: *const c_void,
21867    pub image_view: ImageView,
21868    pub image_layout: ImageLayout,
21869    pub resolve_mode: ResolveModeFlags,
21870    pub resolve_image_view: ImageView,
21871    pub resolve_image_layout: ImageLayout,
21872    pub load_op: AttachmentLoadOp,
21873    pub store_op: AttachmentStoreOp,
21874    pub clear_value: ClearValue,
21875}
21876
21877impl Default for RenderingAttachmentInfo {
21878    #[inline]
21879    fn default() -> Self {
21880        Self {
21881            s_type: StructureType::RENDERING_ATTACHMENT_INFO,
21882            next: ptr::null(),
21883            image_view: ImageView::default(),
21884            image_layout: ImageLayout::default(),
21885            resolve_mode: ResolveModeFlags::default(),
21886            resolve_image_view: ImageView::default(),
21887            resolve_image_layout: ImageLayout::default(),
21888            load_op: AttachmentLoadOp::default(),
21889            store_op: AttachmentStoreOp::default(),
21890            clear_value: ClearValue::default(),
21891        }
21892    }
21893}
21894
21895/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html>
21896#[repr(C)]
21897#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21898pub struct RenderingAttachmentLocationInfo {
21899    pub s_type: StructureType,
21900    pub next: *const c_void,
21901    pub color_attachment_count: u32,
21902    pub color_attachment_locations: *const u32,
21903}
21904
21905impl Default for RenderingAttachmentLocationInfo {
21906    #[inline]
21907    fn default() -> Self {
21908        Self {
21909            s_type: StructureType::RENDERING_ATTACHMENT_LOCATION_INFO,
21910            next: ptr::null(),
21911            color_attachment_count: u32::default(),
21912            color_attachment_locations: ptr::null(),
21913        }
21914    }
21915}
21916
21917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>
21918#[repr(C)]
21919#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21920pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
21921    pub s_type: StructureType,
21922    pub next: *const c_void,
21923    pub image_view: ImageView,
21924    pub image_layout: ImageLayout,
21925}
21926
21927impl Default for RenderingFragmentDensityMapAttachmentInfoEXT {
21928    #[inline]
21929    fn default() -> Self {
21930        Self {
21931            s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
21932            next: ptr::null(),
21933            image_view: ImageView::default(),
21934            image_layout: ImageLayout::default(),
21935        }
21936    }
21937}
21938
21939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>
21940#[repr(C)]
21941#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21942pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
21943    pub s_type: StructureType,
21944    pub next: *const c_void,
21945    pub image_view: ImageView,
21946    pub image_layout: ImageLayout,
21947    pub shading_rate_attachment_texel_size: Extent2D,
21948}
21949
21950impl Default for RenderingFragmentShadingRateAttachmentInfoKHR {
21951    #[inline]
21952    fn default() -> Self {
21953        Self {
21954            s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
21955            next: ptr::null(),
21956            image_view: ImageView::default(),
21957            image_layout: ImageLayout::default(),
21958            shading_rate_attachment_texel_size: Extent2D::default(),
21959        }
21960    }
21961}
21962
21963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfo.html>
21964#[repr(C)]
21965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21966pub struct RenderingInfo {
21967    pub s_type: StructureType,
21968    pub next: *const c_void,
21969    pub flags: RenderingFlags,
21970    pub render_area: Rect2D,
21971    pub layer_count: u32,
21972    pub view_mask: u32,
21973    pub color_attachment_count: u32,
21974    pub color_attachments: *const RenderingAttachmentInfo,
21975    pub depth_attachment: *const RenderingAttachmentInfo,
21976    pub stencil_attachment: *const RenderingAttachmentInfo,
21977}
21978
21979impl Default for RenderingInfo {
21980    #[inline]
21981    fn default() -> Self {
21982        Self {
21983            s_type: StructureType::RENDERING_INFO,
21984            next: ptr::null(),
21985            flags: RenderingFlags::default(),
21986            render_area: Rect2D::default(),
21987            layer_count: u32::default(),
21988            view_mask: u32::default(),
21989            color_attachment_count: u32::default(),
21990            color_attachments: ptr::null(),
21991            depth_attachment: ptr::null(),
21992            stencil_attachment: ptr::null(),
21993        }
21994    }
21995}
21996
21997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html>
21998#[repr(C)]
21999#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22000pub struct RenderingInputAttachmentIndexInfo {
22001    pub s_type: StructureType,
22002    pub next: *const c_void,
22003    pub color_attachment_count: u32,
22004    pub color_attachment_input_indices: *const u32,
22005    pub depth_input_attachment_index: *const u32,
22006    pub stencil_input_attachment_index: *const u32,
22007}
22008
22009impl Default for RenderingInputAttachmentIndexInfo {
22010    #[inline]
22011    fn default() -> Self {
22012        Self {
22013            s_type: StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO,
22014            next: ptr::null(),
22015            color_attachment_count: u32::default(),
22016            color_attachment_input_indices: ptr::null(),
22017            depth_input_attachment_index: ptr::null(),
22018            stencil_input_attachment_index: ptr::null(),
22019        }
22020    }
22021}
22022
22023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2.html>
22024#[repr(C)]
22025#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22026pub struct ResolveImageInfo2 {
22027    pub s_type: StructureType,
22028    pub next: *const c_void,
22029    pub src_image: Image,
22030    pub src_image_layout: ImageLayout,
22031    pub dst_image: Image,
22032    pub dst_image_layout: ImageLayout,
22033    pub region_count: u32,
22034    pub regions: *const ImageResolve2,
22035}
22036
22037impl Default for ResolveImageInfo2 {
22038    #[inline]
22039    fn default() -> Self {
22040        Self {
22041            s_type: StructureType::RESOLVE_IMAGE_INFO_2,
22042            next: ptr::null(),
22043            src_image: Image::default(),
22044            src_image_layout: ImageLayout::default(),
22045            dst_image: Image::default(),
22046            dst_image_layout: ImageLayout::default(),
22047            region_count: u32::default(),
22048            regions: ptr::null(),
22049        }
22050    }
22051}
22052
22053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSRTDataNV.html>
22054#[repr(C)]
22055#[derive(Copy, Clone, Default, Debug, PartialEq)]
22056pub struct SRTDataNV {
22057    pub sx: f32,
22058    pub a: f32,
22059    pub b: f32,
22060    pub pvx: f32,
22061    pub sy: f32,
22062    pub c: f32,
22063    pub pvy: f32,
22064    pub sz: f32,
22065    pub pvz: f32,
22066    pub qx: f32,
22067    pub qy: f32,
22068    pub qz: f32,
22069    pub qw: f32,
22070    pub tx: f32,
22071    pub ty: f32,
22072    pub tz: f32,
22073}
22074
22075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationEXT.html>
22076#[repr(C)]
22077#[derive(Copy, Clone, Default, Debug, PartialEq)]
22078pub struct SampleLocationEXT {
22079    pub x: f32,
22080    pub y: f32,
22081}
22082
22083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html>
22084#[repr(C)]
22085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22086pub struct SampleLocationsInfoEXT {
22087    pub s_type: StructureType,
22088    pub next: *const c_void,
22089    pub sample_locations_per_pixel: SampleCountFlags,
22090    pub sample_location_grid_size: Extent2D,
22091    pub sample_locations_count: u32,
22092    pub sample_locations: *const SampleLocationEXT,
22093}
22094
22095impl Default for SampleLocationsInfoEXT {
22096    #[inline]
22097    fn default() -> Self {
22098        Self {
22099            s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
22100            next: ptr::null(),
22101            sample_locations_per_pixel: SampleCountFlags::default(),
22102            sample_location_grid_size: Extent2D::default(),
22103            sample_locations_count: u32::default(),
22104            sample_locations: ptr::null(),
22105        }
22106    }
22107}
22108
22109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html>
22110#[repr(C)]
22111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22112pub struct SamplerBlockMatchWindowCreateInfoQCOM {
22113    pub s_type: StructureType,
22114    pub next: *const c_void,
22115    pub window_extent: Extent2D,
22116    pub window_compare_mode: BlockMatchWindowCompareModeQCOM,
22117}
22118
22119impl Default for SamplerBlockMatchWindowCreateInfoQCOM {
22120    #[inline]
22121    fn default() -> Self {
22122        Self {
22123            s_type: StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM,
22124            next: ptr::null(),
22125            window_extent: Extent2D::default(),
22126            window_compare_mode: BlockMatchWindowCompareModeQCOM::default(),
22127        }
22128    }
22129}
22130
22131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>
22132#[repr(C)]
22133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22134pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
22135    pub s_type: StructureType,
22136    pub next: *const c_void,
22137    pub components: ComponentMapping,
22138    pub srgb: Bool32,
22139}
22140
22141impl Default for SamplerBorderColorComponentMappingCreateInfoEXT {
22142    #[inline]
22143    fn default() -> Self {
22144        Self {
22145            s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
22146            next: ptr::null(),
22147            components: ComponentMapping::default(),
22148            srgb: Bool32::default(),
22149        }
22150    }
22151}
22152
22153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html>
22154#[repr(C)]
22155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22156pub struct SamplerCaptureDescriptorDataInfoEXT {
22157    pub s_type: StructureType,
22158    pub next: *const c_void,
22159    pub sampler: Sampler,
22160}
22161
22162impl Default for SamplerCaptureDescriptorDataInfoEXT {
22163    #[inline]
22164    fn default() -> Self {
22165        Self {
22166            s_type: StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
22167            next: ptr::null(),
22168            sampler: Sampler::default(),
22169        }
22170    }
22171}
22172
22173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html>
22174#[repr(C)]
22175#[derive(Copy, Clone, Debug, PartialEq)]
22176pub struct SamplerCreateInfo {
22177    pub s_type: StructureType,
22178    pub next: *const c_void,
22179    pub flags: SamplerCreateFlags,
22180    pub mag_filter: Filter,
22181    pub min_filter: Filter,
22182    pub mipmap_mode: SamplerMipmapMode,
22183    pub address_mode_u: SamplerAddressMode,
22184    pub address_mode_v: SamplerAddressMode,
22185    pub address_mode_w: SamplerAddressMode,
22186    pub mip_lod_bias: f32,
22187    pub anisotropy_enable: Bool32,
22188    pub max_anisotropy: f32,
22189    pub compare_enable: Bool32,
22190    pub compare_op: CompareOp,
22191    pub min_lod: f32,
22192    pub max_lod: f32,
22193    pub border_color: BorderColor,
22194    pub unnormalized_coordinates: Bool32,
22195}
22196
22197impl Default for SamplerCreateInfo {
22198    #[inline]
22199    fn default() -> Self {
22200        Self {
22201            s_type: StructureType::SAMPLER_CREATE_INFO,
22202            next: ptr::null(),
22203            flags: SamplerCreateFlags::default(),
22204            mag_filter: Filter::default(),
22205            min_filter: Filter::default(),
22206            mipmap_mode: SamplerMipmapMode::default(),
22207            address_mode_u: SamplerAddressMode::default(),
22208            address_mode_v: SamplerAddressMode::default(),
22209            address_mode_w: SamplerAddressMode::default(),
22210            mip_lod_bias: f32::default(),
22211            anisotropy_enable: Bool32::default(),
22212            max_anisotropy: f32::default(),
22213            compare_enable: Bool32::default(),
22214            compare_op: CompareOp::default(),
22215            min_lod: f32::default(),
22216            max_lod: f32::default(),
22217            border_color: BorderColor::default(),
22218            unnormalized_coordinates: Bool32::default(),
22219        }
22220    }
22221}
22222
22223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html>
22224#[repr(C)]
22225#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22226pub struct SamplerCubicWeightsCreateInfoQCOM {
22227    pub s_type: StructureType,
22228    pub next: *const c_void,
22229    pub cubic_weights: CubicFilterWeightsQCOM,
22230}
22231
22232impl Default for SamplerCubicWeightsCreateInfoQCOM {
22233    #[inline]
22234    fn default() -> Self {
22235        Self {
22236            s_type: StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM,
22237            next: ptr::null(),
22238            cubic_weights: CubicFilterWeightsQCOM::default(),
22239        }
22240    }
22241}
22242
22243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>
22244#[repr(C)]
22245#[derive(Copy, Clone, Debug)]
22246pub struct SamplerCustomBorderColorCreateInfoEXT {
22247    pub s_type: StructureType,
22248    pub next: *const c_void,
22249    pub custom_border_color: ClearColorValue,
22250    pub format: Format,
22251}
22252
22253impl Default for SamplerCustomBorderColorCreateInfoEXT {
22254    #[inline]
22255    fn default() -> Self {
22256        Self {
22257            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
22258            next: ptr::null(),
22259            custom_border_color: ClearColorValue::default(),
22260            format: Format::default(),
22261        }
22262    }
22263}
22264
22265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html>
22266#[repr(C)]
22267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22268pub struct SamplerReductionModeCreateInfo {
22269    pub s_type: StructureType,
22270    pub next: *const c_void,
22271    pub reduction_mode: SamplerReductionMode,
22272}
22273
22274impl Default for SamplerReductionModeCreateInfo {
22275    #[inline]
22276    fn default() -> Self {
22277        Self {
22278            s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
22279            next: ptr::null(),
22280            reduction_mode: SamplerReductionMode::default(),
22281        }
22282    }
22283}
22284
22285/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html>
22286#[repr(C)]
22287#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22288pub struct SamplerYcbcrConversionCreateInfo {
22289    pub s_type: StructureType,
22290    pub next: *const c_void,
22291    pub format: Format,
22292    pub ycbcr_model: SamplerYcbcrModelConversion,
22293    pub ycbcr_range: SamplerYcbcrRange,
22294    pub components: ComponentMapping,
22295    pub x_chroma_offset: ChromaLocation,
22296    pub y_chroma_offset: ChromaLocation,
22297    pub chroma_filter: Filter,
22298    pub force_explicit_reconstruction: Bool32,
22299}
22300
22301impl Default for SamplerYcbcrConversionCreateInfo {
22302    #[inline]
22303    fn default() -> Self {
22304        Self {
22305            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
22306            next: ptr::null(),
22307            format: Format::default(),
22308            ycbcr_model: SamplerYcbcrModelConversion::default(),
22309            ycbcr_range: SamplerYcbcrRange::default(),
22310            components: ComponentMapping::default(),
22311            x_chroma_offset: ChromaLocation::default(),
22312            y_chroma_offset: ChromaLocation::default(),
22313            chroma_filter: Filter::default(),
22314            force_explicit_reconstruction: Bool32::default(),
22315        }
22316    }
22317}
22318
22319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>
22320#[repr(C)]
22321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22322pub struct SamplerYcbcrConversionImageFormatProperties {
22323    pub s_type: StructureType,
22324    pub next: *mut c_void,
22325    pub combined_image_sampler_descriptor_count: u32,
22326}
22327
22328impl Default for SamplerYcbcrConversionImageFormatProperties {
22329    #[inline]
22330    fn default() -> Self {
22331        Self {
22332            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
22333            next: ptr::null_mut(),
22334            combined_image_sampler_descriptor_count: u32::default(),
22335        }
22336    }
22337}
22338
22339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html>
22340#[repr(C)]
22341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22342pub struct SamplerYcbcrConversionInfo {
22343    pub s_type: StructureType,
22344    pub next: *const c_void,
22345    pub conversion: SamplerYcbcrConversion,
22346}
22347
22348impl Default for SamplerYcbcrConversionInfo {
22349    #[inline]
22350    fn default() -> Self {
22351        Self {
22352            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
22353            next: ptr::null(),
22354            conversion: SamplerYcbcrConversion::default(),
22355        }
22356    }
22357}
22358
22359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html>
22360#[repr(C)]
22361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22362pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
22363    pub s_type: StructureType,
22364    pub next: *mut c_void,
22365    pub enable_y_degamma: Bool32,
22366    pub enable_cb_cr_degamma: Bool32,
22367}
22368
22369impl Default for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
22370    #[inline]
22371    fn default() -> Self {
22372        Self {
22373            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM,
22374            next: ptr::null_mut(),
22375            enable_y_degamma: Bool32::default(),
22376            enable_cb_cr_degamma: Bool32::default(),
22377        }
22378    }
22379}
22380
22381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSciSyncAttributesInfoNV.html>
22382#[repr(C)]
22383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22384pub struct SciSyncAttributesInfoNV {
22385    pub s_type: StructureType,
22386    pub next: *const c_void,
22387    pub client_type: SciSyncClientTypeNV,
22388    pub primitive_type: SciSyncPrimitiveTypeNV,
22389}
22390
22391impl Default for SciSyncAttributesInfoNV {
22392    #[inline]
22393    fn default() -> Self {
22394        Self {
22395            s_type: StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV,
22396            next: ptr::null(),
22397            client_type: SciSyncClientTypeNV::default(),
22398            primitive_type: SciSyncPrimitiveTypeNV::default(),
22399        }
22400    }
22401}
22402
22403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html>
22404#[repr(C)]
22405#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22406pub struct ScreenBufferFormatPropertiesQNX {
22407    pub s_type: StructureType,
22408    pub next: *mut c_void,
22409    pub format: Format,
22410    pub external_format: u64,
22411    pub screen_usage: u64,
22412    pub format_features: FormatFeatureFlags,
22413    pub sampler_ycbcr_conversion_components: ComponentMapping,
22414    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
22415    pub suggested_ycbcr_range: SamplerYcbcrRange,
22416    pub suggested_x_chroma_offset: ChromaLocation,
22417    pub suggested_y_chroma_offset: ChromaLocation,
22418}
22419
22420impl Default for ScreenBufferFormatPropertiesQNX {
22421    #[inline]
22422    fn default() -> Self {
22423        Self {
22424            s_type: StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX,
22425            next: ptr::null_mut(),
22426            format: Format::default(),
22427            external_format: u64::default(),
22428            screen_usage: u64::default(),
22429            format_features: FormatFeatureFlags::default(),
22430            sampler_ycbcr_conversion_components: ComponentMapping::default(),
22431            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
22432            suggested_ycbcr_range: SamplerYcbcrRange::default(),
22433            suggested_x_chroma_offset: ChromaLocation::default(),
22434            suggested_y_chroma_offset: ChromaLocation::default(),
22435        }
22436    }
22437}
22438
22439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html>
22440#[repr(C)]
22441#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22442pub struct ScreenBufferPropertiesQNX {
22443    pub s_type: StructureType,
22444    pub next: *mut c_void,
22445    pub allocation_size: DeviceSize,
22446    pub memory_type_bits: u32,
22447}
22448
22449impl Default for ScreenBufferPropertiesQNX {
22450    #[inline]
22451    fn default() -> Self {
22452        Self {
22453            s_type: StructureType::SCREEN_BUFFER_PROPERTIES_QNX,
22454            next: ptr::null_mut(),
22455            allocation_size: DeviceSize::default(),
22456            memory_type_bits: u32::default(),
22457        }
22458    }
22459}
22460
22461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html>
22462#[repr(C)]
22463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22464pub struct ScreenSurfaceCreateInfoQNX {
22465    pub s_type: StructureType,
22466    pub next: *const c_void,
22467    pub flags: ScreenSurfaceCreateFlagsQNX,
22468    pub context: *mut _screen_context,
22469    pub window: *mut _screen_window,
22470}
22471
22472impl Default for ScreenSurfaceCreateInfoQNX {
22473    #[inline]
22474    fn default() -> Self {
22475        Self {
22476            s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
22477            next: ptr::null(),
22478            flags: ScreenSurfaceCreateFlagsQNX::default(),
22479            context: ptr::null_mut(),
22480            window: ptr::null_mut(),
22481        }
22482    }
22483}
22484
22485/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html>
22486#[repr(C)]
22487#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22488pub struct SemaphoreCreateInfo {
22489    pub s_type: StructureType,
22490    pub next: *const c_void,
22491    pub flags: SemaphoreCreateFlags,
22492}
22493
22494impl Default for SemaphoreCreateInfo {
22495    #[inline]
22496    fn default() -> Self {
22497        Self {
22498            s_type: StructureType::SEMAPHORE_CREATE_INFO,
22499            next: ptr::null(),
22500            flags: SemaphoreCreateFlags::default(),
22501        }
22502    }
22503}
22504
22505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html>
22506#[repr(C)]
22507#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22508pub struct SemaphoreGetFdInfoKHR {
22509    pub s_type: StructureType,
22510    pub next: *const c_void,
22511    pub semaphore: Semaphore,
22512    pub handle_type: ExternalSemaphoreHandleTypeFlags,
22513}
22514
22515impl Default for SemaphoreGetFdInfoKHR {
22516    #[inline]
22517    fn default() -> Self {
22518        Self {
22519            s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
22520            next: ptr::null(),
22521            semaphore: Semaphore::default(),
22522            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
22523        }
22524    }
22525}
22526
22527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetSciSyncInfoNV.html>
22528#[repr(C)]
22529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22530pub struct SemaphoreGetSciSyncInfoNV {
22531    pub s_type: StructureType,
22532    pub next: *const c_void,
22533    pub semaphore: Semaphore,
22534    pub handle_type: ExternalSemaphoreHandleTypeFlags,
22535}
22536
22537impl Default for SemaphoreGetSciSyncInfoNV {
22538    #[inline]
22539    fn default() -> Self {
22540        Self {
22541            s_type: StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV,
22542            next: ptr::null(),
22543            semaphore: Semaphore::default(),
22544            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
22545        }
22546    }
22547}
22548
22549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>
22550#[repr(C)]
22551#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22552pub struct SemaphoreGetWin32HandleInfoKHR {
22553    pub s_type: StructureType,
22554    pub next: *const c_void,
22555    pub semaphore: Semaphore,
22556    pub handle_type: ExternalSemaphoreHandleTypeFlags,
22557}
22558
22559impl Default for SemaphoreGetWin32HandleInfoKHR {
22560    #[inline]
22561    fn default() -> Self {
22562        Self {
22563            s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
22564            next: ptr::null(),
22565            semaphore: Semaphore::default(),
22566            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
22567        }
22568    }
22569}
22570
22571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>
22572#[repr(C)]
22573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22574pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
22575    pub s_type: StructureType,
22576    pub next: *const c_void,
22577    pub semaphore: Semaphore,
22578    pub handle_type: ExternalSemaphoreHandleTypeFlags,
22579}
22580
22581impl Default for SemaphoreGetZirconHandleInfoFUCHSIA {
22582    #[inline]
22583    fn default() -> Self {
22584        Self {
22585            s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
22586            next: ptr::null(),
22587            semaphore: Semaphore::default(),
22588            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
22589        }
22590    }
22591}
22592
22593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncCreateInfoNV.html>
22594#[repr(C)]
22595#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22596pub struct SemaphoreSciSyncCreateInfoNV {
22597    pub s_type: StructureType,
22598    pub next: *const c_void,
22599    pub semaphore_pool: SemaphoreSciSyncPoolNV,
22600    pub fence: *const NvSciSyncFence,
22601}
22602
22603impl Default for SemaphoreSciSyncCreateInfoNV {
22604    #[inline]
22605    fn default() -> Self {
22606        Self {
22607            s_type: StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV,
22608            next: ptr::null(),
22609            semaphore_pool: SemaphoreSciSyncPoolNV::default(),
22610            fence: ptr::null(),
22611        }
22612    }
22613}
22614
22615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolCreateInfoNV.html>
22616#[repr(C)]
22617#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22618pub struct SemaphoreSciSyncPoolCreateInfoNV {
22619    pub s_type: StructureType,
22620    pub next: *const c_void,
22621    pub handle: NvSciSyncObj,
22622}
22623
22624impl Default for SemaphoreSciSyncPoolCreateInfoNV {
22625    #[inline]
22626    fn default() -> Self {
22627        Self {
22628            s_type: StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV,
22629            next: ptr::null(),
22630            handle: ptr::null_mut(),
22631        }
22632    }
22633}
22634
22635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html>
22636#[repr(C)]
22637#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22638pub struct SemaphoreSignalInfo {
22639    pub s_type: StructureType,
22640    pub next: *const c_void,
22641    pub semaphore: Semaphore,
22642    pub value: u64,
22643}
22644
22645impl Default for SemaphoreSignalInfo {
22646    #[inline]
22647    fn default() -> Self {
22648        Self {
22649            s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
22650            next: ptr::null(),
22651            semaphore: Semaphore::default(),
22652            value: u64::default(),
22653        }
22654    }
22655}
22656
22657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html>
22658#[repr(C)]
22659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22660pub struct SemaphoreSubmitInfo {
22661    pub s_type: StructureType,
22662    pub next: *const c_void,
22663    pub semaphore: Semaphore,
22664    pub value: u64,
22665    pub stage_mask: PipelineStageFlags2,
22666    pub device_index: u32,
22667}
22668
22669impl Default for SemaphoreSubmitInfo {
22670    #[inline]
22671    fn default() -> Self {
22672        Self {
22673            s_type: StructureType::SEMAPHORE_SUBMIT_INFO,
22674            next: ptr::null(),
22675            semaphore: Semaphore::default(),
22676            value: u64::default(),
22677            stage_mask: PipelineStageFlags2::default(),
22678            device_index: u32::default(),
22679        }
22680    }
22681}
22682
22683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html>
22684#[repr(C)]
22685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22686pub struct SemaphoreTypeCreateInfo {
22687    pub s_type: StructureType,
22688    pub next: *const c_void,
22689    pub semaphore_type: SemaphoreType,
22690    pub initial_value: u64,
22691}
22692
22693impl Default for SemaphoreTypeCreateInfo {
22694    #[inline]
22695    fn default() -> Self {
22696        Self {
22697            s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
22698            next: ptr::null(),
22699            semaphore_type: SemaphoreType::default(),
22700            initial_value: u64::default(),
22701        }
22702    }
22703}
22704
22705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html>
22706#[repr(C)]
22707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22708pub struct SemaphoreWaitInfo {
22709    pub s_type: StructureType,
22710    pub next: *const c_void,
22711    pub flags: SemaphoreWaitFlags,
22712    pub semaphore_count: u32,
22713    pub semaphores: *const Semaphore,
22714    pub values: *const u64,
22715}
22716
22717impl Default for SemaphoreWaitInfo {
22718    #[inline]
22719    fn default() -> Self {
22720        Self {
22721            s_type: StructureType::SEMAPHORE_WAIT_INFO,
22722            next: ptr::null(),
22723            flags: SemaphoreWaitFlags::default(),
22724            semaphore_count: u32::default(),
22725            semaphores: ptr::null(),
22726            values: ptr::null(),
22727        }
22728    }
22729}
22730
22731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html>
22732#[repr(C)]
22733#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22734pub struct SetDescriptorBufferOffsetsInfoEXT {
22735    pub s_type: StructureType,
22736    pub next: *const c_void,
22737    pub stage_flags: ShaderStageFlags,
22738    pub layout: PipelineLayout,
22739    pub first_set: u32,
22740    pub set_count: u32,
22741    pub buffer_indices: *const u32,
22742    pub offsets: *const DeviceSize,
22743}
22744
22745impl Default for SetDescriptorBufferOffsetsInfoEXT {
22746    #[inline]
22747    fn default() -> Self {
22748        Self {
22749            s_type: StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT,
22750            next: ptr::null(),
22751            stage_flags: ShaderStageFlags::default(),
22752            layout: PipelineLayout::default(),
22753            first_set: u32::default(),
22754            set_count: u32::default(),
22755            buffer_indices: ptr::null(),
22756            offsets: ptr::null(),
22757        }
22758    }
22759}
22760
22761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html>
22762#[repr(C)]
22763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22764pub struct SetLatencyMarkerInfoNV {
22765    pub s_type: StructureType,
22766    pub next: *const c_void,
22767    pub present_id: u64,
22768    pub marker: LatencyMarkerNV,
22769}
22770
22771impl Default for SetLatencyMarkerInfoNV {
22772    #[inline]
22773    fn default() -> Self {
22774        Self {
22775            s_type: StructureType::SET_LATENCY_MARKER_INFO_NV,
22776            next: ptr::null(),
22777            present_id: u64::default(),
22778            marker: LatencyMarkerNV::default(),
22779        }
22780    }
22781}
22782
22783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html>
22784#[repr(C)]
22785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22786pub struct SetPresentConfigNV {
22787    pub s_type: StructureType,
22788    pub next: *const c_void,
22789    pub num_frames_per_batch: u32,
22790    pub present_config_feedback: u32,
22791}
22792
22793impl Default for SetPresentConfigNV {
22794    #[inline]
22795    fn default() -> Self {
22796        Self {
22797            s_type: StructureType::SET_PRESENT_CONFIG_NV,
22798            next: ptr::null(),
22799            num_frames_per_batch: u32::default(),
22800            present_config_feedback: u32::default(),
22801        }
22802    }
22803}
22804
22805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html>
22806#[repr(C)]
22807#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22808pub struct SetStateFlagsIndirectCommandNV {
22809    pub data: u32,
22810}
22811
22812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html>
22813#[repr(C)]
22814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22815pub struct ShaderCreateInfoEXT {
22816    pub s_type: StructureType,
22817    pub next: *const c_void,
22818    pub flags: ShaderCreateFlagsEXT,
22819    pub stage: ShaderStageFlags,
22820    pub next_stage: ShaderStageFlags,
22821    pub code_type: ShaderCodeTypeEXT,
22822    pub code_size: usize,
22823    pub code: *const c_void,
22824    pub name: *const c_char,
22825    pub set_layout_count: u32,
22826    pub set_layouts: *const DescriptorSetLayout,
22827    pub push_constant_range_count: u32,
22828    pub push_constant_ranges: *const PushConstantRange,
22829    pub specialization_info: *const SpecializationInfo,
22830}
22831
22832impl Default for ShaderCreateInfoEXT {
22833    #[inline]
22834    fn default() -> Self {
22835        Self {
22836            s_type: StructureType::SHADER_CREATE_INFO_EXT,
22837            next: ptr::null(),
22838            flags: ShaderCreateFlagsEXT::default(),
22839            stage: ShaderStageFlags::default(),
22840            next_stage: ShaderStageFlags::default(),
22841            code_type: ShaderCodeTypeEXT::default(),
22842            code_size: usize::default(),
22843            code: ptr::null(),
22844            name: ptr::null(),
22845            set_layout_count: u32::default(),
22846            set_layouts: ptr::null(),
22847            push_constant_range_count: u32::default(),
22848            push_constant_ranges: ptr::null(),
22849            specialization_info: ptr::null(),
22850        }
22851    }
22852}
22853
22854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html>
22855#[repr(C)]
22856#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22857pub struct ShaderModuleCreateInfo {
22858    pub s_type: StructureType,
22859    pub next: *const c_void,
22860    pub flags: ShaderModuleCreateFlags,
22861    pub code_size: usize,
22862    pub code: *const u32,
22863}
22864
22865impl Default for ShaderModuleCreateInfo {
22866    #[inline]
22867    fn default() -> Self {
22868        Self {
22869            s_type: StructureType::SHADER_MODULE_CREATE_INFO,
22870            next: ptr::null(),
22871            flags: ShaderModuleCreateFlags::default(),
22872            code_size: usize::default(),
22873            code: ptr::null(),
22874        }
22875    }
22876}
22877
22878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html>
22879#[repr(C)]
22880#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22881pub struct ShaderModuleIdentifierEXT {
22882    pub s_type: StructureType,
22883    pub next: *mut c_void,
22884    pub identifier_size: u32,
22885    pub identifier: ByteArray<MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT>,
22886}
22887
22888impl Default for ShaderModuleIdentifierEXT {
22889    #[inline]
22890    fn default() -> Self {
22891        Self {
22892            s_type: StructureType::SHADER_MODULE_IDENTIFIER_EXT,
22893            next: ptr::null_mut(),
22894            identifier_size: u32::default(),
22895            identifier: ByteArray::default(),
22896        }
22897    }
22898}
22899
22900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>
22901#[repr(C)]
22902#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22903pub struct ShaderModuleValidationCacheCreateInfoEXT {
22904    pub s_type: StructureType,
22905    pub next: *const c_void,
22906    pub validation_cache: ValidationCacheEXT,
22907}
22908
22909impl Default for ShaderModuleValidationCacheCreateInfoEXT {
22910    #[inline]
22911    fn default() -> Self {
22912        Self {
22913            s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
22914            next: ptr::null(),
22915            validation_cache: ValidationCacheEXT::default(),
22916        }
22917    }
22918}
22919
22920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html>
22921#[repr(C)]
22922#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22923pub struct ShaderResourceUsageAMD {
22924    pub num_used_vgprs: u32,
22925    pub num_used_sgprs: u32,
22926    pub lds_size_per_local_work_group: u32,
22927    pub lds_usage_size_in_bytes: usize,
22928    pub scratch_mem_usage_in_bytes: usize,
22929}
22930
22931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html>
22932#[repr(C)]
22933#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22934pub struct ShaderStatisticsInfoAMD {
22935    pub shader_stage_mask: ShaderStageFlags,
22936    pub resource_usage: ShaderResourceUsageAMD,
22937    pub num_physical_vgprs: u32,
22938    pub num_physical_sgprs: u32,
22939    pub num_available_vgprs: u32,
22940    pub num_available_sgprs: u32,
22941    pub compute_work_group_size: [u32; 3],
22942}
22943
22944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html>
22945#[repr(C)]
22946#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22947pub struct ShadingRatePaletteNV {
22948    pub shading_rate_palette_entry_count: u32,
22949    pub shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
22950}
22951
22952impl Default for ShadingRatePaletteNV {
22953    #[inline]
22954    fn default() -> Self {
22955        Self {
22956            shading_rate_palette_entry_count: u32::default(),
22957            shading_rate_palette_entries: ptr::null(),
22958        }
22959    }
22960}
22961
22962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>
22963#[repr(C)]
22964#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22965pub struct SharedPresentSurfaceCapabilitiesKHR {
22966    pub s_type: StructureType,
22967    pub next: *mut c_void,
22968    pub shared_present_supported_usage_flags: ImageUsageFlags,
22969}
22970
22971impl Default for SharedPresentSurfaceCapabilitiesKHR {
22972    #[inline]
22973    fn default() -> Self {
22974        Self {
22975            s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
22976            next: ptr::null_mut(),
22977            shared_present_supported_usage_flags: ImageUsageFlags::default(),
22978        }
22979    }
22980}
22981
22982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html>
22983#[repr(C)]
22984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22985pub struct SparseBufferMemoryBindInfo {
22986    pub buffer: Buffer,
22987    pub bind_count: u32,
22988    pub binds: *const SparseMemoryBind,
22989}
22990
22991impl Default for SparseBufferMemoryBindInfo {
22992    #[inline]
22993    fn default() -> Self {
22994        Self {
22995            buffer: Buffer::default(),
22996            bind_count: u32::default(),
22997            binds: ptr::null(),
22998        }
22999    }
23000}
23001
23002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html>
23003#[repr(C)]
23004#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23005pub struct SparseImageFormatProperties {
23006    pub aspect_mask: ImageAspectFlags,
23007    pub image_granularity: Extent3D,
23008    pub flags: SparseImageFormatFlags,
23009}
23010
23011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html>
23012#[repr(C)]
23013#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23014pub struct SparseImageFormatProperties2 {
23015    pub s_type: StructureType,
23016    pub next: *mut c_void,
23017    pub properties: SparseImageFormatProperties,
23018}
23019
23020impl Default for SparseImageFormatProperties2 {
23021    #[inline]
23022    fn default() -> Self {
23023        Self {
23024            s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
23025            next: ptr::null_mut(),
23026            properties: SparseImageFormatProperties::default(),
23027        }
23028    }
23029}
23030
23031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html>
23032#[repr(C)]
23033#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23034pub struct SparseImageMemoryBind {
23035    pub subresource: ImageSubresource,
23036    pub offset: Offset3D,
23037    pub extent: Extent3D,
23038    pub memory: DeviceMemory,
23039    pub memory_offset: DeviceSize,
23040    pub flags: SparseMemoryBindFlags,
23041}
23042
23043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html>
23044#[repr(C)]
23045#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23046pub struct SparseImageMemoryBindInfo {
23047    pub image: Image,
23048    pub bind_count: u32,
23049    pub binds: *const SparseImageMemoryBind,
23050}
23051
23052impl Default for SparseImageMemoryBindInfo {
23053    #[inline]
23054    fn default() -> Self {
23055        Self {
23056            image: Image::default(),
23057            bind_count: u32::default(),
23058            binds: ptr::null(),
23059        }
23060    }
23061}
23062
23063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html>
23064#[repr(C)]
23065#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23066pub struct SparseImageMemoryRequirements {
23067    pub format_properties: SparseImageFormatProperties,
23068    pub image_mip_tail_first_lod: u32,
23069    pub image_mip_tail_size: DeviceSize,
23070    pub image_mip_tail_offset: DeviceSize,
23071    pub image_mip_tail_stride: DeviceSize,
23072}
23073
23074/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html>
23075#[repr(C)]
23076#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23077pub struct SparseImageMemoryRequirements2 {
23078    pub s_type: StructureType,
23079    pub next: *mut c_void,
23080    pub memory_requirements: SparseImageMemoryRequirements,
23081}
23082
23083impl Default for SparseImageMemoryRequirements2 {
23084    #[inline]
23085    fn default() -> Self {
23086        Self {
23087            s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
23088            next: ptr::null_mut(),
23089            memory_requirements: SparseImageMemoryRequirements::default(),
23090        }
23091    }
23092}
23093
23094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html>
23095#[repr(C)]
23096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23097pub struct SparseImageOpaqueMemoryBindInfo {
23098    pub image: Image,
23099    pub bind_count: u32,
23100    pub binds: *const SparseMemoryBind,
23101}
23102
23103impl Default for SparseImageOpaqueMemoryBindInfo {
23104    #[inline]
23105    fn default() -> Self {
23106        Self {
23107            image: Image::default(),
23108            bind_count: u32::default(),
23109            binds: ptr::null(),
23110        }
23111    }
23112}
23113
23114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBind.html>
23115#[repr(C)]
23116#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23117pub struct SparseMemoryBind {
23118    pub resource_offset: DeviceSize,
23119    pub size: DeviceSize,
23120    pub memory: DeviceMemory,
23121    pub memory_offset: DeviceSize,
23122    pub flags: SparseMemoryBindFlags,
23123}
23124
23125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationInfo.html>
23126#[repr(C)]
23127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23128pub struct SpecializationInfo {
23129    pub map_entry_count: u32,
23130    pub map_entries: *const SpecializationMapEntry,
23131    pub data_size: usize,
23132    pub data: *const c_void,
23133}
23134
23135impl Default for SpecializationInfo {
23136    #[inline]
23137    fn default() -> Self {
23138        Self {
23139            map_entry_count: u32::default(),
23140            map_entries: ptr::null(),
23141            data_size: usize::default(),
23142            data: ptr::null(),
23143        }
23144    }
23145}
23146
23147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html>
23148#[repr(C)]
23149#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23150pub struct SpecializationMapEntry {
23151    pub constant_id: u32,
23152    pub offset: u32,
23153    pub size: usize,
23154}
23155
23156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilOpState.html>
23157#[repr(C)]
23158#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23159pub struct StencilOpState {
23160    pub fail_op: StencilOp,
23161    pub pass_op: StencilOp,
23162    pub depth_fail_op: StencilOp,
23163    pub compare_op: CompareOp,
23164    pub compare_mask: u32,
23165    pub write_mask: u32,
23166    pub reference: u32,
23167}
23168
23169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>
23170#[repr(C)]
23171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23172pub struct StreamDescriptorSurfaceCreateInfoGGP {
23173    pub s_type: StructureType,
23174    pub next: *const c_void,
23175    pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
23176    pub stream_descriptor: GgpStreamDescriptor,
23177}
23178
23179impl Default for StreamDescriptorSurfaceCreateInfoGGP {
23180    #[inline]
23181    fn default() -> Self {
23182        Self {
23183            s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
23184            next: ptr::null(),
23185            flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
23186            stream_descriptor: GgpStreamDescriptor::default(),
23187        }
23188    }
23189}
23190
23191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html>
23192#[repr(C)]
23193#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23194pub struct StridedDeviceAddressNV {
23195    pub start_address: DeviceAddress,
23196    pub stride_in_bytes: DeviceSize,
23197}
23198
23199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html>
23200#[repr(C)]
23201#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23202pub struct StridedDeviceAddressRegionKHR {
23203    pub device_address: DeviceAddress,
23204    pub stride: DeviceSize,
23205    pub size: DeviceSize,
23206}
23207
23208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo.html>
23209#[repr(C)]
23210#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23211pub struct SubmitInfo {
23212    pub s_type: StructureType,
23213    pub next: *const c_void,
23214    pub wait_semaphore_count: u32,
23215    pub wait_semaphores: *const Semaphore,
23216    pub wait_dst_stage_mask: *const PipelineStageFlags,
23217    pub command_buffer_count: u32,
23218    pub command_buffers: *const CommandBuffer,
23219    pub signal_semaphore_count: u32,
23220    pub signal_semaphores: *const Semaphore,
23221}
23222
23223impl Default for SubmitInfo {
23224    #[inline]
23225    fn default() -> Self {
23226        Self {
23227            s_type: StructureType::SUBMIT_INFO,
23228            next: ptr::null(),
23229            wait_semaphore_count: u32::default(),
23230            wait_semaphores: ptr::null(),
23231            wait_dst_stage_mask: ptr::null(),
23232            command_buffer_count: u32::default(),
23233            command_buffers: ptr::null(),
23234            signal_semaphore_count: u32::default(),
23235            signal_semaphores: ptr::null(),
23236        }
23237    }
23238}
23239
23240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2.html>
23241#[repr(C)]
23242#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23243pub struct SubmitInfo2 {
23244    pub s_type: StructureType,
23245    pub next: *const c_void,
23246    pub flags: SubmitFlags,
23247    pub wait_semaphore_info_count: u32,
23248    pub wait_semaphore_infos: *const SemaphoreSubmitInfo,
23249    pub command_buffer_info_count: u32,
23250    pub command_buffer_infos: *const CommandBufferSubmitInfo,
23251    pub signal_semaphore_info_count: u32,
23252    pub signal_semaphore_infos: *const SemaphoreSubmitInfo,
23253}
23254
23255impl Default for SubmitInfo2 {
23256    #[inline]
23257    fn default() -> Self {
23258        Self {
23259            s_type: StructureType::SUBMIT_INFO_2,
23260            next: ptr::null(),
23261            flags: SubmitFlags::default(),
23262            wait_semaphore_info_count: u32::default(),
23263            wait_semaphore_infos: ptr::null(),
23264            command_buffer_info_count: u32::default(),
23265            command_buffer_infos: ptr::null(),
23266            signal_semaphore_info_count: u32::default(),
23267            signal_semaphore_infos: ptr::null(),
23268        }
23269    }
23270}
23271
23272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html>
23273#[repr(C)]
23274#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23275pub struct SubpassBeginInfo {
23276    pub s_type: StructureType,
23277    pub next: *const c_void,
23278    pub contents: SubpassContents,
23279}
23280
23281impl Default for SubpassBeginInfo {
23282    #[inline]
23283    fn default() -> Self {
23284        Self {
23285            s_type: StructureType::SUBPASS_BEGIN_INFO,
23286            next: ptr::null(),
23287            contents: SubpassContents::default(),
23288        }
23289    }
23290}
23291
23292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency.html>
23293#[repr(C)]
23294#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23295pub struct SubpassDependency {
23296    pub src_subpass: u32,
23297    pub dst_subpass: u32,
23298    pub src_stage_mask: PipelineStageFlags,
23299    pub dst_stage_mask: PipelineStageFlags,
23300    pub src_access_mask: AccessFlags,
23301    pub dst_access_mask: AccessFlags,
23302    pub dependency_flags: DependencyFlags,
23303}
23304
23305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2.html>
23306#[repr(C)]
23307#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23308pub struct SubpassDependency2 {
23309    pub s_type: StructureType,
23310    pub next: *const c_void,
23311    pub src_subpass: u32,
23312    pub dst_subpass: u32,
23313    pub src_stage_mask: PipelineStageFlags,
23314    pub dst_stage_mask: PipelineStageFlags,
23315    pub src_access_mask: AccessFlags,
23316    pub dst_access_mask: AccessFlags,
23317    pub dependency_flags: DependencyFlags,
23318    pub view_offset: i32,
23319}
23320
23321impl Default for SubpassDependency2 {
23322    #[inline]
23323    fn default() -> Self {
23324        Self {
23325            s_type: StructureType::SUBPASS_DEPENDENCY_2,
23326            next: ptr::null(),
23327            src_subpass: u32::default(),
23328            dst_subpass: u32::default(),
23329            src_stage_mask: PipelineStageFlags::default(),
23330            dst_stage_mask: PipelineStageFlags::default(),
23331            src_access_mask: AccessFlags::default(),
23332            dst_access_mask: AccessFlags::default(),
23333            dependency_flags: DependencyFlags::default(),
23334            view_offset: i32::default(),
23335        }
23336    }
23337}
23338
23339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription.html>
23340#[repr(C)]
23341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23342pub struct SubpassDescription {
23343    pub flags: SubpassDescriptionFlags,
23344    pub pipeline_bind_point: PipelineBindPoint,
23345    pub input_attachment_count: u32,
23346    pub input_attachments: *const AttachmentReference,
23347    pub color_attachment_count: u32,
23348    pub color_attachments: *const AttachmentReference,
23349    pub resolve_attachments: *const AttachmentReference,
23350    pub depth_stencil_attachment: *const AttachmentReference,
23351    pub preserve_attachment_count: u32,
23352    pub preserve_attachments: *const u32,
23353}
23354
23355impl Default for SubpassDescription {
23356    #[inline]
23357    fn default() -> Self {
23358        Self {
23359            flags: SubpassDescriptionFlags::default(),
23360            pipeline_bind_point: PipelineBindPoint::default(),
23361            input_attachment_count: u32::default(),
23362            input_attachments: ptr::null(),
23363            color_attachment_count: u32::default(),
23364            color_attachments: ptr::null(),
23365            resolve_attachments: ptr::null(),
23366            depth_stencil_attachment: ptr::null(),
23367            preserve_attachment_count: u32::default(),
23368            preserve_attachments: ptr::null(),
23369        }
23370    }
23371}
23372
23373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2.html>
23374#[repr(C)]
23375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23376pub struct SubpassDescription2 {
23377    pub s_type: StructureType,
23378    pub next: *const c_void,
23379    pub flags: SubpassDescriptionFlags,
23380    pub pipeline_bind_point: PipelineBindPoint,
23381    pub view_mask: u32,
23382    pub input_attachment_count: u32,
23383    pub input_attachments: *const AttachmentReference2,
23384    pub color_attachment_count: u32,
23385    pub color_attachments: *const AttachmentReference2,
23386    pub resolve_attachments: *const AttachmentReference2,
23387    pub depth_stencil_attachment: *const AttachmentReference2,
23388    pub preserve_attachment_count: u32,
23389    pub preserve_attachments: *const u32,
23390}
23391
23392impl Default for SubpassDescription2 {
23393    #[inline]
23394    fn default() -> Self {
23395        Self {
23396            s_type: StructureType::SUBPASS_DESCRIPTION_2,
23397            next: ptr::null(),
23398            flags: SubpassDescriptionFlags::default(),
23399            pipeline_bind_point: PipelineBindPoint::default(),
23400            view_mask: u32::default(),
23401            input_attachment_count: u32::default(),
23402            input_attachments: ptr::null(),
23403            color_attachment_count: u32::default(),
23404            color_attachments: ptr::null(),
23405            resolve_attachments: ptr::null(),
23406            depth_stencil_attachment: ptr::null(),
23407            preserve_attachment_count: u32::default(),
23408            preserve_attachments: ptr::null(),
23409        }
23410    }
23411}
23412
23413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html>
23414#[repr(C)]
23415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23416pub struct SubpassDescriptionDepthStencilResolve {
23417    pub s_type: StructureType,
23418    pub next: *const c_void,
23419    pub depth_resolve_mode: ResolveModeFlags,
23420    pub stencil_resolve_mode: ResolveModeFlags,
23421    pub depth_stencil_resolve_attachment: *const AttachmentReference2,
23422}
23423
23424impl Default for SubpassDescriptionDepthStencilResolve {
23425    #[inline]
23426    fn default() -> Self {
23427        Self {
23428            s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
23429            next: ptr::null(),
23430            depth_resolve_mode: ResolveModeFlags::default(),
23431            stencil_resolve_mode: ResolveModeFlags::default(),
23432            depth_stencil_resolve_attachment: ptr::null(),
23433        }
23434    }
23435}
23436
23437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfo.html>
23438#[repr(C)]
23439#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23440pub struct SubpassEndInfo {
23441    pub s_type: StructureType,
23442    pub next: *const c_void,
23443}
23444
23445impl Default for SubpassEndInfo {
23446    #[inline]
23447    fn default() -> Self {
23448        Self {
23449            s_type: StructureType::SUBPASS_END_INFO,
23450            next: ptr::null(),
23451        }
23452    }
23453}
23454
23455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>
23456#[repr(C)]
23457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23458pub struct SubpassFragmentDensityMapOffsetEndInfoQCOM {
23459    pub s_type: StructureType,
23460    pub next: *const c_void,
23461    pub fragment_density_offset_count: u32,
23462    pub fragment_density_offsets: *const Offset2D,
23463}
23464
23465impl Default for SubpassFragmentDensityMapOffsetEndInfoQCOM {
23466    #[inline]
23467    fn default() -> Self {
23468        Self {
23469            s_type: StructureType::SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM,
23470            next: ptr::null(),
23471            fragment_density_offset_count: u32::default(),
23472            fragment_density_offsets: ptr::null(),
23473        }
23474    }
23475}
23476
23477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html>
23478#[repr(C)]
23479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23480pub struct SubpassResolvePerformanceQueryEXT {
23481    pub s_type: StructureType,
23482    pub next: *mut c_void,
23483    pub optimal: Bool32,
23484}
23485
23486impl Default for SubpassResolvePerformanceQueryEXT {
23487    #[inline]
23488    fn default() -> Self {
23489        Self {
23490            s_type: StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT,
23491            next: ptr::null_mut(),
23492            optimal: Bool32::default(),
23493        }
23494    }
23495}
23496
23497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html>
23498#[repr(C)]
23499#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23500pub struct SubpassSampleLocationsEXT {
23501    pub subpass_index: u32,
23502    pub sample_locations_info: SampleLocationsInfoEXT,
23503}
23504
23505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>
23506#[repr(C)]
23507#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23508pub struct SubpassShadingPipelineCreateInfoHUAWEI {
23509    pub s_type: StructureType,
23510    pub next: *mut c_void,
23511    pub render_pass: RenderPass,
23512    pub subpass: u32,
23513}
23514
23515impl Default for SubpassShadingPipelineCreateInfoHUAWEI {
23516    #[inline]
23517    fn default() -> Self {
23518        Self {
23519            s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
23520            next: ptr::null_mut(),
23521            render_pass: RenderPass::default(),
23522            subpass: u32::default(),
23523        }
23524    }
23525}
23526
23527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html>
23528#[repr(C)]
23529#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23530pub struct SubresourceHostMemcpySize {
23531    pub s_type: StructureType,
23532    pub next: *mut c_void,
23533    pub size: DeviceSize,
23534}
23535
23536impl Default for SubresourceHostMemcpySize {
23537    #[inline]
23538    fn default() -> Self {
23539        Self {
23540            s_type: StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE,
23541            next: ptr::null_mut(),
23542            size: DeviceSize::default(),
23543        }
23544    }
23545}
23546
23547/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout.html>
23548#[repr(C)]
23549#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23550pub struct SubresourceLayout {
23551    pub offset: DeviceSize,
23552    pub size: DeviceSize,
23553    pub row_pitch: DeviceSize,
23554    pub array_pitch: DeviceSize,
23555    pub depth_pitch: DeviceSize,
23556}
23557
23558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2.html>
23559#[repr(C)]
23560#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23561pub struct SubresourceLayout2 {
23562    pub s_type: StructureType,
23563    pub next: *mut c_void,
23564    pub subresource_layout: SubresourceLayout,
23565}
23566
23567impl Default for SubresourceLayout2 {
23568    #[inline]
23569    fn default() -> Self {
23570        Self {
23571            s_type: StructureType::SUBRESOURCE_LAYOUT_2,
23572            next: ptr::null_mut(),
23573            subresource_layout: SubresourceLayout::default(),
23574        }
23575    }
23576}
23577
23578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html>
23579#[repr(C)]
23580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23581pub struct SurfaceCapabilities2EXT {
23582    pub s_type: StructureType,
23583    pub next: *mut c_void,
23584    pub min_image_count: u32,
23585    pub max_image_count: u32,
23586    pub current_extent: Extent2D,
23587    pub min_image_extent: Extent2D,
23588    pub max_image_extent: Extent2D,
23589    pub max_image_array_layers: u32,
23590    pub supported_transforms: SurfaceTransformFlagsKHR,
23591    pub current_transform: SurfaceTransformFlagsKHR,
23592    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
23593    pub supported_usage_flags: ImageUsageFlags,
23594    pub supported_surface_counters: SurfaceCounterFlagsEXT,
23595}
23596
23597impl Default for SurfaceCapabilities2EXT {
23598    #[inline]
23599    fn default() -> Self {
23600        Self {
23601            s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
23602            next: ptr::null_mut(),
23603            min_image_count: u32::default(),
23604            max_image_count: u32::default(),
23605            current_extent: Extent2D::default(),
23606            min_image_extent: Extent2D::default(),
23607            max_image_extent: Extent2D::default(),
23608            max_image_array_layers: u32::default(),
23609            supported_transforms: SurfaceTransformFlagsKHR::default(),
23610            current_transform: SurfaceTransformFlagsKHR::default(),
23611            supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
23612            supported_usage_flags: ImageUsageFlags::default(),
23613            supported_surface_counters: SurfaceCounterFlagsEXT::default(),
23614        }
23615    }
23616}
23617
23618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html>
23619#[repr(C)]
23620#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23621pub struct SurfaceCapabilities2KHR {
23622    pub s_type: StructureType,
23623    pub next: *mut c_void,
23624    pub surface_capabilities: SurfaceCapabilitiesKHR,
23625}
23626
23627impl Default for SurfaceCapabilities2KHR {
23628    #[inline]
23629    fn default() -> Self {
23630        Self {
23631            s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
23632            next: ptr::null_mut(),
23633            surface_capabilities: SurfaceCapabilitiesKHR::default(),
23634        }
23635    }
23636}
23637
23638/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>
23639#[repr(C)]
23640#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23641pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
23642    pub s_type: StructureType,
23643    pub next: *mut c_void,
23644    pub full_screen_exclusive_supported: Bool32,
23645}
23646
23647impl Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
23648    #[inline]
23649    fn default() -> Self {
23650        Self {
23651            s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
23652            next: ptr::null_mut(),
23653            full_screen_exclusive_supported: Bool32::default(),
23654        }
23655    }
23656}
23657
23658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html>
23659#[repr(C)]
23660#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23661pub struct SurfaceCapabilitiesKHR {
23662    pub min_image_count: u32,
23663    pub max_image_count: u32,
23664    pub current_extent: Extent2D,
23665    pub min_image_extent: Extent2D,
23666    pub max_image_extent: Extent2D,
23667    pub max_image_array_layers: u32,
23668    pub supported_transforms: SurfaceTransformFlagsKHR,
23669    pub current_transform: SurfaceTransformFlagsKHR,
23670    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
23671    pub supported_usage_flags: ImageUsageFlags,
23672}
23673
23674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html>
23675#[repr(C)]
23676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23677pub struct SurfaceCapabilitiesPresentBarrierNV {
23678    pub s_type: StructureType,
23679    pub next: *mut c_void,
23680    pub present_barrier_supported: Bool32,
23681}
23682
23683impl Default for SurfaceCapabilitiesPresentBarrierNV {
23684    #[inline]
23685    fn default() -> Self {
23686        Self {
23687            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV,
23688            next: ptr::null_mut(),
23689            present_barrier_supported: Bool32::default(),
23690        }
23691    }
23692}
23693
23694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html>
23695#[repr(C)]
23696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23697pub struct SurfaceFormat2KHR {
23698    pub s_type: StructureType,
23699    pub next: *mut c_void,
23700    pub surface_format: SurfaceFormatKHR,
23701}
23702
23703impl Default for SurfaceFormat2KHR {
23704    #[inline]
23705    fn default() -> Self {
23706        Self {
23707            s_type: StructureType::SURFACE_FORMAT_2_KHR,
23708            next: ptr::null_mut(),
23709            surface_format: SurfaceFormatKHR::default(),
23710        }
23711    }
23712}
23713
23714/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html>
23715#[repr(C)]
23716#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23717pub struct SurfaceFormatKHR {
23718    pub format: Format,
23719    pub color_space: ColorSpaceKHR,
23720}
23721
23722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>
23723#[repr(C)]
23724#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23725pub struct SurfaceFullScreenExclusiveInfoEXT {
23726    pub s_type: StructureType,
23727    pub next: *mut c_void,
23728    pub full_screen_exclusive: FullScreenExclusiveEXT,
23729}
23730
23731impl Default for SurfaceFullScreenExclusiveInfoEXT {
23732    #[inline]
23733    fn default() -> Self {
23734        Self {
23735            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
23736            next: ptr::null_mut(),
23737            full_screen_exclusive: FullScreenExclusiveEXT::default(),
23738        }
23739    }
23740}
23741
23742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>
23743#[repr(C)]
23744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23745pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
23746    pub s_type: StructureType,
23747    pub next: *const c_void,
23748    pub hmonitor: HMONITOR,
23749}
23750
23751impl Default for SurfaceFullScreenExclusiveWin32InfoEXT {
23752    #[inline]
23753    fn default() -> Self {
23754        Self {
23755            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
23756            next: ptr::null(),
23757            hmonitor: ptr::null_mut(),
23758        }
23759    }
23760}
23761
23762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityEXT.html>
23763#[repr(C)]
23764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23765pub struct SurfacePresentModeCompatibilityEXT {
23766    pub s_type: StructureType,
23767    pub next: *mut c_void,
23768    pub present_mode_count: u32,
23769    pub present_modes: *mut PresentModeKHR,
23770}
23771
23772impl Default for SurfacePresentModeCompatibilityEXT {
23773    #[inline]
23774    fn default() -> Self {
23775        Self {
23776            s_type: StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_EXT,
23777            next: ptr::null_mut(),
23778            present_mode_count: u32::default(),
23779            present_modes: ptr::null_mut(),
23780        }
23781    }
23782}
23783
23784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeEXT.html>
23785#[repr(C)]
23786#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23787pub struct SurfacePresentModeEXT {
23788    pub s_type: StructureType,
23789    pub next: *mut c_void,
23790    pub present_mode: PresentModeKHR,
23791}
23792
23793impl Default for SurfacePresentModeEXT {
23794    #[inline]
23795    fn default() -> Self {
23796        Self {
23797            s_type: StructureType::SURFACE_PRESENT_MODE_EXT,
23798            next: ptr::null_mut(),
23799            present_mode: PresentModeKHR::default(),
23800        }
23801    }
23802}
23803
23804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesEXT.html>
23805#[repr(C)]
23806#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23807pub struct SurfacePresentScalingCapabilitiesEXT {
23808    pub s_type: StructureType,
23809    pub next: *mut c_void,
23810    pub supported_present_scaling: PresentScalingFlagsEXT,
23811    pub supported_present_gravity_x: PresentGravityFlagsEXT,
23812    pub supported_present_gravity_y: PresentGravityFlagsEXT,
23813    pub min_scaled_image_extent: Extent2D,
23814    pub max_scaled_image_extent: Extent2D,
23815}
23816
23817impl Default for SurfacePresentScalingCapabilitiesEXT {
23818    #[inline]
23819    fn default() -> Self {
23820        Self {
23821            s_type: StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_EXT,
23822            next: ptr::null_mut(),
23823            supported_present_scaling: PresentScalingFlagsEXT::default(),
23824            supported_present_gravity_x: PresentGravityFlagsEXT::default(),
23825            supported_present_gravity_y: PresentGravityFlagsEXT::default(),
23826            min_scaled_image_extent: Extent2D::default(),
23827            max_scaled_image_extent: Extent2D::default(),
23828        }
23829    }
23830}
23831
23832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html>
23833#[repr(C)]
23834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23835pub struct SurfaceProtectedCapabilitiesKHR {
23836    pub s_type: StructureType,
23837    pub next: *const c_void,
23838    pub supports_protected: Bool32,
23839}
23840
23841impl Default for SurfaceProtectedCapabilitiesKHR {
23842    #[inline]
23843    fn default() -> Self {
23844        Self {
23845            s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
23846            next: ptr::null(),
23847            supports_protected: Bool32::default(),
23848        }
23849    }
23850}
23851
23852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html>
23853#[repr(C)]
23854#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23855pub struct SwapchainCounterCreateInfoEXT {
23856    pub s_type: StructureType,
23857    pub next: *const c_void,
23858    pub surface_counters: SurfaceCounterFlagsEXT,
23859}
23860
23861impl Default for SwapchainCounterCreateInfoEXT {
23862    #[inline]
23863    fn default() -> Self {
23864        Self {
23865            s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
23866            next: ptr::null(),
23867            surface_counters: SurfaceCounterFlagsEXT::default(),
23868        }
23869    }
23870}
23871
23872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html>
23873#[repr(C)]
23874#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23875pub struct SwapchainCreateInfoKHR {
23876    pub s_type: StructureType,
23877    pub next: *const c_void,
23878    pub flags: SwapchainCreateFlagsKHR,
23879    pub surface: SurfaceKHR,
23880    pub min_image_count: u32,
23881    pub image_format: Format,
23882    pub image_color_space: ColorSpaceKHR,
23883    pub image_extent: Extent2D,
23884    pub image_array_layers: u32,
23885    pub image_usage: ImageUsageFlags,
23886    pub image_sharing_mode: SharingMode,
23887    pub queue_family_index_count: u32,
23888    pub queue_family_indices: *const u32,
23889    pub pre_transform: SurfaceTransformFlagsKHR,
23890    pub composite_alpha: CompositeAlphaFlagsKHR,
23891    pub present_mode: PresentModeKHR,
23892    pub clipped: Bool32,
23893    pub old_swapchain: SwapchainKHR,
23894}
23895
23896impl Default for SwapchainCreateInfoKHR {
23897    #[inline]
23898    fn default() -> Self {
23899        Self {
23900            s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
23901            next: ptr::null(),
23902            flags: SwapchainCreateFlagsKHR::default(),
23903            surface: SurfaceKHR::default(),
23904            min_image_count: u32::default(),
23905            image_format: Format::default(),
23906            image_color_space: ColorSpaceKHR::default(),
23907            image_extent: Extent2D::default(),
23908            image_array_layers: u32::default(),
23909            image_usage: ImageUsageFlags::default(),
23910            image_sharing_mode: SharingMode::default(),
23911            queue_family_index_count: u32::default(),
23912            queue_family_indices: ptr::null(),
23913            pre_transform: SurfaceTransformFlagsKHR::default(),
23914            composite_alpha: CompositeAlphaFlagsKHR::default(),
23915            present_mode: PresentModeKHR::default(),
23916            clipped: Bool32::default(),
23917            old_swapchain: SwapchainKHR::default(),
23918        }
23919    }
23920}
23921
23922/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>
23923#[repr(C)]
23924#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23925pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
23926    pub s_type: StructureType,
23927    pub next: *const c_void,
23928    pub local_dimming_enable: Bool32,
23929}
23930
23931impl Default for SwapchainDisplayNativeHdrCreateInfoAMD {
23932    #[inline]
23933    fn default() -> Self {
23934        Self {
23935            s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
23936            next: ptr::null(),
23937            local_dimming_enable: Bool32::default(),
23938        }
23939    }
23940}
23941
23942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html>
23943#[repr(C)]
23944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23945pub struct SwapchainLatencyCreateInfoNV {
23946    pub s_type: StructureType,
23947    pub next: *const c_void,
23948    pub latency_mode_enable: Bool32,
23949}
23950
23951impl Default for SwapchainLatencyCreateInfoNV {
23952    #[inline]
23953    fn default() -> Self {
23954        Self {
23955            s_type: StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV,
23956            next: ptr::null(),
23957            latency_mode_enable: Bool32::default(),
23958        }
23959    }
23960}
23961
23962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html>
23963#[repr(C)]
23964#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23965pub struct SwapchainPresentBarrierCreateInfoNV {
23966    pub s_type: StructureType,
23967    pub next: *mut c_void,
23968    pub present_barrier_enable: Bool32,
23969}
23970
23971impl Default for SwapchainPresentBarrierCreateInfoNV {
23972    #[inline]
23973    fn default() -> Self {
23974        Self {
23975            s_type: StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV,
23976            next: ptr::null_mut(),
23977            present_barrier_enable: Bool32::default(),
23978        }
23979    }
23980}
23981
23982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoEXT.html>
23983#[repr(C)]
23984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23985pub struct SwapchainPresentFenceInfoEXT {
23986    pub s_type: StructureType,
23987    pub next: *const c_void,
23988    pub swapchain_count: u32,
23989    pub fences: *const Fence,
23990}
23991
23992impl Default for SwapchainPresentFenceInfoEXT {
23993    #[inline]
23994    fn default() -> Self {
23995        Self {
23996            s_type: StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_EXT,
23997            next: ptr::null(),
23998            swapchain_count: u32::default(),
23999            fences: ptr::null(),
24000        }
24001    }
24002}
24003
24004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoEXT.html>
24005#[repr(C)]
24006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24007pub struct SwapchainPresentModeInfoEXT {
24008    pub s_type: StructureType,
24009    pub next: *const c_void,
24010    pub swapchain_count: u32,
24011    pub present_modes: *const PresentModeKHR,
24012}
24013
24014impl Default for SwapchainPresentModeInfoEXT {
24015    #[inline]
24016    fn default() -> Self {
24017        Self {
24018            s_type: StructureType::SWAPCHAIN_PRESENT_MODE_INFO_EXT,
24019            next: ptr::null(),
24020            swapchain_count: u32::default(),
24021            present_modes: ptr::null(),
24022        }
24023    }
24024}
24025
24026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoEXT.html>
24027#[repr(C)]
24028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24029pub struct SwapchainPresentModesCreateInfoEXT {
24030    pub s_type: StructureType,
24031    pub next: *const c_void,
24032    pub present_mode_count: u32,
24033    pub present_modes: *const PresentModeKHR,
24034}
24035
24036impl Default for SwapchainPresentModesCreateInfoEXT {
24037    #[inline]
24038    fn default() -> Self {
24039        Self {
24040            s_type: StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT,
24041            next: ptr::null(),
24042            present_mode_count: u32::default(),
24043            present_modes: ptr::null(),
24044        }
24045    }
24046}
24047
24048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoEXT.html>
24049#[repr(C)]
24050#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24051pub struct SwapchainPresentScalingCreateInfoEXT {
24052    pub s_type: StructureType,
24053    pub next: *const c_void,
24054    pub scaling_behavior: PresentScalingFlagsEXT,
24055    pub present_gravity_x: PresentGravityFlagsEXT,
24056    pub present_gravity_y: PresentGravityFlagsEXT,
24057}
24058
24059impl Default for SwapchainPresentScalingCreateInfoEXT {
24060    #[inline]
24061    fn default() -> Self {
24062        Self {
24063            s_type: StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT,
24064            next: ptr::null(),
24065            scaling_behavior: PresentScalingFlagsEXT::default(),
24066            present_gravity_x: PresentGravityFlagsEXT::default(),
24067            present_gravity_y: PresentGravityFlagsEXT::default(),
24068        }
24069    }
24070}
24071
24072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html>
24073#[repr(C)]
24074#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24075pub struct SysmemColorSpaceFUCHSIA {
24076    pub s_type: StructureType,
24077    pub next: *const c_void,
24078    pub color_space: u32,
24079}
24080
24081impl Default for SysmemColorSpaceFUCHSIA {
24082    #[inline]
24083    fn default() -> Self {
24084        Self {
24085            s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
24086            next: ptr::null(),
24087            color_space: u32::default(),
24088        }
24089    }
24090}
24091
24092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html>
24093#[repr(C)]
24094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24095pub struct TextureLODGatherFormatPropertiesAMD {
24096    pub s_type: StructureType,
24097    pub next: *mut c_void,
24098    pub supports_texture_gather_lod_bias_amd: Bool32,
24099}
24100
24101impl Default for TextureLODGatherFormatPropertiesAMD {
24102    #[inline]
24103    fn default() -> Self {
24104        Self {
24105            s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
24106            next: ptr::null_mut(),
24107            supports_texture_gather_lod_bias_amd: Bool32::default(),
24108        }
24109    }
24110}
24111
24112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html>
24113#[repr(C)]
24114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24115pub struct TilePropertiesQCOM {
24116    pub s_type: StructureType,
24117    pub next: *mut c_void,
24118    pub tile_size: Extent3D,
24119    pub apron_size: Extent2D,
24120    pub origin: Offset2D,
24121}
24122
24123impl Default for TilePropertiesQCOM {
24124    #[inline]
24125    fn default() -> Self {
24126        Self {
24127            s_type: StructureType::TILE_PROPERTIES_QCOM,
24128            next: ptr::null_mut(),
24129            tile_size: Extent3D::default(),
24130            apron_size: Extent2D::default(),
24131            origin: Offset2D::default(),
24132        }
24133    }
24134}
24135
24136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html>
24137#[repr(C)]
24138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24139pub struct TimelineSemaphoreSubmitInfo {
24140    pub s_type: StructureType,
24141    pub next: *const c_void,
24142    pub wait_semaphore_value_count: u32,
24143    pub wait_semaphore_values: *const u64,
24144    pub signal_semaphore_value_count: u32,
24145    pub signal_semaphore_values: *const u64,
24146}
24147
24148impl Default for TimelineSemaphoreSubmitInfo {
24149    #[inline]
24150    fn default() -> Self {
24151        Self {
24152            s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
24153            next: ptr::null(),
24154            wait_semaphore_value_count: u32::default(),
24155            wait_semaphore_values: ptr::null(),
24156            signal_semaphore_value_count: u32::default(),
24157            signal_semaphore_values: ptr::null(),
24158        }
24159    }
24160}
24161
24162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html>
24163#[repr(C)]
24164#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24165pub struct TraceRaysIndirectCommand2KHR {
24166    pub raygen_shader_record_address: DeviceAddress,
24167    pub raygen_shader_record_size: DeviceSize,
24168    pub miss_shader_binding_table_address: DeviceAddress,
24169    pub miss_shader_binding_table_size: DeviceSize,
24170    pub miss_shader_binding_table_stride: DeviceSize,
24171    pub hit_shader_binding_table_address: DeviceAddress,
24172    pub hit_shader_binding_table_size: DeviceSize,
24173    pub hit_shader_binding_table_stride: DeviceSize,
24174    pub callable_shader_binding_table_address: DeviceAddress,
24175    pub callable_shader_binding_table_size: DeviceSize,
24176    pub callable_shader_binding_table_stride: DeviceSize,
24177    pub width: u32,
24178    pub height: u32,
24179    pub depth: u32,
24180}
24181
24182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html>
24183#[repr(C)]
24184#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24185pub struct TraceRaysIndirectCommandKHR {
24186    pub width: u32,
24187    pub height: u32,
24188    pub depth: u32,
24189}
24190
24191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html>
24192#[repr(C)]
24193#[derive(Copy, Clone, Default, Debug, PartialEq)]
24194pub struct TransformMatrixKHR {
24195    pub matrix: [[f32; 4]; 3],
24196}
24197
24198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html>
24199#[repr(C)]
24200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24201pub struct ValidationCacheCreateInfoEXT {
24202    pub s_type: StructureType,
24203    pub next: *const c_void,
24204    pub flags: ValidationCacheCreateFlagsEXT,
24205    pub initial_data_size: usize,
24206    pub initial_data: *const c_void,
24207}
24208
24209impl Default for ValidationCacheCreateInfoEXT {
24210    #[inline]
24211    fn default() -> Self {
24212        Self {
24213            s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
24214            next: ptr::null(),
24215            flags: ValidationCacheCreateFlagsEXT::default(),
24216            initial_data_size: usize::default(),
24217            initial_data: ptr::null(),
24218        }
24219    }
24220}
24221
24222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html>
24223#[repr(C)]
24224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24225pub struct ValidationFeaturesEXT {
24226    pub s_type: StructureType,
24227    pub next: *const c_void,
24228    pub enabled_validation_feature_count: u32,
24229    pub enabled_validation_features: *const ValidationFeatureEnableEXT,
24230    pub disabled_validation_feature_count: u32,
24231    pub disabled_validation_features: *const ValidationFeatureDisableEXT,
24232}
24233
24234impl Default for ValidationFeaturesEXT {
24235    #[inline]
24236    fn default() -> Self {
24237        Self {
24238            s_type: StructureType::VALIDATION_FEATURES_EXT,
24239            next: ptr::null(),
24240            enabled_validation_feature_count: u32::default(),
24241            enabled_validation_features: ptr::null(),
24242            disabled_validation_feature_count: u32::default(),
24243            disabled_validation_features: ptr::null(),
24244        }
24245    }
24246}
24247
24248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html>
24249#[repr(C)]
24250#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24251pub struct ValidationFlagsEXT {
24252    pub s_type: StructureType,
24253    pub next: *const c_void,
24254    pub disabled_validation_check_count: u32,
24255    pub disabled_validation_checks: *const ValidationCheckEXT,
24256}
24257
24258impl Default for ValidationFlagsEXT {
24259    #[inline]
24260    fn default() -> Self {
24261        Self {
24262            s_type: StructureType::VALIDATION_FLAGS_EXT,
24263            next: ptr::null(),
24264            disabled_validation_check_count: u32::default(),
24265            disabled_validation_checks: ptr::null(),
24266        }
24267    }
24268}
24269
24270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html>
24271#[repr(C)]
24272#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24273pub struct VertexInputAttributeDescription {
24274    pub location: u32,
24275    pub binding: u32,
24276    pub format: Format,
24277    pub offset: u32,
24278}
24279
24280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html>
24281#[repr(C)]
24282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24283pub struct VertexInputAttributeDescription2EXT {
24284    pub s_type: StructureType,
24285    pub next: *mut c_void,
24286    pub location: u32,
24287    pub binding: u32,
24288    pub format: Format,
24289    pub offset: u32,
24290}
24291
24292impl Default for VertexInputAttributeDescription2EXT {
24293    #[inline]
24294    fn default() -> Self {
24295        Self {
24296            s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
24297            next: ptr::null_mut(),
24298            location: u32::default(),
24299            binding: u32::default(),
24300            format: Format::default(),
24301            offset: u32::default(),
24302        }
24303    }
24304}
24305
24306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html>
24307#[repr(C)]
24308#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24309pub struct VertexInputBindingDescription {
24310    pub binding: u32,
24311    pub stride: u32,
24312    pub input_rate: VertexInputRate,
24313}
24314
24315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html>
24316#[repr(C)]
24317#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24318pub struct VertexInputBindingDescription2EXT {
24319    pub s_type: StructureType,
24320    pub next: *mut c_void,
24321    pub binding: u32,
24322    pub stride: u32,
24323    pub input_rate: VertexInputRate,
24324    pub divisor: u32,
24325}
24326
24327impl Default for VertexInputBindingDescription2EXT {
24328    #[inline]
24329    fn default() -> Self {
24330        Self {
24331            s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
24332            next: ptr::null_mut(),
24333            binding: u32::default(),
24334            stride: u32::default(),
24335            input_rate: VertexInputRate::default(),
24336            divisor: u32::default(),
24337        }
24338    }
24339}
24340
24341/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html>
24342#[repr(C)]
24343#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24344pub struct VertexInputBindingDivisorDescription {
24345    pub binding: u32,
24346    pub divisor: u32,
24347}
24348
24349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html>
24350#[repr(C)]
24351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24352pub struct ViSurfaceCreateInfoNN {
24353    pub s_type: StructureType,
24354    pub next: *const c_void,
24355    pub flags: ViSurfaceCreateFlagsNN,
24356    pub window: *mut c_void,
24357}
24358
24359impl Default for ViSurfaceCreateInfoNN {
24360    #[inline]
24361    fn default() -> Self {
24362        Self {
24363            s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
24364            next: ptr::null(),
24365            flags: ViSurfaceCreateFlagsNN::default(),
24366            window: ptr::null_mut(),
24367        }
24368    }
24369}
24370
24371/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html>
24372#[repr(C)]
24373#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24374pub struct VideoBeginCodingInfoKHR {
24375    pub s_type: StructureType,
24376    pub next: *const c_void,
24377    pub flags: VideoBeginCodingFlagsKHR,
24378    pub video_session: VideoSessionKHR,
24379    pub video_session_parameters: VideoSessionParametersKHR,
24380    pub reference_slot_count: u32,
24381    pub reference_slots: *const VideoReferenceSlotInfoKHR,
24382}
24383
24384impl Default for VideoBeginCodingInfoKHR {
24385    #[inline]
24386    fn default() -> Self {
24387        Self {
24388            s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
24389            next: ptr::null(),
24390            flags: VideoBeginCodingFlagsKHR::default(),
24391            video_session: VideoSessionKHR::default(),
24392            video_session_parameters: VideoSessionParametersKHR::default(),
24393            reference_slot_count: u32::default(),
24394            reference_slots: ptr::null(),
24395        }
24396    }
24397}
24398
24399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html>
24400#[repr(C)]
24401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24402pub struct VideoCapabilitiesKHR {
24403    pub s_type: StructureType,
24404    pub next: *mut c_void,
24405    pub flags: VideoCapabilityFlagsKHR,
24406    pub min_bitstream_buffer_offset_alignment: DeviceSize,
24407    pub min_bitstream_buffer_size_alignment: DeviceSize,
24408    pub picture_access_granularity: Extent2D,
24409    pub min_coded_extent: Extent2D,
24410    pub max_coded_extent: Extent2D,
24411    pub max_dpb_slots: u32,
24412    pub max_active_reference_pictures: u32,
24413    pub std_header_version: ExtensionProperties,
24414}
24415
24416impl Default for VideoCapabilitiesKHR {
24417    #[inline]
24418    fn default() -> Self {
24419        Self {
24420            s_type: StructureType::VIDEO_CAPABILITIES_KHR,
24421            next: ptr::null_mut(),
24422            flags: VideoCapabilityFlagsKHR::default(),
24423            min_bitstream_buffer_offset_alignment: DeviceSize::default(),
24424            min_bitstream_buffer_size_alignment: DeviceSize::default(),
24425            picture_access_granularity: Extent2D::default(),
24426            min_coded_extent: Extent2D::default(),
24427            max_coded_extent: Extent2D::default(),
24428            max_dpb_slots: u32::default(),
24429            max_active_reference_pictures: u32::default(),
24430            std_header_version: ExtensionProperties::default(),
24431        }
24432    }
24433}
24434
24435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html>
24436#[repr(C)]
24437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24438pub struct VideoCodingControlInfoKHR {
24439    pub s_type: StructureType,
24440    pub next: *const c_void,
24441    pub flags: VideoCodingControlFlagsKHR,
24442}
24443
24444impl Default for VideoCodingControlInfoKHR {
24445    #[inline]
24446    fn default() -> Self {
24447        Self {
24448            s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
24449            next: ptr::null(),
24450            flags: VideoCodingControlFlagsKHR::default(),
24451        }
24452    }
24453}
24454
24455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html>
24456#[repr(C)]
24457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24458pub struct VideoDecodeAV1CapabilitiesKHR {
24459    pub s_type: StructureType,
24460    pub next: *mut c_void,
24461    pub max_level: video::StdVideoAV1Level,
24462}
24463
24464impl Default for VideoDecodeAV1CapabilitiesKHR {
24465    #[inline]
24466    fn default() -> Self {
24467        Self {
24468            s_type: StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR,
24469            next: ptr::null_mut(),
24470            max_level: video::StdVideoAV1Level::default(),
24471        }
24472    }
24473}
24474
24475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html>
24476#[repr(C)]
24477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24478pub struct VideoDecodeAV1DpbSlotInfoKHR {
24479    pub s_type: StructureType,
24480    pub next: *const c_void,
24481    pub std_reference_info: *const video::StdVideoDecodeAV1ReferenceInfo,
24482}
24483
24484impl Default for VideoDecodeAV1DpbSlotInfoKHR {
24485    #[inline]
24486    fn default() -> Self {
24487        Self {
24488            s_type: StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR,
24489            next: ptr::null(),
24490            std_reference_info: ptr::null(),
24491        }
24492    }
24493}
24494
24495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html>
24496#[repr(C)]
24497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24498pub struct VideoDecodeAV1InlineSessionParametersInfoKHR {
24499    pub s_type: StructureType,
24500    pub next: *const c_void,
24501    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
24502}
24503
24504impl Default for VideoDecodeAV1InlineSessionParametersInfoKHR {
24505    #[inline]
24506    fn default() -> Self {
24507        Self {
24508            s_type: StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR,
24509            next: ptr::null(),
24510            std_sequence_header: ptr::null(),
24511        }
24512    }
24513}
24514
24515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html>
24516#[repr(C)]
24517#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24518pub struct VideoDecodeAV1PictureInfoKHR {
24519    pub s_type: StructureType,
24520    pub next: *const c_void,
24521    pub std_picture_info: *const video::StdVideoDecodeAV1PictureInfo,
24522    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
24523    pub frame_header_offset: u32,
24524    pub tile_count: u32,
24525    pub tile_offsets: *const u32,
24526    pub tile_sizes: *const u32,
24527}
24528
24529impl Default for VideoDecodeAV1PictureInfoKHR {
24530    #[inline]
24531    fn default() -> Self {
24532        Self {
24533            s_type: StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR,
24534            next: ptr::null(),
24535            std_picture_info: ptr::null(),
24536            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
24537            frame_header_offset: u32::default(),
24538            tile_count: u32::default(),
24539            tile_offsets: ptr::null(),
24540            tile_sizes: ptr::null(),
24541        }
24542    }
24543}
24544
24545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html>
24546#[repr(C)]
24547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24548pub struct VideoDecodeAV1ProfileInfoKHR {
24549    pub s_type: StructureType,
24550    pub next: *const c_void,
24551    pub std_profile: video::StdVideoAV1Profile,
24552    pub film_grain_support: Bool32,
24553}
24554
24555impl Default for VideoDecodeAV1ProfileInfoKHR {
24556    #[inline]
24557    fn default() -> Self {
24558        Self {
24559            s_type: StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR,
24560            next: ptr::null(),
24561            std_profile: video::StdVideoAV1Profile::default(),
24562            film_grain_support: Bool32::default(),
24563        }
24564    }
24565}
24566
24567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html>
24568#[repr(C)]
24569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24570pub struct VideoDecodeAV1SessionParametersCreateInfoKHR {
24571    pub s_type: StructureType,
24572    pub next: *const c_void,
24573    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
24574}
24575
24576impl Default for VideoDecodeAV1SessionParametersCreateInfoKHR {
24577    #[inline]
24578    fn default() -> Self {
24579        Self {
24580            s_type: StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
24581            next: ptr::null(),
24582            std_sequence_header: ptr::null(),
24583        }
24584    }
24585}
24586
24587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html>
24588#[repr(C)]
24589#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24590pub struct VideoDecodeCapabilitiesKHR {
24591    pub s_type: StructureType,
24592    pub next: *mut c_void,
24593    pub flags: VideoDecodeCapabilityFlagsKHR,
24594}
24595
24596impl Default for VideoDecodeCapabilitiesKHR {
24597    #[inline]
24598    fn default() -> Self {
24599        Self {
24600            s_type: StructureType::VIDEO_DECODE_CAPABILITIES_KHR,
24601            next: ptr::null_mut(),
24602            flags: VideoDecodeCapabilityFlagsKHR::default(),
24603        }
24604    }
24605}
24606
24607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html>
24608#[repr(C)]
24609#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24610pub struct VideoDecodeH264CapabilitiesKHR {
24611    pub s_type: StructureType,
24612    pub next: *mut c_void,
24613    pub max_level_idc: video::StdVideoH264LevelIdc,
24614    pub field_offset_granularity: Offset2D,
24615}
24616
24617impl Default for VideoDecodeH264CapabilitiesKHR {
24618    #[inline]
24619    fn default() -> Self {
24620        Self {
24621            s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR,
24622            next: ptr::null_mut(),
24623            max_level_idc: video::StdVideoH264LevelIdc::default(),
24624            field_offset_granularity: Offset2D::default(),
24625        }
24626    }
24627}
24628
24629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html>
24630#[repr(C)]
24631#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24632pub struct VideoDecodeH264DpbSlotInfoKHR {
24633    pub s_type: StructureType,
24634    pub next: *const c_void,
24635    pub std_reference_info: *const video::StdVideoDecodeH264ReferenceInfo,
24636}
24637
24638impl Default for VideoDecodeH264DpbSlotInfoKHR {
24639    #[inline]
24640    fn default() -> Self {
24641        Self {
24642            s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR,
24643            next: ptr::null(),
24644            std_reference_info: ptr::null(),
24645        }
24646    }
24647}
24648
24649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html>
24650#[repr(C)]
24651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24652pub struct VideoDecodeH264InlineSessionParametersInfoKHR {
24653    pub s_type: StructureType,
24654    pub next: *const c_void,
24655    pub std_sps: *const video::StdVideoH264SequenceParameterSet,
24656    pub std_pps: *const video::StdVideoH264PictureParameterSet,
24657}
24658
24659impl Default for VideoDecodeH264InlineSessionParametersInfoKHR {
24660    #[inline]
24661    fn default() -> Self {
24662        Self {
24663            s_type: StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR,
24664            next: ptr::null(),
24665            std_sps: ptr::null(),
24666            std_pps: ptr::null(),
24667        }
24668    }
24669}
24670
24671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html>
24672#[repr(C)]
24673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24674pub struct VideoDecodeH264PictureInfoKHR {
24675    pub s_type: StructureType,
24676    pub next: *const c_void,
24677    pub std_picture_info: *const video::StdVideoDecodeH264PictureInfo,
24678    pub slice_count: u32,
24679    pub slice_offsets: *const u32,
24680}
24681
24682impl Default for VideoDecodeH264PictureInfoKHR {
24683    #[inline]
24684    fn default() -> Self {
24685        Self {
24686            s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR,
24687            next: ptr::null(),
24688            std_picture_info: ptr::null(),
24689            slice_count: u32::default(),
24690            slice_offsets: ptr::null(),
24691        }
24692    }
24693}
24694
24695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html>
24696#[repr(C)]
24697#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24698pub struct VideoDecodeH264ProfileInfoKHR {
24699    pub s_type: StructureType,
24700    pub next: *const c_void,
24701    pub std_profile_idc: video::StdVideoH264ProfileIdc,
24702    pub picture_layout: VideoDecodeH264PictureLayoutFlagsKHR,
24703}
24704
24705impl Default for VideoDecodeH264ProfileInfoKHR {
24706    #[inline]
24707    fn default() -> Self {
24708        Self {
24709            s_type: StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR,
24710            next: ptr::null(),
24711            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
24712            picture_layout: VideoDecodeH264PictureLayoutFlagsKHR::default(),
24713        }
24714    }
24715}
24716
24717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html>
24718#[repr(C)]
24719#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24720pub struct VideoDecodeH264SessionParametersAddInfoKHR {
24721    pub s_type: StructureType,
24722    pub next: *const c_void,
24723    pub std_sps_count: u32,
24724    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
24725    pub std_pps_count: u32,
24726    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
24727}
24728
24729impl Default for VideoDecodeH264SessionParametersAddInfoKHR {
24730    #[inline]
24731    fn default() -> Self {
24732        Self {
24733            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
24734            next: ptr::null(),
24735            std_sps_count: u32::default(),
24736            std_sp_ss: ptr::null(),
24737            std_pps_count: u32::default(),
24738            std_pp_ss: ptr::null(),
24739        }
24740    }
24741}
24742
24743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html>
24744#[repr(C)]
24745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24746pub struct VideoDecodeH264SessionParametersCreateInfoKHR {
24747    pub s_type: StructureType,
24748    pub next: *const c_void,
24749    pub max_std_sps_count: u32,
24750    pub max_std_pps_count: u32,
24751    pub parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoKHR,
24752}
24753
24754impl Default for VideoDecodeH264SessionParametersCreateInfoKHR {
24755    #[inline]
24756    fn default() -> Self {
24757        Self {
24758            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
24759            next: ptr::null(),
24760            max_std_sps_count: u32::default(),
24761            max_std_pps_count: u32::default(),
24762            parameters_add_info: ptr::null(),
24763        }
24764    }
24765}
24766
24767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html>
24768#[repr(C)]
24769#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24770pub struct VideoDecodeH265CapabilitiesKHR {
24771    pub s_type: StructureType,
24772    pub next: *mut c_void,
24773    pub max_level_idc: video::StdVideoH265LevelIdc,
24774}
24775
24776impl Default for VideoDecodeH265CapabilitiesKHR {
24777    #[inline]
24778    fn default() -> Self {
24779        Self {
24780            s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR,
24781            next: ptr::null_mut(),
24782            max_level_idc: video::StdVideoH265LevelIdc::default(),
24783        }
24784    }
24785}
24786
24787/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html>
24788#[repr(C)]
24789#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24790pub struct VideoDecodeH265DpbSlotInfoKHR {
24791    pub s_type: StructureType,
24792    pub next: *const c_void,
24793    pub std_reference_info: *const video::StdVideoDecodeH265ReferenceInfo,
24794}
24795
24796impl Default for VideoDecodeH265DpbSlotInfoKHR {
24797    #[inline]
24798    fn default() -> Self {
24799        Self {
24800            s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR,
24801            next: ptr::null(),
24802            std_reference_info: ptr::null(),
24803        }
24804    }
24805}
24806
24807/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html>
24808#[repr(C)]
24809#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24810pub struct VideoDecodeH265InlineSessionParametersInfoKHR {
24811    pub s_type: StructureType,
24812    pub next: *const c_void,
24813    pub std_vps: *const video::StdVideoH265VideoParameterSet,
24814    pub std_sps: *const video::StdVideoH265SequenceParameterSet,
24815    pub std_pps: *const video::StdVideoH265PictureParameterSet,
24816}
24817
24818impl Default for VideoDecodeH265InlineSessionParametersInfoKHR {
24819    #[inline]
24820    fn default() -> Self {
24821        Self {
24822            s_type: StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR,
24823            next: ptr::null(),
24824            std_vps: ptr::null(),
24825            std_sps: ptr::null(),
24826            std_pps: ptr::null(),
24827        }
24828    }
24829}
24830
24831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html>
24832#[repr(C)]
24833#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24834pub struct VideoDecodeH265PictureInfoKHR {
24835    pub s_type: StructureType,
24836    pub next: *const c_void,
24837    pub std_picture_info: *const video::StdVideoDecodeH265PictureInfo,
24838    pub slice_segment_count: u32,
24839    pub slice_segment_offsets: *const u32,
24840}
24841
24842impl Default for VideoDecodeH265PictureInfoKHR {
24843    #[inline]
24844    fn default() -> Self {
24845        Self {
24846            s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR,
24847            next: ptr::null(),
24848            std_picture_info: ptr::null(),
24849            slice_segment_count: u32::default(),
24850            slice_segment_offsets: ptr::null(),
24851        }
24852    }
24853}
24854
24855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html>
24856#[repr(C)]
24857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24858pub struct VideoDecodeH265ProfileInfoKHR {
24859    pub s_type: StructureType,
24860    pub next: *const c_void,
24861    pub std_profile_idc: video::StdVideoH265ProfileIdc,
24862}
24863
24864impl Default for VideoDecodeH265ProfileInfoKHR {
24865    #[inline]
24866    fn default() -> Self {
24867        Self {
24868            s_type: StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR,
24869            next: ptr::null(),
24870            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
24871        }
24872    }
24873}
24874
24875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html>
24876#[repr(C)]
24877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24878pub struct VideoDecodeH265SessionParametersAddInfoKHR {
24879    pub s_type: StructureType,
24880    pub next: *const c_void,
24881    pub std_vps_count: u32,
24882    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
24883    pub std_sps_count: u32,
24884    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
24885    pub std_pps_count: u32,
24886    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
24887}
24888
24889impl Default for VideoDecodeH265SessionParametersAddInfoKHR {
24890    #[inline]
24891    fn default() -> Self {
24892        Self {
24893            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
24894            next: ptr::null(),
24895            std_vps_count: u32::default(),
24896            std_vp_ss: ptr::null(),
24897            std_sps_count: u32::default(),
24898            std_sp_ss: ptr::null(),
24899            std_pps_count: u32::default(),
24900            std_pp_ss: ptr::null(),
24901        }
24902    }
24903}
24904
24905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html>
24906#[repr(C)]
24907#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24908pub struct VideoDecodeH265SessionParametersCreateInfoKHR {
24909    pub s_type: StructureType,
24910    pub next: *const c_void,
24911    pub max_std_vps_count: u32,
24912    pub max_std_sps_count: u32,
24913    pub max_std_pps_count: u32,
24914    pub parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoKHR,
24915}
24916
24917impl Default for VideoDecodeH265SessionParametersCreateInfoKHR {
24918    #[inline]
24919    fn default() -> Self {
24920        Self {
24921            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
24922            next: ptr::null(),
24923            max_std_vps_count: u32::default(),
24924            max_std_sps_count: u32::default(),
24925            max_std_pps_count: u32::default(),
24926            parameters_add_info: ptr::null(),
24927        }
24928    }
24929}
24930
24931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html>
24932#[repr(C)]
24933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24934pub struct VideoDecodeInfoKHR {
24935    pub s_type: StructureType,
24936    pub next: *const c_void,
24937    pub flags: VideoDecodeFlagsKHR,
24938    pub src_buffer: Buffer,
24939    pub src_buffer_offset: DeviceSize,
24940    pub src_buffer_range: DeviceSize,
24941    pub dst_picture_resource: VideoPictureResourceInfoKHR,
24942    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
24943    pub reference_slot_count: u32,
24944    pub reference_slots: *const VideoReferenceSlotInfoKHR,
24945}
24946
24947impl Default for VideoDecodeInfoKHR {
24948    #[inline]
24949    fn default() -> Self {
24950        Self {
24951            s_type: StructureType::VIDEO_DECODE_INFO_KHR,
24952            next: ptr::null(),
24953            flags: VideoDecodeFlagsKHR::default(),
24954            src_buffer: Buffer::default(),
24955            src_buffer_offset: DeviceSize::default(),
24956            src_buffer_range: DeviceSize::default(),
24957            dst_picture_resource: VideoPictureResourceInfoKHR::default(),
24958            setup_reference_slot: ptr::null(),
24959            reference_slot_count: u32::default(),
24960            reference_slots: ptr::null(),
24961        }
24962    }
24963}
24964
24965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html>
24966#[repr(C)]
24967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24968pub struct VideoDecodeUsageInfoKHR {
24969    pub s_type: StructureType,
24970    pub next: *const c_void,
24971    pub video_usage_hints: VideoDecodeUsageFlagsKHR,
24972}
24973
24974impl Default for VideoDecodeUsageInfoKHR {
24975    #[inline]
24976    fn default() -> Self {
24977        Self {
24978            s_type: StructureType::VIDEO_DECODE_USAGE_INFO_KHR,
24979            next: ptr::null(),
24980            video_usage_hints: VideoDecodeUsageFlagsKHR::default(),
24981        }
24982    }
24983}
24984
24985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html>
24986#[repr(C)]
24987#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24988pub struct VideoEncodeAV1CapabilitiesKHR {
24989    pub s_type: StructureType,
24990    pub next: *mut c_void,
24991    pub flags: VideoEncodeAV1CapabilityFlagsKHR,
24992    pub max_level: video::StdVideoAV1Level,
24993    pub coded_picture_alignment: Extent2D,
24994    pub max_tiles: Extent2D,
24995    pub min_tile_size: Extent2D,
24996    pub max_tile_size: Extent2D,
24997    pub superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
24998    pub max_single_reference_count: u32,
24999    pub single_reference_name_mask: u32,
25000    pub max_unidirectional_compound_reference_count: u32,
25001    pub max_unidirectional_compound_group1_reference_count: u32,
25002    pub unidirectional_compound_reference_name_mask: u32,
25003    pub max_bidirectional_compound_reference_count: u32,
25004    pub max_bidirectional_compound_group1_reference_count: u32,
25005    pub max_bidirectional_compound_group2_reference_count: u32,
25006    pub bidirectional_compound_reference_name_mask: u32,
25007    pub max_temporal_layer_count: u32,
25008    pub max_spatial_layer_count: u32,
25009    pub max_operating_points: u32,
25010    pub min_q_index: u32,
25011    pub max_q_index: u32,
25012    pub prefers_gop_remaining_frames: Bool32,
25013    pub requires_gop_remaining_frames: Bool32,
25014    pub std_syntax_flags: VideoEncodeAV1StdFlagsKHR,
25015}
25016
25017impl Default for VideoEncodeAV1CapabilitiesKHR {
25018    #[inline]
25019    fn default() -> Self {
25020        Self {
25021            s_type: StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR,
25022            next: ptr::null_mut(),
25023            flags: VideoEncodeAV1CapabilityFlagsKHR::default(),
25024            max_level: video::StdVideoAV1Level::default(),
25025            coded_picture_alignment: Extent2D::default(),
25026            max_tiles: Extent2D::default(),
25027            min_tile_size: Extent2D::default(),
25028            max_tile_size: Extent2D::default(),
25029            superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
25030            max_single_reference_count: u32::default(),
25031            single_reference_name_mask: u32::default(),
25032            max_unidirectional_compound_reference_count: u32::default(),
25033            max_unidirectional_compound_group1_reference_count: u32::default(),
25034            unidirectional_compound_reference_name_mask: u32::default(),
25035            max_bidirectional_compound_reference_count: u32::default(),
25036            max_bidirectional_compound_group1_reference_count: u32::default(),
25037            max_bidirectional_compound_group2_reference_count: u32::default(),
25038            bidirectional_compound_reference_name_mask: u32::default(),
25039            max_temporal_layer_count: u32::default(),
25040            max_spatial_layer_count: u32::default(),
25041            max_operating_points: u32::default(),
25042            min_q_index: u32::default(),
25043            max_q_index: u32::default(),
25044            prefers_gop_remaining_frames: Bool32::default(),
25045            requires_gop_remaining_frames: Bool32::default(),
25046            std_syntax_flags: VideoEncodeAV1StdFlagsKHR::default(),
25047        }
25048    }
25049}
25050
25051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html>
25052#[repr(C)]
25053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25054pub struct VideoEncodeAV1DpbSlotInfoKHR {
25055    pub s_type: StructureType,
25056    pub next: *const c_void,
25057    pub std_reference_info: *const video::StdVideoEncodeAV1ReferenceInfo,
25058}
25059
25060impl Default for VideoEncodeAV1DpbSlotInfoKHR {
25061    #[inline]
25062    fn default() -> Self {
25063        Self {
25064            s_type: StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR,
25065            next: ptr::null(),
25066            std_reference_info: ptr::null(),
25067        }
25068    }
25069}
25070
25071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html>
25072#[repr(C)]
25073#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25074pub struct VideoEncodeAV1FrameSizeKHR {
25075    pub intra_frame_size: u32,
25076    pub predictive_frame_size: u32,
25077    pub bipredictive_frame_size: u32,
25078}
25079
25080/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html>
25081#[repr(C)]
25082#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25083pub struct VideoEncodeAV1GopRemainingFrameInfoKHR {
25084    pub s_type: StructureType,
25085    pub next: *const c_void,
25086    pub use_gop_remaining_frames: Bool32,
25087    pub gop_remaining_intra: u32,
25088    pub gop_remaining_predictive: u32,
25089    pub gop_remaining_bipredictive: u32,
25090}
25091
25092impl Default for VideoEncodeAV1GopRemainingFrameInfoKHR {
25093    #[inline]
25094    fn default() -> Self {
25095        Self {
25096            s_type: StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR,
25097            next: ptr::null(),
25098            use_gop_remaining_frames: Bool32::default(),
25099            gop_remaining_intra: u32::default(),
25100            gop_remaining_predictive: u32::default(),
25101            gop_remaining_bipredictive: u32::default(),
25102        }
25103    }
25104}
25105
25106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html>
25107#[repr(C)]
25108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25109pub struct VideoEncodeAV1PictureInfoKHR {
25110    pub s_type: StructureType,
25111    pub next: *const c_void,
25112    pub prediction_mode: VideoEncodeAV1PredictionModeKHR,
25113    pub rate_control_group: VideoEncodeAV1RateControlGroupKHR,
25114    pub constant_q_index: u32,
25115    pub std_picture_info: *const video::StdVideoEncodeAV1PictureInfo,
25116    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
25117    pub primary_reference_cdf_only: Bool32,
25118    pub generate_obu_extension_header: Bool32,
25119}
25120
25121impl Default for VideoEncodeAV1PictureInfoKHR {
25122    #[inline]
25123    fn default() -> Self {
25124        Self {
25125            s_type: StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR,
25126            next: ptr::null(),
25127            prediction_mode: VideoEncodeAV1PredictionModeKHR::default(),
25128            rate_control_group: VideoEncodeAV1RateControlGroupKHR::default(),
25129            constant_q_index: u32::default(),
25130            std_picture_info: ptr::null(),
25131            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
25132            primary_reference_cdf_only: Bool32::default(),
25133            generate_obu_extension_header: Bool32::default(),
25134        }
25135    }
25136}
25137
25138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html>
25139#[repr(C)]
25140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25141pub struct VideoEncodeAV1ProfileInfoKHR {
25142    pub s_type: StructureType,
25143    pub next: *const c_void,
25144    pub std_profile: video::StdVideoAV1Profile,
25145}
25146
25147impl Default for VideoEncodeAV1ProfileInfoKHR {
25148    #[inline]
25149    fn default() -> Self {
25150        Self {
25151            s_type: StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR,
25152            next: ptr::null(),
25153            std_profile: video::StdVideoAV1Profile::default(),
25154        }
25155    }
25156}
25157
25158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html>
25159#[repr(C)]
25160#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25161pub struct VideoEncodeAV1QIndexKHR {
25162    pub intra_q_index: u32,
25163    pub predictive_q_index: u32,
25164    pub bipredictive_q_index: u32,
25165}
25166
25167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html>
25168#[repr(C)]
25169#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25170pub struct VideoEncodeAV1QualityLevelPropertiesKHR {
25171    pub s_type: StructureType,
25172    pub next: *mut c_void,
25173    pub preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR,
25174    pub preferred_gop_frame_count: u32,
25175    pub preferred_key_frame_period: u32,
25176    pub preferred_consecutive_bipredictive_frame_count: u32,
25177    pub preferred_temporal_layer_count: u32,
25178    pub preferred_constant_q_index: VideoEncodeAV1QIndexKHR,
25179    pub preferred_max_single_reference_count: u32,
25180    pub preferred_single_reference_name_mask: u32,
25181    pub preferred_max_unidirectional_compound_reference_count: u32,
25182    pub preferred_max_unidirectional_compound_group1_reference_count: u32,
25183    pub preferred_unidirectional_compound_reference_name_mask: u32,
25184    pub preferred_max_bidirectional_compound_reference_count: u32,
25185    pub preferred_max_bidirectional_compound_group1_reference_count: u32,
25186    pub preferred_max_bidirectional_compound_group2_reference_count: u32,
25187    pub preferred_bidirectional_compound_reference_name_mask: u32,
25188}
25189
25190impl Default for VideoEncodeAV1QualityLevelPropertiesKHR {
25191    #[inline]
25192    fn default() -> Self {
25193        Self {
25194            s_type: StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR,
25195            next: ptr::null_mut(),
25196            preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR::default(),
25197            preferred_gop_frame_count: u32::default(),
25198            preferred_key_frame_period: u32::default(),
25199            preferred_consecutive_bipredictive_frame_count: u32::default(),
25200            preferred_temporal_layer_count: u32::default(),
25201            preferred_constant_q_index: VideoEncodeAV1QIndexKHR::default(),
25202            preferred_max_single_reference_count: u32::default(),
25203            preferred_single_reference_name_mask: u32::default(),
25204            preferred_max_unidirectional_compound_reference_count: u32::default(),
25205            preferred_max_unidirectional_compound_group1_reference_count: u32::default(),
25206            preferred_unidirectional_compound_reference_name_mask: u32::default(),
25207            preferred_max_bidirectional_compound_reference_count: u32::default(),
25208            preferred_max_bidirectional_compound_group1_reference_count: u32::default(),
25209            preferred_max_bidirectional_compound_group2_reference_count: u32::default(),
25210            preferred_bidirectional_compound_reference_name_mask: u32::default(),
25211        }
25212    }
25213}
25214
25215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html>
25216#[repr(C)]
25217#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25218pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHR {
25219    pub s_type: StructureType,
25220    pub next: *mut c_void,
25221    pub min_q_index_delta: i32,
25222    pub max_q_index_delta: i32,
25223}
25224
25225impl Default for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
25226    #[inline]
25227    fn default() -> Self {
25228        Self {
25229            s_type: StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR,
25230            next: ptr::null_mut(),
25231            min_q_index_delta: i32::default(),
25232            max_q_index_delta: i32::default(),
25233        }
25234    }
25235}
25236
25237/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html>
25238#[repr(C)]
25239#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25240pub struct VideoEncodeAV1RateControlInfoKHR {
25241    pub s_type: StructureType,
25242    pub next: *const c_void,
25243    pub flags: VideoEncodeAV1RateControlFlagsKHR,
25244    pub gop_frame_count: u32,
25245    pub key_frame_period: u32,
25246    pub consecutive_bipredictive_frame_count: u32,
25247    pub temporal_layer_count: u32,
25248}
25249
25250impl Default for VideoEncodeAV1RateControlInfoKHR {
25251    #[inline]
25252    fn default() -> Self {
25253        Self {
25254            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR,
25255            next: ptr::null(),
25256            flags: VideoEncodeAV1RateControlFlagsKHR::default(),
25257            gop_frame_count: u32::default(),
25258            key_frame_period: u32::default(),
25259            consecutive_bipredictive_frame_count: u32::default(),
25260            temporal_layer_count: u32::default(),
25261        }
25262    }
25263}
25264
25265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html>
25266#[repr(C)]
25267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25268pub struct VideoEncodeAV1RateControlLayerInfoKHR {
25269    pub s_type: StructureType,
25270    pub next: *const c_void,
25271    pub use_min_q_index: Bool32,
25272    pub min_q_index: VideoEncodeAV1QIndexKHR,
25273    pub use_max_q_index: Bool32,
25274    pub max_q_index: VideoEncodeAV1QIndexKHR,
25275    pub use_max_frame_size: Bool32,
25276    pub max_frame_size: VideoEncodeAV1FrameSizeKHR,
25277}
25278
25279impl Default for VideoEncodeAV1RateControlLayerInfoKHR {
25280    #[inline]
25281    fn default() -> Self {
25282        Self {
25283            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR,
25284            next: ptr::null(),
25285            use_min_q_index: Bool32::default(),
25286            min_q_index: VideoEncodeAV1QIndexKHR::default(),
25287            use_max_q_index: Bool32::default(),
25288            max_q_index: VideoEncodeAV1QIndexKHR::default(),
25289            use_max_frame_size: Bool32::default(),
25290            max_frame_size: VideoEncodeAV1FrameSizeKHR::default(),
25291        }
25292    }
25293}
25294
25295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html>
25296#[repr(C)]
25297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25298pub struct VideoEncodeAV1SessionCreateInfoKHR {
25299    pub s_type: StructureType,
25300    pub next: *const c_void,
25301    pub use_max_level: Bool32,
25302    pub max_level: video::StdVideoAV1Level,
25303}
25304
25305impl Default for VideoEncodeAV1SessionCreateInfoKHR {
25306    #[inline]
25307    fn default() -> Self {
25308        Self {
25309            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR,
25310            next: ptr::null(),
25311            use_max_level: Bool32::default(),
25312            max_level: video::StdVideoAV1Level::default(),
25313        }
25314    }
25315}
25316
25317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html>
25318#[repr(C)]
25319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25320pub struct VideoEncodeAV1SessionParametersCreateInfoKHR {
25321    pub s_type: StructureType,
25322    pub next: *const c_void,
25323    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
25324    pub std_decoder_model_info: *const video::StdVideoEncodeAV1DecoderModelInfo,
25325    pub std_operating_point_count: u32,
25326    pub std_operating_points: *const video::StdVideoEncodeAV1OperatingPointInfo,
25327}
25328
25329impl Default for VideoEncodeAV1SessionParametersCreateInfoKHR {
25330    #[inline]
25331    fn default() -> Self {
25332        Self {
25333            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
25334            next: ptr::null(),
25335            std_sequence_header: ptr::null(),
25336            std_decoder_model_info: ptr::null(),
25337            std_operating_point_count: u32::default(),
25338            std_operating_points: ptr::null(),
25339        }
25340    }
25341}
25342
25343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html>
25344#[repr(C)]
25345#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25346pub struct VideoEncodeCapabilitiesKHR {
25347    pub s_type: StructureType,
25348    pub next: *mut c_void,
25349    pub flags: VideoEncodeCapabilityFlagsKHR,
25350    pub rate_control_modes: VideoEncodeRateControlModeFlagsKHR,
25351    pub max_rate_control_layers: u32,
25352    pub max_bitrate: u64,
25353    pub max_quality_levels: u32,
25354    pub encode_input_picture_granularity: Extent2D,
25355    pub supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
25356}
25357
25358impl Default for VideoEncodeCapabilitiesKHR {
25359    #[inline]
25360    fn default() -> Self {
25361        Self {
25362            s_type: StructureType::VIDEO_ENCODE_CAPABILITIES_KHR,
25363            next: ptr::null_mut(),
25364            flags: VideoEncodeCapabilityFlagsKHR::default(),
25365            rate_control_modes: VideoEncodeRateControlModeFlagsKHR::default(),
25366            max_rate_control_layers: u32::default(),
25367            max_bitrate: u64::default(),
25368            max_quality_levels: u32::default(),
25369            encode_input_picture_granularity: Extent2D::default(),
25370            supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
25371        }
25372    }
25373}
25374
25375/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html>
25376#[repr(C)]
25377#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25378pub struct VideoEncodeH264CapabilitiesKHR {
25379    pub s_type: StructureType,
25380    pub next: *mut c_void,
25381    pub flags: VideoEncodeH264CapabilityFlagsKHR,
25382    pub max_level_idc: video::StdVideoH264LevelIdc,
25383    pub max_slice_count: u32,
25384    pub max_p_picture_l0_reference_count: u32,
25385    pub max_b_picture_l0_reference_count: u32,
25386    pub max_l1_reference_count: u32,
25387    pub max_temporal_layer_count: u32,
25388    pub expect_dyadic_temporal_layer_pattern: Bool32,
25389    pub min_qp: i32,
25390    pub max_qp: i32,
25391    pub prefers_gop_remaining_frames: Bool32,
25392    pub requires_gop_remaining_frames: Bool32,
25393    pub std_syntax_flags: VideoEncodeH264StdFlagsKHR,
25394}
25395
25396impl Default for VideoEncodeH264CapabilitiesKHR {
25397    #[inline]
25398    fn default() -> Self {
25399        Self {
25400            s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR,
25401            next: ptr::null_mut(),
25402            flags: VideoEncodeH264CapabilityFlagsKHR::default(),
25403            max_level_idc: video::StdVideoH264LevelIdc::default(),
25404            max_slice_count: u32::default(),
25405            max_p_picture_l0_reference_count: u32::default(),
25406            max_b_picture_l0_reference_count: u32::default(),
25407            max_l1_reference_count: u32::default(),
25408            max_temporal_layer_count: u32::default(),
25409            expect_dyadic_temporal_layer_pattern: Bool32::default(),
25410            min_qp: i32::default(),
25411            max_qp: i32::default(),
25412            prefers_gop_remaining_frames: Bool32::default(),
25413            requires_gop_remaining_frames: Bool32::default(),
25414            std_syntax_flags: VideoEncodeH264StdFlagsKHR::default(),
25415        }
25416    }
25417}
25418
25419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html>
25420#[repr(C)]
25421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25422pub struct VideoEncodeH264DpbSlotInfoKHR {
25423    pub s_type: StructureType,
25424    pub next: *const c_void,
25425    pub std_reference_info: *const video::StdVideoEncodeH264ReferenceInfo,
25426}
25427
25428impl Default for VideoEncodeH264DpbSlotInfoKHR {
25429    #[inline]
25430    fn default() -> Self {
25431        Self {
25432            s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR,
25433            next: ptr::null(),
25434            std_reference_info: ptr::null(),
25435        }
25436    }
25437}
25438
25439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html>
25440#[repr(C)]
25441#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25442pub struct VideoEncodeH264FrameSizeKHR {
25443    pub frame_i_size: u32,
25444    pub frame_p_size: u32,
25445    pub frame_b_size: u32,
25446}
25447
25448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html>
25449#[repr(C)]
25450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25451pub struct VideoEncodeH264GopRemainingFrameInfoKHR {
25452    pub s_type: StructureType,
25453    pub next: *const c_void,
25454    pub use_gop_remaining_frames: Bool32,
25455    pub gop_remaining_i: u32,
25456    pub gop_remaining_p: u32,
25457    pub gop_remaining_b: u32,
25458}
25459
25460impl Default for VideoEncodeH264GopRemainingFrameInfoKHR {
25461    #[inline]
25462    fn default() -> Self {
25463        Self {
25464            s_type: StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR,
25465            next: ptr::null(),
25466            use_gop_remaining_frames: Bool32::default(),
25467            gop_remaining_i: u32::default(),
25468            gop_remaining_p: u32::default(),
25469            gop_remaining_b: u32::default(),
25470        }
25471    }
25472}
25473
25474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html>
25475#[repr(C)]
25476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25477pub struct VideoEncodeH264NaluSliceInfoKHR {
25478    pub s_type: StructureType,
25479    pub next: *const c_void,
25480    pub constant_qp: i32,
25481    pub std_slice_header: *const video::StdVideoEncodeH264SliceHeader,
25482}
25483
25484impl Default for VideoEncodeH264NaluSliceInfoKHR {
25485    #[inline]
25486    fn default() -> Self {
25487        Self {
25488            s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR,
25489            next: ptr::null(),
25490            constant_qp: i32::default(),
25491            std_slice_header: ptr::null(),
25492        }
25493    }
25494}
25495
25496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html>
25497#[repr(C)]
25498#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25499pub struct VideoEncodeH264PictureInfoKHR {
25500    pub s_type: StructureType,
25501    pub next: *const c_void,
25502    pub nalu_slice_entry_count: u32,
25503    pub nalu_slice_entries: *const VideoEncodeH264NaluSliceInfoKHR,
25504    pub std_picture_info: *const video::StdVideoEncodeH264PictureInfo,
25505    pub generate_prefix_nalu: Bool32,
25506}
25507
25508impl Default for VideoEncodeH264PictureInfoKHR {
25509    #[inline]
25510    fn default() -> Self {
25511        Self {
25512            s_type: StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR,
25513            next: ptr::null(),
25514            nalu_slice_entry_count: u32::default(),
25515            nalu_slice_entries: ptr::null(),
25516            std_picture_info: ptr::null(),
25517            generate_prefix_nalu: Bool32::default(),
25518        }
25519    }
25520}
25521
25522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html>
25523#[repr(C)]
25524#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25525pub struct VideoEncodeH264ProfileInfoKHR {
25526    pub s_type: StructureType,
25527    pub next: *const c_void,
25528    pub std_profile_idc: video::StdVideoH264ProfileIdc,
25529}
25530
25531impl Default for VideoEncodeH264ProfileInfoKHR {
25532    #[inline]
25533    fn default() -> Self {
25534        Self {
25535            s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR,
25536            next: ptr::null(),
25537            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
25538        }
25539    }
25540}
25541
25542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html>
25543#[repr(C)]
25544#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25545pub struct VideoEncodeH264QpKHR {
25546    pub qp_i: i32,
25547    pub qp_p: i32,
25548    pub qp_b: i32,
25549}
25550
25551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html>
25552#[repr(C)]
25553#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25554pub struct VideoEncodeH264QualityLevelPropertiesKHR {
25555    pub s_type: StructureType,
25556    pub next: *mut c_void,
25557    pub preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR,
25558    pub preferred_gop_frame_count: u32,
25559    pub preferred_idr_period: u32,
25560    pub preferred_consecutive_b_frame_count: u32,
25561    pub preferred_temporal_layer_count: u32,
25562    pub preferred_constant_qp: VideoEncodeH264QpKHR,
25563    pub preferred_max_l0_reference_count: u32,
25564    pub preferred_max_l1_reference_count: u32,
25565    pub preferred_std_entropy_coding_mode_flag: Bool32,
25566}
25567
25568impl Default for VideoEncodeH264QualityLevelPropertiesKHR {
25569    #[inline]
25570    fn default() -> Self {
25571        Self {
25572            s_type: StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
25573            next: ptr::null_mut(),
25574            preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR::default(),
25575            preferred_gop_frame_count: u32::default(),
25576            preferred_idr_period: u32::default(),
25577            preferred_consecutive_b_frame_count: u32::default(),
25578            preferred_temporal_layer_count: u32::default(),
25579            preferred_constant_qp: VideoEncodeH264QpKHR::default(),
25580            preferred_max_l0_reference_count: u32::default(),
25581            preferred_max_l1_reference_count: u32::default(),
25582            preferred_std_entropy_coding_mode_flag: Bool32::default(),
25583        }
25584    }
25585}
25586
25587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html>
25588#[repr(C)]
25589#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25590pub struct VideoEncodeH264QuantizationMapCapabilitiesKHR {
25591    pub s_type: StructureType,
25592    pub next: *mut c_void,
25593    pub min_qp_delta: i32,
25594    pub max_qp_delta: i32,
25595}
25596
25597impl Default for VideoEncodeH264QuantizationMapCapabilitiesKHR {
25598    #[inline]
25599    fn default() -> Self {
25600        Self {
25601            s_type: StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR,
25602            next: ptr::null_mut(),
25603            min_qp_delta: i32::default(),
25604            max_qp_delta: i32::default(),
25605        }
25606    }
25607}
25608
25609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html>
25610#[repr(C)]
25611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25612pub struct VideoEncodeH264RateControlInfoKHR {
25613    pub s_type: StructureType,
25614    pub next: *const c_void,
25615    pub flags: VideoEncodeH264RateControlFlagsKHR,
25616    pub gop_frame_count: u32,
25617    pub idr_period: u32,
25618    pub consecutive_b_frame_count: u32,
25619    pub temporal_layer_count: u32,
25620}
25621
25622impl Default for VideoEncodeH264RateControlInfoKHR {
25623    #[inline]
25624    fn default() -> Self {
25625        Self {
25626            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR,
25627            next: ptr::null(),
25628            flags: VideoEncodeH264RateControlFlagsKHR::default(),
25629            gop_frame_count: u32::default(),
25630            idr_period: u32::default(),
25631            consecutive_b_frame_count: u32::default(),
25632            temporal_layer_count: u32::default(),
25633        }
25634    }
25635}
25636
25637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html>
25638#[repr(C)]
25639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25640pub struct VideoEncodeH264RateControlLayerInfoKHR {
25641    pub s_type: StructureType,
25642    pub next: *const c_void,
25643    pub use_min_qp: Bool32,
25644    pub min_qp: VideoEncodeH264QpKHR,
25645    pub use_max_qp: Bool32,
25646    pub max_qp: VideoEncodeH264QpKHR,
25647    pub use_max_frame_size: Bool32,
25648    pub max_frame_size: VideoEncodeH264FrameSizeKHR,
25649}
25650
25651impl Default for VideoEncodeH264RateControlLayerInfoKHR {
25652    #[inline]
25653    fn default() -> Self {
25654        Self {
25655            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,
25656            next: ptr::null(),
25657            use_min_qp: Bool32::default(),
25658            min_qp: VideoEncodeH264QpKHR::default(),
25659            use_max_qp: Bool32::default(),
25660            max_qp: VideoEncodeH264QpKHR::default(),
25661            use_max_frame_size: Bool32::default(),
25662            max_frame_size: VideoEncodeH264FrameSizeKHR::default(),
25663        }
25664    }
25665}
25666
25667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html>
25668#[repr(C)]
25669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25670pub struct VideoEncodeH264SessionCreateInfoKHR {
25671    pub s_type: StructureType,
25672    pub next: *const c_void,
25673    pub use_max_level_idc: Bool32,
25674    pub max_level_idc: video::StdVideoH264LevelIdc,
25675}
25676
25677impl Default for VideoEncodeH264SessionCreateInfoKHR {
25678    #[inline]
25679    fn default() -> Self {
25680        Self {
25681            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR,
25682            next: ptr::null(),
25683            use_max_level_idc: Bool32::default(),
25684            max_level_idc: video::StdVideoH264LevelIdc::default(),
25685        }
25686    }
25687}
25688
25689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html>
25690#[repr(C)]
25691#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25692pub struct VideoEncodeH264SessionParametersAddInfoKHR {
25693    pub s_type: StructureType,
25694    pub next: *const c_void,
25695    pub std_sps_count: u32,
25696    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
25697    pub std_pps_count: u32,
25698    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
25699}
25700
25701impl Default for VideoEncodeH264SessionParametersAddInfoKHR {
25702    #[inline]
25703    fn default() -> Self {
25704        Self {
25705            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
25706            next: ptr::null(),
25707            std_sps_count: u32::default(),
25708            std_sp_ss: ptr::null(),
25709            std_pps_count: u32::default(),
25710            std_pp_ss: ptr::null(),
25711        }
25712    }
25713}
25714
25715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html>
25716#[repr(C)]
25717#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25718pub struct VideoEncodeH264SessionParametersCreateInfoKHR {
25719    pub s_type: StructureType,
25720    pub next: *const c_void,
25721    pub max_std_sps_count: u32,
25722    pub max_std_pps_count: u32,
25723    pub parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoKHR,
25724}
25725
25726impl Default for VideoEncodeH264SessionParametersCreateInfoKHR {
25727    #[inline]
25728    fn default() -> Self {
25729        Self {
25730            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
25731            next: ptr::null(),
25732            max_std_sps_count: u32::default(),
25733            max_std_pps_count: u32::default(),
25734            parameters_add_info: ptr::null(),
25735        }
25736    }
25737}
25738
25739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html>
25740#[repr(C)]
25741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25742pub struct VideoEncodeH264SessionParametersFeedbackInfoKHR {
25743    pub s_type: StructureType,
25744    pub next: *mut c_void,
25745    pub has_std_sps_overrides: Bool32,
25746    pub has_std_pps_overrides: Bool32,
25747}
25748
25749impl Default for VideoEncodeH264SessionParametersFeedbackInfoKHR {
25750    #[inline]
25751    fn default() -> Self {
25752        Self {
25753            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
25754            next: ptr::null_mut(),
25755            has_std_sps_overrides: Bool32::default(),
25756            has_std_pps_overrides: Bool32::default(),
25757        }
25758    }
25759}
25760
25761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html>
25762#[repr(C)]
25763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25764pub struct VideoEncodeH264SessionParametersGetInfoKHR {
25765    pub s_type: StructureType,
25766    pub next: *const c_void,
25767    pub write_std_sps: Bool32,
25768    pub write_std_pps: Bool32,
25769    pub std_sps_id: u32,
25770    pub std_pps_id: u32,
25771}
25772
25773impl Default for VideoEncodeH264SessionParametersGetInfoKHR {
25774    #[inline]
25775    fn default() -> Self {
25776        Self {
25777            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
25778            next: ptr::null(),
25779            write_std_sps: Bool32::default(),
25780            write_std_pps: Bool32::default(),
25781            std_sps_id: u32::default(),
25782            std_pps_id: u32::default(),
25783        }
25784    }
25785}
25786
25787/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html>
25788#[repr(C)]
25789#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25790pub struct VideoEncodeH265CapabilitiesKHR {
25791    pub s_type: StructureType,
25792    pub next: *mut c_void,
25793    pub flags: VideoEncodeH265CapabilityFlagsKHR,
25794    pub max_level_idc: video::StdVideoH265LevelIdc,
25795    pub max_slice_segment_count: u32,
25796    pub max_tiles: Extent2D,
25797    pub ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
25798    pub transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR,
25799    pub max_p_picture_l0_reference_count: u32,
25800    pub max_b_picture_l0_reference_count: u32,
25801    pub max_l1_reference_count: u32,
25802    pub max_sub_layer_count: u32,
25803    pub expect_dyadic_temporal_sub_layer_pattern: Bool32,
25804    pub min_qp: i32,
25805    pub max_qp: i32,
25806    pub prefers_gop_remaining_frames: Bool32,
25807    pub requires_gop_remaining_frames: Bool32,
25808    pub std_syntax_flags: VideoEncodeH265StdFlagsKHR,
25809}
25810
25811impl Default for VideoEncodeH265CapabilitiesKHR {
25812    #[inline]
25813    fn default() -> Self {
25814        Self {
25815            s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR,
25816            next: ptr::null_mut(),
25817            flags: VideoEncodeH265CapabilityFlagsKHR::default(),
25818            max_level_idc: video::StdVideoH265LevelIdc::default(),
25819            max_slice_segment_count: u32::default(),
25820            max_tiles: Extent2D::default(),
25821            ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
25822            transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR::default(),
25823            max_p_picture_l0_reference_count: u32::default(),
25824            max_b_picture_l0_reference_count: u32::default(),
25825            max_l1_reference_count: u32::default(),
25826            max_sub_layer_count: u32::default(),
25827            expect_dyadic_temporal_sub_layer_pattern: Bool32::default(),
25828            min_qp: i32::default(),
25829            max_qp: i32::default(),
25830            prefers_gop_remaining_frames: Bool32::default(),
25831            requires_gop_remaining_frames: Bool32::default(),
25832            std_syntax_flags: VideoEncodeH265StdFlagsKHR::default(),
25833        }
25834    }
25835}
25836
25837/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html>
25838#[repr(C)]
25839#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25840pub struct VideoEncodeH265DpbSlotInfoKHR {
25841    pub s_type: StructureType,
25842    pub next: *const c_void,
25843    pub std_reference_info: *const video::StdVideoEncodeH265ReferenceInfo,
25844}
25845
25846impl Default for VideoEncodeH265DpbSlotInfoKHR {
25847    #[inline]
25848    fn default() -> Self {
25849        Self {
25850            s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR,
25851            next: ptr::null(),
25852            std_reference_info: ptr::null(),
25853        }
25854    }
25855}
25856
25857/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html>
25858#[repr(C)]
25859#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25860pub struct VideoEncodeH265FrameSizeKHR {
25861    pub frame_i_size: u32,
25862    pub frame_p_size: u32,
25863    pub frame_b_size: u32,
25864}
25865
25866/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html>
25867#[repr(C)]
25868#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25869pub struct VideoEncodeH265GopRemainingFrameInfoKHR {
25870    pub s_type: StructureType,
25871    pub next: *const c_void,
25872    pub use_gop_remaining_frames: Bool32,
25873    pub gop_remaining_i: u32,
25874    pub gop_remaining_p: u32,
25875    pub gop_remaining_b: u32,
25876}
25877
25878impl Default for VideoEncodeH265GopRemainingFrameInfoKHR {
25879    #[inline]
25880    fn default() -> Self {
25881        Self {
25882            s_type: StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR,
25883            next: ptr::null(),
25884            use_gop_remaining_frames: Bool32::default(),
25885            gop_remaining_i: u32::default(),
25886            gop_remaining_p: u32::default(),
25887            gop_remaining_b: u32::default(),
25888        }
25889    }
25890}
25891
25892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html>
25893#[repr(C)]
25894#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25895pub struct VideoEncodeH265NaluSliceSegmentInfoKHR {
25896    pub s_type: StructureType,
25897    pub next: *const c_void,
25898    pub constant_qp: i32,
25899    pub std_slice_segment_header: *const video::StdVideoEncodeH265SliceSegmentHeader,
25900}
25901
25902impl Default for VideoEncodeH265NaluSliceSegmentInfoKHR {
25903    #[inline]
25904    fn default() -> Self {
25905        Self {
25906            s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR,
25907            next: ptr::null(),
25908            constant_qp: i32::default(),
25909            std_slice_segment_header: ptr::null(),
25910        }
25911    }
25912}
25913
25914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html>
25915#[repr(C)]
25916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25917pub struct VideoEncodeH265PictureInfoKHR {
25918    pub s_type: StructureType,
25919    pub next: *const c_void,
25920    pub nalu_slice_segment_entry_count: u32,
25921    pub nalu_slice_segment_entries: *const VideoEncodeH265NaluSliceSegmentInfoKHR,
25922    pub std_picture_info: *const video::StdVideoEncodeH265PictureInfo,
25923}
25924
25925impl Default for VideoEncodeH265PictureInfoKHR {
25926    #[inline]
25927    fn default() -> Self {
25928        Self {
25929            s_type: StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR,
25930            next: ptr::null(),
25931            nalu_slice_segment_entry_count: u32::default(),
25932            nalu_slice_segment_entries: ptr::null(),
25933            std_picture_info: ptr::null(),
25934        }
25935    }
25936}
25937
25938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html>
25939#[repr(C)]
25940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25941pub struct VideoEncodeH265ProfileInfoKHR {
25942    pub s_type: StructureType,
25943    pub next: *const c_void,
25944    pub std_profile_idc: video::StdVideoH265ProfileIdc,
25945}
25946
25947impl Default for VideoEncodeH265ProfileInfoKHR {
25948    #[inline]
25949    fn default() -> Self {
25950        Self {
25951            s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR,
25952            next: ptr::null(),
25953            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
25954        }
25955    }
25956}
25957
25958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html>
25959#[repr(C)]
25960#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25961pub struct VideoEncodeH265QpKHR {
25962    pub qp_i: i32,
25963    pub qp_p: i32,
25964    pub qp_b: i32,
25965}
25966
25967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html>
25968#[repr(C)]
25969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25970pub struct VideoEncodeH265QualityLevelPropertiesKHR {
25971    pub s_type: StructureType,
25972    pub next: *mut c_void,
25973    pub preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR,
25974    pub preferred_gop_frame_count: u32,
25975    pub preferred_idr_period: u32,
25976    pub preferred_consecutive_b_frame_count: u32,
25977    pub preferred_sub_layer_count: u32,
25978    pub preferred_constant_qp: VideoEncodeH265QpKHR,
25979    pub preferred_max_l0_reference_count: u32,
25980    pub preferred_max_l1_reference_count: u32,
25981}
25982
25983impl Default for VideoEncodeH265QualityLevelPropertiesKHR {
25984    #[inline]
25985    fn default() -> Self {
25986        Self {
25987            s_type: StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR,
25988            next: ptr::null_mut(),
25989            preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR::default(),
25990            preferred_gop_frame_count: u32::default(),
25991            preferred_idr_period: u32::default(),
25992            preferred_consecutive_b_frame_count: u32::default(),
25993            preferred_sub_layer_count: u32::default(),
25994            preferred_constant_qp: VideoEncodeH265QpKHR::default(),
25995            preferred_max_l0_reference_count: u32::default(),
25996            preferred_max_l1_reference_count: u32::default(),
25997        }
25998    }
25999}
26000
26001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html>
26002#[repr(C)]
26003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26004pub struct VideoEncodeH265QuantizationMapCapabilitiesKHR {
26005    pub s_type: StructureType,
26006    pub next: *mut c_void,
26007    pub min_qp_delta: i32,
26008    pub max_qp_delta: i32,
26009}
26010
26011impl Default for VideoEncodeH265QuantizationMapCapabilitiesKHR {
26012    #[inline]
26013    fn default() -> Self {
26014        Self {
26015            s_type: StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR,
26016            next: ptr::null_mut(),
26017            min_qp_delta: i32::default(),
26018            max_qp_delta: i32::default(),
26019        }
26020    }
26021}
26022
26023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html>
26024#[repr(C)]
26025#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26026pub struct VideoEncodeH265RateControlInfoKHR {
26027    pub s_type: StructureType,
26028    pub next: *const c_void,
26029    pub flags: VideoEncodeH265RateControlFlagsKHR,
26030    pub gop_frame_count: u32,
26031    pub idr_period: u32,
26032    pub consecutive_b_frame_count: u32,
26033    pub sub_layer_count: u32,
26034}
26035
26036impl Default for VideoEncodeH265RateControlInfoKHR {
26037    #[inline]
26038    fn default() -> Self {
26039        Self {
26040            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR,
26041            next: ptr::null(),
26042            flags: VideoEncodeH265RateControlFlagsKHR::default(),
26043            gop_frame_count: u32::default(),
26044            idr_period: u32::default(),
26045            consecutive_b_frame_count: u32::default(),
26046            sub_layer_count: u32::default(),
26047        }
26048    }
26049}
26050
26051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html>
26052#[repr(C)]
26053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26054pub struct VideoEncodeH265RateControlLayerInfoKHR {
26055    pub s_type: StructureType,
26056    pub next: *const c_void,
26057    pub use_min_qp: Bool32,
26058    pub min_qp: VideoEncodeH265QpKHR,
26059    pub use_max_qp: Bool32,
26060    pub max_qp: VideoEncodeH265QpKHR,
26061    pub use_max_frame_size: Bool32,
26062    pub max_frame_size: VideoEncodeH265FrameSizeKHR,
26063}
26064
26065impl Default for VideoEncodeH265RateControlLayerInfoKHR {
26066    #[inline]
26067    fn default() -> Self {
26068        Self {
26069            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,
26070            next: ptr::null(),
26071            use_min_qp: Bool32::default(),
26072            min_qp: VideoEncodeH265QpKHR::default(),
26073            use_max_qp: Bool32::default(),
26074            max_qp: VideoEncodeH265QpKHR::default(),
26075            use_max_frame_size: Bool32::default(),
26076            max_frame_size: VideoEncodeH265FrameSizeKHR::default(),
26077        }
26078    }
26079}
26080
26081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html>
26082#[repr(C)]
26083#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26084pub struct VideoEncodeH265SessionCreateInfoKHR {
26085    pub s_type: StructureType,
26086    pub next: *const c_void,
26087    pub use_max_level_idc: Bool32,
26088    pub max_level_idc: video::StdVideoH265LevelIdc,
26089}
26090
26091impl Default for VideoEncodeH265SessionCreateInfoKHR {
26092    #[inline]
26093    fn default() -> Self {
26094        Self {
26095            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR,
26096            next: ptr::null(),
26097            use_max_level_idc: Bool32::default(),
26098            max_level_idc: video::StdVideoH265LevelIdc::default(),
26099        }
26100    }
26101}
26102
26103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html>
26104#[repr(C)]
26105#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26106pub struct VideoEncodeH265SessionParametersAddInfoKHR {
26107    pub s_type: StructureType,
26108    pub next: *const c_void,
26109    pub std_vps_count: u32,
26110    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
26111    pub std_sps_count: u32,
26112    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
26113    pub std_pps_count: u32,
26114    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
26115}
26116
26117impl Default for VideoEncodeH265SessionParametersAddInfoKHR {
26118    #[inline]
26119    fn default() -> Self {
26120        Self {
26121            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
26122            next: ptr::null(),
26123            std_vps_count: u32::default(),
26124            std_vp_ss: ptr::null(),
26125            std_sps_count: u32::default(),
26126            std_sp_ss: ptr::null(),
26127            std_pps_count: u32::default(),
26128            std_pp_ss: ptr::null(),
26129        }
26130    }
26131}
26132
26133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html>
26134#[repr(C)]
26135#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26136pub struct VideoEncodeH265SessionParametersCreateInfoKHR {
26137    pub s_type: StructureType,
26138    pub next: *const c_void,
26139    pub max_std_vps_count: u32,
26140    pub max_std_sps_count: u32,
26141    pub max_std_pps_count: u32,
26142    pub parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoKHR,
26143}
26144
26145impl Default for VideoEncodeH265SessionParametersCreateInfoKHR {
26146    #[inline]
26147    fn default() -> Self {
26148        Self {
26149            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
26150            next: ptr::null(),
26151            max_std_vps_count: u32::default(),
26152            max_std_sps_count: u32::default(),
26153            max_std_pps_count: u32::default(),
26154            parameters_add_info: ptr::null(),
26155        }
26156    }
26157}
26158
26159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html>
26160#[repr(C)]
26161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26162pub struct VideoEncodeH265SessionParametersFeedbackInfoKHR {
26163    pub s_type: StructureType,
26164    pub next: *mut c_void,
26165    pub has_std_vps_overrides: Bool32,
26166    pub has_std_sps_overrides: Bool32,
26167    pub has_std_pps_overrides: Bool32,
26168}
26169
26170impl Default for VideoEncodeH265SessionParametersFeedbackInfoKHR {
26171    #[inline]
26172    fn default() -> Self {
26173        Self {
26174            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
26175            next: ptr::null_mut(),
26176            has_std_vps_overrides: Bool32::default(),
26177            has_std_sps_overrides: Bool32::default(),
26178            has_std_pps_overrides: Bool32::default(),
26179        }
26180    }
26181}
26182
26183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html>
26184#[repr(C)]
26185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26186pub struct VideoEncodeH265SessionParametersGetInfoKHR {
26187    pub s_type: StructureType,
26188    pub next: *const c_void,
26189    pub write_std_vps: Bool32,
26190    pub write_std_sps: Bool32,
26191    pub write_std_pps: Bool32,
26192    pub std_vps_id: u32,
26193    pub std_sps_id: u32,
26194    pub std_pps_id: u32,
26195}
26196
26197impl Default for VideoEncodeH265SessionParametersGetInfoKHR {
26198    #[inline]
26199    fn default() -> Self {
26200        Self {
26201            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
26202            next: ptr::null(),
26203            write_std_vps: Bool32::default(),
26204            write_std_sps: Bool32::default(),
26205            write_std_pps: Bool32::default(),
26206            std_vps_id: u32::default(),
26207            std_sps_id: u32::default(),
26208            std_pps_id: u32::default(),
26209        }
26210    }
26211}
26212
26213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html>
26214#[repr(C)]
26215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26216pub struct VideoEncodeInfoKHR {
26217    pub s_type: StructureType,
26218    pub next: *const c_void,
26219    pub flags: VideoEncodeFlagsKHR,
26220    pub dst_buffer: Buffer,
26221    pub dst_buffer_offset: DeviceSize,
26222    pub dst_buffer_range: DeviceSize,
26223    pub src_picture_resource: VideoPictureResourceInfoKHR,
26224    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
26225    pub reference_slot_count: u32,
26226    pub reference_slots: *const VideoReferenceSlotInfoKHR,
26227    pub preceding_externally_encoded_bytes: u32,
26228}
26229
26230impl Default for VideoEncodeInfoKHR {
26231    #[inline]
26232    fn default() -> Self {
26233        Self {
26234            s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
26235            next: ptr::null(),
26236            flags: VideoEncodeFlagsKHR::default(),
26237            dst_buffer: Buffer::default(),
26238            dst_buffer_offset: DeviceSize::default(),
26239            dst_buffer_range: DeviceSize::default(),
26240            src_picture_resource: VideoPictureResourceInfoKHR::default(),
26241            setup_reference_slot: ptr::null(),
26242            reference_slot_count: u32::default(),
26243            reference_slots: ptr::null(),
26244            preceding_externally_encoded_bytes: u32::default(),
26245        }
26246    }
26247}
26248
26249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html>
26250#[repr(C)]
26251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26252pub struct VideoEncodeQualityLevelInfoKHR {
26253    pub s_type: StructureType,
26254    pub next: *const c_void,
26255    pub quality_level: u32,
26256}
26257
26258impl Default for VideoEncodeQualityLevelInfoKHR {
26259    #[inline]
26260    fn default() -> Self {
26261        Self {
26262            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
26263            next: ptr::null(),
26264            quality_level: u32::default(),
26265        }
26266    }
26267}
26268
26269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html>
26270#[repr(C)]
26271#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26272pub struct VideoEncodeQualityLevelPropertiesKHR {
26273    pub s_type: StructureType,
26274    pub next: *mut c_void,
26275    pub preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
26276    pub preferred_rate_control_layer_count: u32,
26277}
26278
26279impl Default for VideoEncodeQualityLevelPropertiesKHR {
26280    #[inline]
26281    fn default() -> Self {
26282        Self {
26283            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR,
26284            next: ptr::null_mut(),
26285            preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
26286            preferred_rate_control_layer_count: u32::default(),
26287        }
26288    }
26289}
26290
26291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html>
26292#[repr(C)]
26293#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26294pub struct VideoEncodeQuantizationMapCapabilitiesKHR {
26295    pub s_type: StructureType,
26296    pub next: *mut c_void,
26297    pub max_quantization_map_extent: Extent2D,
26298}
26299
26300impl Default for VideoEncodeQuantizationMapCapabilitiesKHR {
26301    #[inline]
26302    fn default() -> Self {
26303        Self {
26304            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR,
26305            next: ptr::null_mut(),
26306            max_quantization_map_extent: Extent2D::default(),
26307        }
26308    }
26309}
26310
26311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html>
26312#[repr(C)]
26313#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26314pub struct VideoEncodeQuantizationMapInfoKHR {
26315    pub s_type: StructureType,
26316    pub next: *const c_void,
26317    pub quantization_map: ImageView,
26318    pub quantization_map_extent: Extent2D,
26319}
26320
26321impl Default for VideoEncodeQuantizationMapInfoKHR {
26322    #[inline]
26323    fn default() -> Self {
26324        Self {
26325            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR,
26326            next: ptr::null(),
26327            quantization_map: ImageView::default(),
26328            quantization_map_extent: Extent2D::default(),
26329        }
26330    }
26331}
26332
26333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html>
26334#[repr(C)]
26335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26336pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
26337    pub s_type: StructureType,
26338    pub next: *const c_void,
26339    pub quantization_map_texel_size: Extent2D,
26340}
26341
26342impl Default for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
26343    #[inline]
26344    fn default() -> Self {
26345        Self {
26346            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR,
26347            next: ptr::null(),
26348            quantization_map_texel_size: Extent2D::default(),
26349        }
26350    }
26351}
26352
26353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html>
26354#[repr(C)]
26355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26356pub struct VideoEncodeRateControlInfoKHR {
26357    pub s_type: StructureType,
26358    pub next: *const c_void,
26359    pub flags: VideoEncodeRateControlFlagsKHR,
26360    pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
26361    pub layer_count: u32,
26362    pub layers: *const VideoEncodeRateControlLayerInfoKHR,
26363    pub virtual_buffer_size_in_ms: u32,
26364    pub initial_virtual_buffer_size_in_ms: u32,
26365}
26366
26367impl Default for VideoEncodeRateControlInfoKHR {
26368    #[inline]
26369    fn default() -> Self {
26370        Self {
26371            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
26372            next: ptr::null(),
26373            flags: VideoEncodeRateControlFlagsKHR::default(),
26374            rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
26375            layer_count: u32::default(),
26376            layers: ptr::null(),
26377            virtual_buffer_size_in_ms: u32::default(),
26378            initial_virtual_buffer_size_in_ms: u32::default(),
26379        }
26380    }
26381}
26382
26383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>
26384#[repr(C)]
26385#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26386pub struct VideoEncodeRateControlLayerInfoKHR {
26387    pub s_type: StructureType,
26388    pub next: *const c_void,
26389    pub average_bitrate: u64,
26390    pub max_bitrate: u64,
26391    pub frame_rate_numerator: u32,
26392    pub frame_rate_denominator: u32,
26393}
26394
26395impl Default for VideoEncodeRateControlLayerInfoKHR {
26396    #[inline]
26397    fn default() -> Self {
26398        Self {
26399            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
26400            next: ptr::null(),
26401            average_bitrate: u64::default(),
26402            max_bitrate: u64::default(),
26403            frame_rate_numerator: u32::default(),
26404            frame_rate_denominator: u32::default(),
26405        }
26406    }
26407}
26408
26409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html>
26410#[repr(C)]
26411#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26412pub struct VideoEncodeSessionParametersFeedbackInfoKHR {
26413    pub s_type: StructureType,
26414    pub next: *mut c_void,
26415    pub has_overrides: Bool32,
26416}
26417
26418impl Default for VideoEncodeSessionParametersFeedbackInfoKHR {
26419    #[inline]
26420    fn default() -> Self {
26421        Self {
26422            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
26423            next: ptr::null_mut(),
26424            has_overrides: Bool32::default(),
26425        }
26426    }
26427}
26428
26429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html>
26430#[repr(C)]
26431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26432pub struct VideoEncodeSessionParametersGetInfoKHR {
26433    pub s_type: StructureType,
26434    pub next: *const c_void,
26435    pub video_session_parameters: VideoSessionParametersKHR,
26436}
26437
26438impl Default for VideoEncodeSessionParametersGetInfoKHR {
26439    #[inline]
26440    fn default() -> Self {
26441        Self {
26442            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
26443            next: ptr::null(),
26444            video_session_parameters: VideoSessionParametersKHR::default(),
26445        }
26446    }
26447}
26448
26449/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html>
26450#[repr(C)]
26451#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26452pub struct VideoEncodeUsageInfoKHR {
26453    pub s_type: StructureType,
26454    pub next: *const c_void,
26455    pub video_usage_hints: VideoEncodeUsageFlagsKHR,
26456    pub video_content_hints: VideoEncodeContentFlagsKHR,
26457    pub tuning_mode: VideoEncodeTuningModeKHR,
26458}
26459
26460impl Default for VideoEncodeUsageInfoKHR {
26461    #[inline]
26462    fn default() -> Self {
26463        Self {
26464            s_type: StructureType::VIDEO_ENCODE_USAGE_INFO_KHR,
26465            next: ptr::null(),
26466            video_usage_hints: VideoEncodeUsageFlagsKHR::default(),
26467            video_content_hints: VideoEncodeContentFlagsKHR::default(),
26468            tuning_mode: VideoEncodeTuningModeKHR::default(),
26469        }
26470    }
26471}
26472
26473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html>
26474#[repr(C)]
26475#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26476pub struct VideoEndCodingInfoKHR {
26477    pub s_type: StructureType,
26478    pub next: *const c_void,
26479    pub flags: VideoEndCodingFlagsKHR,
26480}
26481
26482impl Default for VideoEndCodingInfoKHR {
26483    #[inline]
26484    fn default() -> Self {
26485        Self {
26486            s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
26487            next: ptr::null(),
26488            flags: VideoEndCodingFlagsKHR::default(),
26489        }
26490    }
26491}
26492
26493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html>
26494#[repr(C)]
26495#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26496pub struct VideoFormatAV1QuantizationMapPropertiesKHR {
26497    pub s_type: StructureType,
26498    pub next: *mut c_void,
26499    pub compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
26500}
26501
26502impl Default for VideoFormatAV1QuantizationMapPropertiesKHR {
26503    #[inline]
26504    fn default() -> Self {
26505        Self {
26506            s_type: StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR,
26507            next: ptr::null_mut(),
26508            compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
26509        }
26510    }
26511}
26512
26513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html>
26514#[repr(C)]
26515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26516pub struct VideoFormatH265QuantizationMapPropertiesKHR {
26517    pub s_type: StructureType,
26518    pub next: *mut c_void,
26519    pub compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
26520}
26521
26522impl Default for VideoFormatH265QuantizationMapPropertiesKHR {
26523    #[inline]
26524    fn default() -> Self {
26525        Self {
26526            s_type: StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR,
26527            next: ptr::null_mut(),
26528            compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
26529        }
26530    }
26531}
26532
26533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html>
26534#[repr(C)]
26535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26536pub struct VideoFormatPropertiesKHR {
26537    pub s_type: StructureType,
26538    pub next: *mut c_void,
26539    pub format: Format,
26540    pub component_mapping: ComponentMapping,
26541    pub image_create_flags: ImageCreateFlags,
26542    pub image_type: ImageType,
26543    pub image_tiling: ImageTiling,
26544    pub image_usage_flags: ImageUsageFlags,
26545}
26546
26547impl Default for VideoFormatPropertiesKHR {
26548    #[inline]
26549    fn default() -> Self {
26550        Self {
26551            s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
26552            next: ptr::null_mut(),
26553            format: Format::default(),
26554            component_mapping: ComponentMapping::default(),
26555            image_create_flags: ImageCreateFlags::default(),
26556            image_type: ImageType::default(),
26557            image_tiling: ImageTiling::default(),
26558            image_usage_flags: ImageUsageFlags::default(),
26559        }
26560    }
26561}
26562
26563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html>
26564#[repr(C)]
26565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26566pub struct VideoFormatQuantizationMapPropertiesKHR {
26567    pub s_type: StructureType,
26568    pub next: *mut c_void,
26569    pub quantization_map_texel_size: Extent2D,
26570}
26571
26572impl Default for VideoFormatQuantizationMapPropertiesKHR {
26573    #[inline]
26574    fn default() -> Self {
26575        Self {
26576            s_type: StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR,
26577            next: ptr::null_mut(),
26578            quantization_map_texel_size: Extent2D::default(),
26579        }
26580    }
26581}
26582
26583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html>
26584#[repr(C)]
26585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26586pub struct VideoInlineQueryInfoKHR {
26587    pub s_type: StructureType,
26588    pub next: *const c_void,
26589    pub query_pool: QueryPool,
26590    pub first_query: u32,
26591    pub query_count: u32,
26592}
26593
26594impl Default for VideoInlineQueryInfoKHR {
26595    #[inline]
26596    fn default() -> Self {
26597        Self {
26598            s_type: StructureType::VIDEO_INLINE_QUERY_INFO_KHR,
26599            next: ptr::null(),
26600            query_pool: QueryPool::default(),
26601            first_query: u32::default(),
26602            query_count: u32::default(),
26603        }
26604    }
26605}
26606
26607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html>
26608#[repr(C)]
26609#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26610pub struct VideoPictureResourceInfoKHR {
26611    pub s_type: StructureType,
26612    pub next: *const c_void,
26613    pub coded_offset: Offset2D,
26614    pub coded_extent: Extent2D,
26615    pub base_array_layer: u32,
26616    pub image_view_binding: ImageView,
26617}
26618
26619impl Default for VideoPictureResourceInfoKHR {
26620    #[inline]
26621    fn default() -> Self {
26622        Self {
26623            s_type: StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR,
26624            next: ptr::null(),
26625            coded_offset: Offset2D::default(),
26626            coded_extent: Extent2D::default(),
26627            base_array_layer: u32::default(),
26628            image_view_binding: ImageView::default(),
26629        }
26630    }
26631}
26632
26633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html>
26634#[repr(C)]
26635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26636pub struct VideoProfileInfoKHR {
26637    pub s_type: StructureType,
26638    pub next: *const c_void,
26639    pub video_codec_operation: VideoCodecOperationFlagsKHR,
26640    pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
26641    pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
26642    pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
26643}
26644
26645impl Default for VideoProfileInfoKHR {
26646    #[inline]
26647    fn default() -> Self {
26648        Self {
26649            s_type: StructureType::VIDEO_PROFILE_INFO_KHR,
26650            next: ptr::null(),
26651            video_codec_operation: VideoCodecOperationFlagsKHR::default(),
26652            chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
26653            luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
26654            chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
26655        }
26656    }
26657}
26658
26659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html>
26660#[repr(C)]
26661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26662pub struct VideoProfileListInfoKHR {
26663    pub s_type: StructureType,
26664    pub next: *const c_void,
26665    pub profile_count: u32,
26666    pub profiles: *const VideoProfileInfoKHR,
26667}
26668
26669impl Default for VideoProfileListInfoKHR {
26670    #[inline]
26671    fn default() -> Self {
26672        Self {
26673            s_type: StructureType::VIDEO_PROFILE_LIST_INFO_KHR,
26674            next: ptr::null(),
26675            profile_count: u32::default(),
26676            profiles: ptr::null(),
26677        }
26678    }
26679}
26680
26681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html>
26682#[repr(C)]
26683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26684pub struct VideoReferenceSlotInfoKHR {
26685    pub s_type: StructureType,
26686    pub next: *const c_void,
26687    pub slot_index: i32,
26688    pub picture_resource: *const VideoPictureResourceInfoKHR,
26689}
26690
26691impl Default for VideoReferenceSlotInfoKHR {
26692    #[inline]
26693    fn default() -> Self {
26694        Self {
26695            s_type: StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR,
26696            next: ptr::null(),
26697            slot_index: i32::default(),
26698            picture_resource: ptr::null(),
26699        }
26700    }
26701}
26702
26703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html>
26704#[repr(C)]
26705#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26706pub struct VideoSessionCreateInfoKHR {
26707    pub s_type: StructureType,
26708    pub next: *const c_void,
26709    pub queue_family_index: u32,
26710    pub flags: VideoSessionCreateFlagsKHR,
26711    pub video_profile: *const VideoProfileInfoKHR,
26712    pub picture_format: Format,
26713    pub max_coded_extent: Extent2D,
26714    pub reference_picture_format: Format,
26715    pub max_dpb_slots: u32,
26716    pub max_active_reference_pictures: u32,
26717    pub std_header_version: *const ExtensionProperties,
26718}
26719
26720impl Default for VideoSessionCreateInfoKHR {
26721    #[inline]
26722    fn default() -> Self {
26723        Self {
26724            s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
26725            next: ptr::null(),
26726            queue_family_index: u32::default(),
26727            flags: VideoSessionCreateFlagsKHR::default(),
26728            video_profile: ptr::null(),
26729            picture_format: Format::default(),
26730            max_coded_extent: Extent2D::default(),
26731            reference_picture_format: Format::default(),
26732            max_dpb_slots: u32::default(),
26733            max_active_reference_pictures: u32::default(),
26734            std_header_version: ptr::null(),
26735        }
26736    }
26737}
26738
26739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html>
26740#[repr(C)]
26741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26742pub struct VideoSessionMemoryRequirementsKHR {
26743    pub s_type: StructureType,
26744    pub next: *mut c_void,
26745    pub memory_bind_index: u32,
26746    pub memory_requirements: MemoryRequirements,
26747}
26748
26749impl Default for VideoSessionMemoryRequirementsKHR {
26750    #[inline]
26751    fn default() -> Self {
26752        Self {
26753            s_type: StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
26754            next: ptr::null_mut(),
26755            memory_bind_index: u32::default(),
26756            memory_requirements: MemoryRequirements::default(),
26757        }
26758    }
26759}
26760
26761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html>
26762#[repr(C)]
26763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26764pub struct VideoSessionParametersCreateInfoKHR {
26765    pub s_type: StructureType,
26766    pub next: *const c_void,
26767    pub flags: VideoSessionParametersCreateFlagsKHR,
26768    pub video_session_parameters_template: VideoSessionParametersKHR,
26769    pub video_session: VideoSessionKHR,
26770}
26771
26772impl Default for VideoSessionParametersCreateInfoKHR {
26773    #[inline]
26774    fn default() -> Self {
26775        Self {
26776            s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
26777            next: ptr::null(),
26778            flags: VideoSessionParametersCreateFlagsKHR::default(),
26779            video_session_parameters_template: VideoSessionParametersKHR::default(),
26780            video_session: VideoSessionKHR::default(),
26781        }
26782    }
26783}
26784
26785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html>
26786#[repr(C)]
26787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26788pub struct VideoSessionParametersUpdateInfoKHR {
26789    pub s_type: StructureType,
26790    pub next: *const c_void,
26791    pub update_sequence_count: u32,
26792}
26793
26794impl Default for VideoSessionParametersUpdateInfoKHR {
26795    #[inline]
26796    fn default() -> Self {
26797        Self {
26798            s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
26799            next: ptr::null(),
26800            update_sequence_count: u32::default(),
26801        }
26802    }
26803}
26804
26805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewport.html>
26806#[repr(C)]
26807#[derive(Copy, Clone, Default, Debug, PartialEq)]
26808pub struct Viewport {
26809    pub x: f32,
26810    pub y: f32,
26811    pub width: f32,
26812    pub height: f32,
26813    pub min_depth: f32,
26814    pub max_depth: f32,
26815}
26816
26817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html>
26818#[repr(C)]
26819#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26820pub struct ViewportSwizzleNV {
26821    pub x: ViewportCoordinateSwizzleNV,
26822    pub y: ViewportCoordinateSwizzleNV,
26823    pub z: ViewportCoordinateSwizzleNV,
26824    pub w: ViewportCoordinateSwizzleNV,
26825}
26826
26827/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportWScalingNV.html>
26828#[repr(C)]
26829#[derive(Copy, Clone, Default, Debug, PartialEq)]
26830pub struct ViewportWScalingNV {
26831    pub xcoeff: f32,
26832    pub ycoeff: f32,
26833}
26834
26835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html>
26836#[repr(C)]
26837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26838pub struct WaylandSurfaceCreateInfoKHR {
26839    pub s_type: StructureType,
26840    pub next: *const c_void,
26841    pub flags: WaylandSurfaceCreateFlagsKHR,
26842    pub display: *mut wl_display,
26843    pub surface: *mut wl_surface,
26844}
26845
26846impl Default for WaylandSurfaceCreateInfoKHR {
26847    #[inline]
26848    fn default() -> Self {
26849        Self {
26850            s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
26851            next: ptr::null(),
26852            flags: WaylandSurfaceCreateFlagsKHR::default(),
26853            display: ptr::null_mut(),
26854            surface: ptr::null_mut(),
26855        }
26856    }
26857}
26858
26859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>
26860#[repr(C)]
26861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26862pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
26863    pub s_type: StructureType,
26864    pub next: *const c_void,
26865    pub acquire_count: u32,
26866    pub acquire_syncs: *const DeviceMemory,
26867    pub acquire_keys: *const u64,
26868    pub acquire_timeouts: *const u32,
26869    pub release_count: u32,
26870    pub release_syncs: *const DeviceMemory,
26871    pub release_keys: *const u64,
26872}
26873
26874impl Default for Win32KeyedMutexAcquireReleaseInfoKHR {
26875    #[inline]
26876    fn default() -> Self {
26877        Self {
26878            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
26879            next: ptr::null(),
26880            acquire_count: u32::default(),
26881            acquire_syncs: ptr::null(),
26882            acquire_keys: ptr::null(),
26883            acquire_timeouts: ptr::null(),
26884            release_count: u32::default(),
26885            release_syncs: ptr::null(),
26886            release_keys: ptr::null(),
26887        }
26888    }
26889}
26890
26891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>
26892#[repr(C)]
26893#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26894pub struct Win32KeyedMutexAcquireReleaseInfoNV {
26895    pub s_type: StructureType,
26896    pub next: *const c_void,
26897    pub acquire_count: u32,
26898    pub acquire_syncs: *const DeviceMemory,
26899    pub acquire_keys: *const u64,
26900    pub acquire_timeout_milliseconds: *const u32,
26901    pub release_count: u32,
26902    pub release_syncs: *const DeviceMemory,
26903    pub release_keys: *const u64,
26904}
26905
26906impl Default for Win32KeyedMutexAcquireReleaseInfoNV {
26907    #[inline]
26908    fn default() -> Self {
26909        Self {
26910            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
26911            next: ptr::null(),
26912            acquire_count: u32::default(),
26913            acquire_syncs: ptr::null(),
26914            acquire_keys: ptr::null(),
26915            acquire_timeout_milliseconds: ptr::null(),
26916            release_count: u32::default(),
26917            release_syncs: ptr::null(),
26918            release_keys: ptr::null(),
26919        }
26920    }
26921}
26922
26923/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html>
26924#[repr(C)]
26925#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26926pub struct Win32SurfaceCreateInfoKHR {
26927    pub s_type: StructureType,
26928    pub next: *const c_void,
26929    pub flags: Win32SurfaceCreateFlagsKHR,
26930    pub hinstance: HINSTANCE,
26931    pub hwnd: HWND,
26932}
26933
26934impl Default for Win32SurfaceCreateInfoKHR {
26935    #[inline]
26936    fn default() -> Self {
26937        Self {
26938            s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
26939            next: ptr::null(),
26940            flags: Win32SurfaceCreateFlagsKHR::default(),
26941            hinstance: ptr::null_mut(),
26942            hwnd: ptr::null_mut(),
26943        }
26944    }
26945}
26946
26947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html>
26948#[repr(C)]
26949#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26950pub struct WriteDescriptorSet {
26951    pub s_type: StructureType,
26952    pub next: *const c_void,
26953    pub dst_set: DescriptorSet,
26954    pub dst_binding: u32,
26955    pub dst_array_element: u32,
26956    pub descriptor_count: u32,
26957    pub descriptor_type: DescriptorType,
26958    pub image_info: *const DescriptorImageInfo,
26959    pub buffer_info: *const DescriptorBufferInfo,
26960    pub texel_buffer_view: *const BufferView,
26961}
26962
26963impl Default for WriteDescriptorSet {
26964    #[inline]
26965    fn default() -> Self {
26966        Self {
26967            s_type: StructureType::WRITE_DESCRIPTOR_SET,
26968            next: ptr::null(),
26969            dst_set: DescriptorSet::default(),
26970            dst_binding: u32::default(),
26971            dst_array_element: u32::default(),
26972            descriptor_count: u32::default(),
26973            descriptor_type: DescriptorType::default(),
26974            image_info: ptr::null(),
26975            buffer_info: ptr::null(),
26976            texel_buffer_view: ptr::null(),
26977        }
26978    }
26979}
26980
26981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>
26982#[repr(C)]
26983#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26984pub struct WriteDescriptorSetAccelerationStructureKHR {
26985    pub s_type: StructureType,
26986    pub next: *const c_void,
26987    pub acceleration_structure_count: u32,
26988    pub acceleration_structures: *const AccelerationStructureKHR,
26989}
26990
26991impl Default for WriteDescriptorSetAccelerationStructureKHR {
26992    #[inline]
26993    fn default() -> Self {
26994        Self {
26995            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
26996            next: ptr::null(),
26997            acceleration_structure_count: u32::default(),
26998            acceleration_structures: ptr::null(),
26999        }
27000    }
27001}
27002
27003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>
27004#[repr(C)]
27005#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27006pub struct WriteDescriptorSetAccelerationStructureNV {
27007    pub s_type: StructureType,
27008    pub next: *const c_void,
27009    pub acceleration_structure_count: u32,
27010    pub acceleration_structures: *const AccelerationStructureNV,
27011}
27012
27013impl Default for WriteDescriptorSetAccelerationStructureNV {
27014    #[inline]
27015    fn default() -> Self {
27016        Self {
27017            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
27018            next: ptr::null(),
27019            acceleration_structure_count: u32::default(),
27020            acceleration_structures: ptr::null(),
27021        }
27022    }
27023}
27024
27025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html>
27026#[repr(C)]
27027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27028pub struct WriteDescriptorSetInlineUniformBlock {
27029    pub s_type: StructureType,
27030    pub next: *const c_void,
27031    pub data_size: u32,
27032    pub data: *const c_void,
27033}
27034
27035impl Default for WriteDescriptorSetInlineUniformBlock {
27036    #[inline]
27037    fn default() -> Self {
27038        Self {
27039            s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
27040            next: ptr::null(),
27041            data_size: u32::default(),
27042            data: ptr::null(),
27043        }
27044    }
27045}
27046
27047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html>
27048#[repr(C)]
27049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27050pub struct WriteDescriptorSetPartitionedAccelerationStructureNV {
27051    pub s_type: StructureType,
27052    pub next: *mut c_void,
27053    pub acceleration_structure_count: u32,
27054    pub acceleration_structures: *const DeviceAddress,
27055}
27056
27057impl Default for WriteDescriptorSetPartitionedAccelerationStructureNV {
27058    #[inline]
27059    fn default() -> Self {
27060        Self {
27061            s_type: StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV,
27062            next: ptr::null_mut(),
27063            acceleration_structure_count: u32::default(),
27064            acceleration_structures: ptr::null(),
27065        }
27066    }
27067}
27068
27069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html>
27070#[repr(C)]
27071#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27072pub struct WriteIndirectExecutionSetPipelineEXT {
27073    pub s_type: StructureType,
27074    pub next: *const c_void,
27075    pub index: u32,
27076    pub pipeline: Pipeline,
27077}
27078
27079impl Default for WriteIndirectExecutionSetPipelineEXT {
27080    #[inline]
27081    fn default() -> Self {
27082        Self {
27083            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT,
27084            next: ptr::null(),
27085            index: u32::default(),
27086            pipeline: Pipeline::default(),
27087        }
27088    }
27089}
27090
27091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html>
27092#[repr(C)]
27093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27094pub struct WriteIndirectExecutionSetShaderEXT {
27095    pub s_type: StructureType,
27096    pub next: *const c_void,
27097    pub index: u32,
27098    pub shader: ShaderEXT,
27099}
27100
27101impl Default for WriteIndirectExecutionSetShaderEXT {
27102    #[inline]
27103    fn default() -> Self {
27104        Self {
27105            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT,
27106            next: ptr::null(),
27107            index: u32::default(),
27108            shader: ShaderEXT::default(),
27109        }
27110    }
27111}
27112
27113/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXYColorEXT.html>
27114#[repr(C)]
27115#[derive(Copy, Clone, Default, Debug, PartialEq)]
27116pub struct XYColorEXT {
27117    pub x: f32,
27118    pub y: f32,
27119}
27120
27121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html>
27122#[repr(C)]
27123#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27124pub struct XcbSurfaceCreateInfoKHR {
27125    pub s_type: StructureType,
27126    pub next: *const c_void,
27127    pub flags: XcbSurfaceCreateFlagsKHR,
27128    pub connection: *mut xcb_connection_t,
27129    pub window: xcb_window_t,
27130}
27131
27132impl Default for XcbSurfaceCreateInfoKHR {
27133    #[inline]
27134    fn default() -> Self {
27135        Self {
27136            s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
27137            next: ptr::null(),
27138            flags: XcbSurfaceCreateFlagsKHR::default(),
27139            connection: ptr::null_mut(),
27140            window: xcb_window_t::default(),
27141        }
27142    }
27143}
27144
27145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html>
27146#[repr(C)]
27147#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27148pub struct XlibSurfaceCreateInfoKHR {
27149    pub s_type: StructureType,
27150    pub next: *const c_void,
27151    pub flags: XlibSurfaceCreateFlagsKHR,
27152    pub dpy: *mut Display,
27153    pub window: Window,
27154}
27155
27156impl Default for XlibSurfaceCreateInfoKHR {
27157    #[inline]
27158    fn default() -> Self {
27159        Self {
27160            s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
27161            next: ptr::null(),
27162            flags: XlibSurfaceCreateFlagsKHR::default(),
27163            dpy: ptr::null_mut(),
27164            window: Window::default(),
27165        }
27166    }
27167}
27168
27169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsNV.html>
27170pub type AabbPositionsNV = AabbPositionsKHR;
27171/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceNV.html>
27172pub type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
27173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2KHR.html>
27174pub type AttachmentDescription2KHR = AttachmentDescription2;
27175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayoutKHR.html>
27176pub type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
27177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2KHR.html>
27178pub type AttachmentReference2KHR = AttachmentReference2;
27179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayoutKHR.html>
27180pub type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
27181/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoNV.html>
27182pub type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
27183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfoKHR.html>
27184pub type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
27185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfoKHR.html>
27186pub type BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
27187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfoKHR.html>
27188pub type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
27189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfoKHR.html>
27190pub type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
27191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfoKHR.html>
27192pub type BindImageMemoryInfoKHR = BindImageMemoryInfo;
27193/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfoKHR.html>
27194pub type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
27195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatusKHR.html>
27196pub type BindMemoryStatusKHR = BindMemoryStatus;
27197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
27198pub type BlitImageInfo2KHR = BlitImageInfo2;
27199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
27200pub type BufferCopy2KHR = BufferCopy2;
27201/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoEXT.html>
27202pub type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
27203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoKHR.html>
27204pub type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
27205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
27206pub type BufferImageCopy2KHR = BufferImageCopy2;
27207/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2KHR.html>
27208pub type BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
27209/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2KHR.html>
27210pub type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
27211/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfoKHR.html>
27212pub type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
27213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfoKHR.html>
27214pub type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
27215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoEXT.html>
27216pub type CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
27217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>
27218pub type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
27219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfoKHR.html>
27220pub type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
27221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersionKHR.html>
27222pub type ConformanceVersionKHR = ConformanceVersion;
27223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
27224pub type CopyBufferInfo2KHR = CopyBufferInfo2;
27225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
27226pub type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
27227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
27228pub type CopyImageInfo2KHR = CopyImageInfo2;
27229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
27230pub type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
27231/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfoEXT.html>
27232pub type CopyImageToImageInfoEXT = CopyImageToImageInfo;
27233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfoEXT.html>
27234pub type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
27235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfoEXT.html>
27236pub type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
27237/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfoKHR.html>
27238pub type DependencyInfoKHR = DependencyInfo;
27239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>
27240pub type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
27241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.html>
27242pub type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
27243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupportKHR.html>
27244pub type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
27245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.html>
27246pub type DescriptorSetVariableDescriptorCountAllocateInfoEXT =
27247    DescriptorSetVariableDescriptorCountAllocateInfo;
27248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.html>
27249pub type DescriptorSetVariableDescriptorCountLayoutSupportEXT =
27250    DescriptorSetVariableDescriptorCountLayoutSupport;
27251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html>
27252pub type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
27253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntryKHR.html>
27254pub type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
27255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirementsKHR.html>
27256pub type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
27257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfoKHR.html>
27258pub type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
27259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfoKHR.html>
27260pub type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
27261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfoKHR.html>
27262pub type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
27263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfoKHR.html>
27264pub type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
27265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfoKHR.html>
27266pub type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
27267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirementsKHR.html>
27268pub type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
27269/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfoKHR.html>
27270pub type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
27271/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfoKHR.html>
27272pub type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
27273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfoEXT.html>
27274pub type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
27275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>
27276pub type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
27277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoKHR.html>
27278pub type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
27279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfoKHR.html>
27280pub type ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
27281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoKHR.html>
27282pub type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
27283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfoKHR.html>
27284pub type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
27285/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferPropertiesKHR.html>
27286pub type ExternalBufferPropertiesKHR = ExternalBufferProperties;
27287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFencePropertiesKHR.html>
27288pub type ExternalFencePropertiesKHR = ExternalFenceProperties;
27289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesKHR.html>
27290pub type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
27291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfoKHR.html>
27292pub type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
27293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoKHR.html>
27294pub type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
27295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryPropertiesKHR.html>
27296pub type ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
27297/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphorePropertiesKHR.html>
27298pub type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
27299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2KHR.html>
27300pub type FormatProperties2KHR = FormatProperties2;
27301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3KHR.html>
27302pub type FormatProperties3KHR = FormatProperties3;
27303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfoKHR.html>
27304pub type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
27305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfoKHR.html>
27306pub type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
27307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQueryEXT.html>
27308pub type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
27309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfoEXT.html>
27310pub type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
27311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
27312pub type ImageBlit2KHR = ImageBlit2;
27313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
27314pub type ImageCopy2KHR = ImageCopy2;
27315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfoKHR.html>
27316pub type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
27317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2KHR.html>
27318pub type ImageFormatProperties2KHR = ImageFormatProperties2;
27319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2KHR.html>
27320pub type ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
27321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2KHR.html>
27322pub type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
27323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html>
27324pub type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
27325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
27326pub type ImageResolve2KHR = ImageResolve2;
27327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html>
27328pub type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
27329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfoEXT.html>
27330pub type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
27331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2EXT.html>
27332pub type ImageSubresource2EXT = ImageSubresource2;
27333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2KHR.html>
27334pub type ImageSubresource2KHR = ImageSubresource2;
27335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopyEXT.html>
27336pub type ImageToMemoryCopyEXT = ImageToMemoryCopy;
27337/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfoKHR.html>
27338pub type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
27339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReferenceKHR.html>
27340pub type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
27341/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfoKHR.html>
27342pub type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
27343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2KHR.html>
27344pub type MemoryBarrier2KHR = MemoryBarrier2;
27345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoKHR.html>
27346pub type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
27347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirementsKHR.html>
27348pub type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
27349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfoKHR.html>
27350pub type MemoryMapInfoKHR = MemoryMapInfo;
27351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfoKHR.html>
27352pub type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
27353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2KHR.html>
27354pub type MemoryRequirements2KHR = MemoryRequirements2;
27355/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopyEXT.html>
27356pub type MemoryToImageCopyEXT = MemoryToImageCopy;
27357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfoKHR.html>
27358pub type MemoryUnmapInfoKHR = MemoryUnmapInfo;
27359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>
27360pub type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
27361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListVALVE.html>
27362pub type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
27363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html>
27364pub type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
27365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeaturesKHR.html>
27366pub type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
27367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferAddressFeaturesEXT.html>
27368pub type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
27369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.html>
27370pub type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
27371/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>
27372pub type PhysicalDeviceComputeShaderDerivativesFeaturesNV =
27373    PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
27374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html>
27375pub type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
27376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.html>
27377pub type PhysicalDeviceDepthStencilResolvePropertiesKHR =
27378    PhysicalDeviceDepthStencilResolveProperties;
27379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.html>
27380pub type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
27381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.html>
27382pub type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
27383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverPropertiesKHR.html>
27384pub type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
27385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>
27386pub type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
27387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR.html>
27388pub type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR =
27389    PhysicalDeviceDynamicRenderingLocalReadFeatures;
27390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html>
27391pub type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
27392/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html>
27393pub type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
27394/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html>
27395pub type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
27396/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciBufFeaturesNV.html>
27397pub type PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
27398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html>
27399pub type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
27400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2KHR.html>
27401pub type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
27402/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloat16Int8FeaturesKHR.html>
27403pub type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
27404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsPropertiesKHR.html>
27405pub type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
27406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>
27407pub type PhysicalDeviceFragmentShaderBarycentricFeaturesNV =
27408    PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
27409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>
27410pub type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
27411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html>
27412pub type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
27413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupPropertiesKHR.html>
27414pub type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
27415/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeaturesEXT.html>
27416pub type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
27417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyPropertiesEXT.html>
27418pub type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
27419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeaturesEXT.html>
27420pub type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
27421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDPropertiesKHR.html>
27422pub type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
27423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html>
27424pub type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
27425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>
27426pub type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
27427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.html>
27428pub type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
27429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>
27430pub type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
27431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesKHR.html>
27432pub type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
27433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>
27434pub type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
27435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>
27436pub type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
27437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>
27438pub type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
27439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesKHR.html>
27440pub type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
27441/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>
27442pub type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
27443/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesKHR.html>
27444pub type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
27445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3PropertiesKHR.html>
27446pub type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
27447/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>
27448pub type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
27449/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>
27450pub type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
27451/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5FeaturesKHR.html>
27452pub type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
27453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5PropertiesKHR.html>
27454pub type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
27455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6FeaturesKHR.html>
27456pub type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
27457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6PropertiesKHR.html>
27458pub type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
27459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2KHR.html>
27460pub type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
27461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeaturesKHR.html>
27462pub type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
27463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPropertiesKHR.html>
27464pub type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
27465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>
27466pub type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE =
27467    PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
27468/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>
27469pub type PhysicalDevicePipelineCreationCacheControlFeaturesEXT =
27470    PhysicalDevicePipelineCreationCacheControlFeatures;
27471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html>
27472pub type PhysicalDevicePipelineProtectedAccessFeaturesEXT =
27473    PhysicalDevicePipelineProtectedAccessFeatures;
27474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html>
27475pub type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
27476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html>
27477pub type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
27478/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html>
27479pub type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
27480/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>
27481pub type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
27482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2KHR.html>
27483pub type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
27484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>
27485pub type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
27486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>
27487pub type PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM =
27488    PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
27489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html>
27490pub type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
27491    PhysicalDeviceSamplerFilterMinmaxProperties;
27492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html>
27493pub type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
27494    PhysicalDeviceSamplerYcbcrConversionFeatures;
27495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.html>
27496pub type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
27497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.html>
27498pub type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR =
27499    PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
27500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.html>
27501pub type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
27502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>
27503pub type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT =
27504    PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
27505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html>
27506pub type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
27507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeaturesKHR.html>
27508pub type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
27509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.html>
27510pub type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
27511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2FeaturesKHR.html>
27512pub type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
27513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>
27514pub type PhysicalDeviceShaderIntegerDotProductFeaturesKHR =
27515    PhysicalDeviceShaderIntegerDotProductFeatures;
27516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>
27517pub type PhysicalDeviceShaderIntegerDotProductPropertiesKHR =
27518    PhysicalDeviceShaderIntegerDotProductProperties;
27519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.html>
27520pub type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR =
27521    PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
27522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR.html>
27523pub type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
27524/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>
27525pub type PhysicalDeviceShaderTerminateInvocationFeaturesKHR =
27526    PhysicalDeviceShaderTerminateInvocationFeatures;
27527/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html>
27528pub type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
27529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>
27530pub type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
27531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>
27532pub type PhysicalDeviceSubgroupSizeControlPropertiesEXT =
27533    PhysicalDeviceSubgroupSizeControlProperties;
27534/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>
27535pub type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
27536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>
27537pub type PhysicalDeviceTexelBufferAlignmentPropertiesEXT =
27538    PhysicalDeviceTexelBufferAlignmentProperties;
27539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>
27540pub type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT =
27541    PhysicalDeviceTextureCompressionASTCHDRFeatures;
27542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.html>
27543pub type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
27544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.html>
27545pub type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
27546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolPropertiesEXT.html>
27547pub type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
27548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.html>
27549pub type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR =
27550    PhysicalDeviceUniformBufferStandardLayoutFeatures;
27551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeatures.html>
27552pub type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
27553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html>
27554pub type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
27555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeaturesKHR.html>
27556pub type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
27557/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>
27558pub type PhysicalDeviceVertexAttributeDivisorFeaturesEXT =
27559    PhysicalDeviceVertexAttributeDivisorFeatures;
27560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR.html>
27561pub type PhysicalDeviceVertexAttributeDivisorFeaturesKHR =
27562    PhysicalDeviceVertexAttributeDivisorFeatures;
27563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.html>
27564pub type PhysicalDeviceVertexAttributeDivisorPropertiesKHR =
27565    PhysicalDeviceVertexAttributeDivisorProperties;
27566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.html>
27567pub type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
27568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>
27569pub type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR =
27570    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
27571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfoKHR.html>
27572pub type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
27573/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>
27574pub type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
27575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackEXT.html>
27576pub type PipelineCreationFeedbackEXT = PipelineCreationFeedback;
27577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoEXT.html>
27578pub type PipelineInfoEXT = PipelineInfoKHR;
27579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>
27580pub type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
27581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoKHR.html>
27582pub type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
27583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfoKHR.html>
27584pub type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
27585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfoEXT.html>
27586pub type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
27587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>
27588pub type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT =
27589    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
27590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html>
27591pub type PipelineTessellationDomainOriginStateCreateInfoKHR =
27592    PipelineTessellationDomainOriginStateCreateInfo;
27593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>
27594pub type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
27595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoKHR.html>
27596pub type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
27597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfoEXT.html>
27598pub type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
27599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfoKHR.html>
27600pub type PushConstantsInfoKHR = PushConstantsInfo;
27601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfoKHR.html>
27602pub type PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
27603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfoKHR.html>
27604pub type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
27605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfoINTEL.html>
27606pub type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
27607/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>
27608pub type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
27609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesKHR.html>
27610pub type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
27611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2KHR.html>
27612pub type QueueFamilyProperties2KHR = QueueFamilyProperties2;
27613/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfoKHR.html>
27614pub type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
27615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2KHR.html>
27616pub type RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
27617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html>
27618pub type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
27619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfoKHR.html>
27620pub type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
27621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfoKHR.html>
27622pub type RenderingAreaInfoKHR = RenderingAreaInfo;
27623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfoKHR.html>
27624pub type RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
27625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfoKHR.html>
27626pub type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
27627/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfoKHR.html>
27628pub type RenderingInfoKHR = RenderingInfo;
27629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfoKHR.html>
27630pub type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
27631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
27632pub type ResolveImageInfo2KHR = ResolveImageInfo2;
27633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfoEXT.html>
27634pub type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
27635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html>
27636pub type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
27637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html>
27638pub type SamplerYcbcrConversionImageFormatPropertiesKHR =
27639    SamplerYcbcrConversionImageFormatProperties;
27640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfoKHR.html>
27641pub type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
27642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfoKHR.html>
27643pub type SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
27644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfoKHR.html>
27645pub type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
27646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfoKHR.html>
27647pub type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
27648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfoKHR.html>
27649pub type SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
27650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderRequiredSubgroupSizeCreateInfoEXT.html>
27651pub type ShaderRequiredSubgroupSizeCreateInfoEXT =
27652    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
27653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2KHR.html>
27654pub type SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
27655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2KHR.html>
27656pub type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
27657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2KHR.html>
27658pub type SubmitInfo2KHR = SubmitInfo2;
27659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfoKHR.html>
27660pub type SubpassBeginInfoKHR = SubpassBeginInfo;
27661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2KHR.html>
27662pub type SubpassDependency2KHR = SubpassDependency2;
27663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2KHR.html>
27664pub type SubpassDescription2KHR = SubpassDescription2;
27665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolveKHR.html>
27666pub type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
27667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfoKHR.html>
27668pub type SubpassEndInfoKHR = SubpassEndInfo;
27669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySizeEXT.html>
27670pub type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
27671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2EXT.html>
27672pub type SubresourceLayout2EXT = SubresourceLayout2;
27673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2KHR.html>
27674pub type SubresourceLayout2KHR = SubresourceLayout2;
27675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfoKHR.html>
27676pub type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
27677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixNV.html>
27678pub type TransformMatrixNV = TransformMatrixKHR;
27679/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>
27680pub type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
27681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionKHR.html>
27682pub type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
27683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>
27684pub type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;