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::needless_lifetimes,
16    clippy::too_many_arguments,
17    clippy::type_complexity,
18    clippy::unnecessary_cast,
19    clippy::upper_case_acronyms,
20    clippy::useless_transmute
21)]
22
23use core::ffi::{c_char, c_int, c_void};
24use core::fmt;
25use core::ptr;
26
27use crate::*;
28
29/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsKHR.html>
30#[repr(C)]
31#[derive(Copy, Clone, Default, Debug, PartialEq)]
32pub struct AabbPositionsKHR {
33    pub min_x: f32,
34    pub min_y: f32,
35    pub min_z: f32,
36    pub max_x: f32,
37    pub max_y: f32,
38    pub max_z: f32,
39}
40
41/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html>
42#[repr(C)]
43#[derive(Copy, Clone, Debug)]
44pub struct AccelerationStructureBuildGeometryInfoKHR {
45    pub s_type: StructureType,
46    pub next: *const c_void,
47    pub type_: AccelerationStructureTypeKHR,
48    pub flags: BuildAccelerationStructureFlagsKHR,
49    pub mode: BuildAccelerationStructureModeKHR,
50    pub src_acceleration_structure: AccelerationStructureKHR,
51    pub dst_acceleration_structure: AccelerationStructureKHR,
52    pub geometry_count: u32,
53    pub geometries: *const AccelerationStructureGeometryKHR,
54    pub pointer_geometries: *const *const AccelerationStructureGeometryKHR,
55    pub scratch_data: DeviceOrHostAddressKHR,
56}
57
58impl Default for AccelerationStructureBuildGeometryInfoKHR {
59    #[inline]
60    fn default() -> Self {
61        Self {
62            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,
63            next: ptr::null(),
64            type_: AccelerationStructureTypeKHR::default(),
65            flags: BuildAccelerationStructureFlagsKHR::default(),
66            mode: BuildAccelerationStructureModeKHR::default(),
67            src_acceleration_structure: AccelerationStructureKHR::default(),
68            dst_acceleration_structure: AccelerationStructureKHR::default(),
69            geometry_count: u32::default(),
70            geometries: ptr::null(),
71            pointer_geometries: ptr::null(),
72            scratch_data: DeviceOrHostAddressKHR::default(),
73        }
74    }
75}
76
77unsafe impl Send for AccelerationStructureBuildGeometryInfoKHR {}
78unsafe impl Sync for AccelerationStructureBuildGeometryInfoKHR {}
79
80/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildRangeInfoKHR.html>
81#[repr(C)]
82#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
83pub struct AccelerationStructureBuildRangeInfoKHR {
84    pub primitive_count: u32,
85    pub primitive_offset: u32,
86    pub first_vertex: u32,
87    pub transform_offset: u32,
88}
89
90/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureBuildSizesInfoKHR.html>
91#[repr(C)]
92#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
93pub struct AccelerationStructureBuildSizesInfoKHR {
94    pub s_type: StructureType,
95    pub next: *const c_void,
96    pub acceleration_structure_size: DeviceSize,
97    pub update_scratch_size: DeviceSize,
98    pub build_scratch_size: DeviceSize,
99}
100
101impl Default for AccelerationStructureBuildSizesInfoKHR {
102    #[inline]
103    fn default() -> Self {
104        Self {
105            s_type: StructureType::ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR,
106            next: ptr::null(),
107            acceleration_structure_size: DeviceSize::default(),
108            update_scratch_size: DeviceSize::default(),
109            build_scratch_size: DeviceSize::default(),
110        }
111    }
112}
113
114unsafe impl Send for AccelerationStructureBuildSizesInfoKHR {}
115unsafe impl Sync for AccelerationStructureBuildSizesInfoKHR {}
116
117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCaptureDescriptorDataInfoEXT.html>
118#[repr(C)]
119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
120pub struct AccelerationStructureCaptureDescriptorDataInfoEXT {
121    pub s_type: StructureType,
122    pub next: *const c_void,
123    pub acceleration_structure: AccelerationStructureKHR,
124    pub acceleration_structure_nv: AccelerationStructureNV,
125}
126
127impl Default for AccelerationStructureCaptureDescriptorDataInfoEXT {
128    #[inline]
129    fn default() -> Self {
130        Self {
131            s_type: StructureType::ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
132            next: ptr::null(),
133            acceleration_structure: AccelerationStructureKHR::default(),
134            acceleration_structure_nv: AccelerationStructureNV::default(),
135        }
136    }
137}
138
139unsafe impl Send for AccelerationStructureCaptureDescriptorDataInfoEXT {}
140unsafe impl Sync for AccelerationStructureCaptureDescriptorDataInfoEXT {}
141
142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoKHR.html>
143#[repr(C)]
144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
145pub struct AccelerationStructureCreateInfoKHR {
146    pub s_type: StructureType,
147    pub next: *const c_void,
148    pub create_flags: AccelerationStructureCreateFlagsKHR,
149    pub buffer: Buffer,
150    pub offset: DeviceSize,
151    pub size: DeviceSize,
152    pub type_: AccelerationStructureTypeKHR,
153    pub device_address: DeviceAddress,
154}
155
156impl Default for AccelerationStructureCreateInfoKHR {
157    #[inline]
158    fn default() -> Self {
159        Self {
160            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR,
161            next: ptr::null(),
162            create_flags: AccelerationStructureCreateFlagsKHR::default(),
163            buffer: Buffer::default(),
164            offset: DeviceSize::default(),
165            size: DeviceSize::default(),
166            type_: AccelerationStructureTypeKHR::default(),
167            device_address: DeviceAddress::default(),
168        }
169    }
170}
171
172unsafe impl Send for AccelerationStructureCreateInfoKHR {}
173unsafe impl Sync for AccelerationStructureCreateInfoKHR {}
174
175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoNV.html>
176#[repr(C)]
177#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
178pub struct AccelerationStructureCreateInfoNV {
179    pub s_type: StructureType,
180    pub next: *const c_void,
181    pub compacted_size: DeviceSize,
182    pub info: AccelerationStructureInfoNV,
183}
184
185impl Default for AccelerationStructureCreateInfoNV {
186    #[inline]
187    fn default() -> Self {
188        Self {
189            s_type: StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV,
190            next: ptr::null(),
191            compacted_size: DeviceSize::default(),
192            info: AccelerationStructureInfoNV::default(),
193        }
194    }
195}
196
197unsafe impl Send for AccelerationStructureCreateInfoNV {}
198unsafe impl Sync for AccelerationStructureCreateInfoNV {}
199
200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX.html>
201#[repr(C)]
202#[derive(Copy, Clone, Debug)]
203pub struct AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
204    pub s_type: StructureType,
205    pub next: *const c_void,
206    pub compressed_data: DeviceOrHostAddressConstKHR,
207    pub data_size: DeviceSize,
208    pub num_triangles: u32,
209    pub num_vertices: u32,
210    pub max_primitive_index: u32,
211    pub max_geometry_index: u32,
212    pub format: CompressedTriangleFormatAMDX,
213}
214
215impl Default for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
216    #[inline]
217    fn default() -> Self {
218        Self {
219            s_type: StructureType::ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX,
220            next: ptr::null(),
221            compressed_data: DeviceOrHostAddressConstKHR::default(),
222            data_size: DeviceSize::default(),
223            num_triangles: u32::default(),
224            num_vertices: u32::default(),
225            max_primitive_index: u32::default(),
226            max_geometry_index: u32::default(),
227            format: CompressedTriangleFormatAMDX::default(),
228        }
229    }
230}
231
232unsafe impl Send for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {}
233unsafe impl Sync for AccelerationStructureDenseGeometryFormatTrianglesDataAMDX {}
234
235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html>
236#[repr(C)]
237#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
238pub struct AccelerationStructureDeviceAddressInfoKHR {
239    pub s_type: StructureType,
240    pub next: *const c_void,
241    pub acceleration_structure: AccelerationStructureKHR,
242}
243
244impl Default for AccelerationStructureDeviceAddressInfoKHR {
245    #[inline]
246    fn default() -> Self {
247        Self {
248            s_type: StructureType::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,
249            next: ptr::null(),
250            acceleration_structure: AccelerationStructureKHR::default(),
251        }
252    }
253}
254
255unsafe impl Send for AccelerationStructureDeviceAddressInfoKHR {}
256unsafe impl Sync for AccelerationStructureDeviceAddressInfoKHR {}
257
258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html>
259#[repr(C)]
260#[derive(Copy, Clone, Debug)]
261pub struct AccelerationStructureGeometryAabbsDataKHR {
262    pub s_type: StructureType,
263    pub next: *const c_void,
264    pub data: DeviceOrHostAddressConstKHR,
265    pub stride: DeviceSize,
266}
267
268impl Default for AccelerationStructureGeometryAabbsDataKHR {
269    #[inline]
270    fn default() -> Self {
271        Self {
272            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,
273            next: ptr::null(),
274            data: DeviceOrHostAddressConstKHR::default(),
275            stride: DeviceSize::default(),
276        }
277    }
278}
279
280unsafe impl Send for AccelerationStructureGeometryAabbsDataKHR {}
281unsafe impl Sync for AccelerationStructureGeometryAabbsDataKHR {}
282
283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html>
284#[repr(C)]
285#[derive(Copy, Clone, Debug)]
286pub struct AccelerationStructureGeometryInstancesDataKHR {
287    pub s_type: StructureType,
288    pub next: *const c_void,
289    pub array_of_pointers: Bool32,
290    pub data: DeviceOrHostAddressConstKHR,
291}
292
293impl Default for AccelerationStructureGeometryInstancesDataKHR {
294    #[inline]
295    fn default() -> Self {
296        Self {
297            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,
298            next: ptr::null(),
299            array_of_pointers: Bool32::default(),
300            data: DeviceOrHostAddressConstKHR::default(),
301        }
302    }
303}
304
305unsafe impl Send for AccelerationStructureGeometryInstancesDataKHR {}
306unsafe impl Sync for AccelerationStructureGeometryInstancesDataKHR {}
307
308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryKHR.html>
309#[repr(C)]
310#[derive(Copy, Clone, Debug)]
311pub struct AccelerationStructureGeometryKHR {
312    pub s_type: StructureType,
313    pub next: *const c_void,
314    pub geometry_type: GeometryTypeKHR,
315    pub geometry: AccelerationStructureGeometryDataKHR,
316    pub flags: GeometryFlagsKHR,
317}
318
319impl Default for AccelerationStructureGeometryKHR {
320    #[inline]
321    fn default() -> Self {
322        Self {
323            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_KHR,
324            next: ptr::null(),
325            geometry_type: GeometryTypeKHR::default(),
326            geometry: AccelerationStructureGeometryDataKHR::default(),
327            flags: GeometryFlagsKHR::default(),
328        }
329    }
330}
331
332unsafe impl Send for AccelerationStructureGeometryKHR {}
333unsafe impl Sync for AccelerationStructureGeometryKHR {}
334
335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryLinearSweptSpheresDataNV.html>
336#[repr(C)]
337#[derive(Copy, Clone, Debug)]
338pub struct AccelerationStructureGeometryLinearSweptSpheresDataNV {
339    pub s_type: StructureType,
340    pub next: *const c_void,
341    pub vertex_format: Format,
342    pub vertex_data: DeviceOrHostAddressConstKHR,
343    pub vertex_stride: DeviceSize,
344    pub radius_format: Format,
345    pub radius_data: DeviceOrHostAddressConstKHR,
346    pub radius_stride: DeviceSize,
347    pub index_type: IndexType,
348    pub index_data: DeviceOrHostAddressConstKHR,
349    pub index_stride: DeviceSize,
350    pub indexing_mode: RayTracingLssIndexingModeNV,
351    pub end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV,
352}
353
354impl Default for AccelerationStructureGeometryLinearSweptSpheresDataNV {
355    #[inline]
356    fn default() -> Self {
357        Self {
358            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV,
359            next: ptr::null(),
360            vertex_format: Format::default(),
361            vertex_data: DeviceOrHostAddressConstKHR::default(),
362            vertex_stride: DeviceSize::default(),
363            radius_format: Format::default(),
364            radius_data: DeviceOrHostAddressConstKHR::default(),
365            radius_stride: DeviceSize::default(),
366            index_type: IndexType::default(),
367            index_data: DeviceOrHostAddressConstKHR::default(),
368            index_stride: DeviceSize::default(),
369            indexing_mode: RayTracingLssIndexingModeNV::default(),
370            end_caps_mode: RayTracingLssPrimitiveEndCapsModeNV::default(),
371        }
372    }
373}
374
375unsafe impl Send for AccelerationStructureGeometryLinearSweptSpheresDataNV {}
376unsafe impl Sync for AccelerationStructureGeometryLinearSweptSpheresDataNV {}
377
378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryMotionTrianglesDataNV.html>
379#[repr(C)]
380#[derive(Copy, Clone, Debug)]
381pub struct AccelerationStructureGeometryMotionTrianglesDataNV {
382    pub s_type: StructureType,
383    pub next: *const c_void,
384    pub vertex_data: DeviceOrHostAddressConstKHR,
385}
386
387impl Default for AccelerationStructureGeometryMotionTrianglesDataNV {
388    #[inline]
389    fn default() -> Self {
390        Self {
391            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV,
392            next: ptr::null(),
393            vertex_data: DeviceOrHostAddressConstKHR::default(),
394        }
395    }
396}
397
398unsafe impl Send for AccelerationStructureGeometryMotionTrianglesDataNV {}
399unsafe impl Sync for AccelerationStructureGeometryMotionTrianglesDataNV {}
400
401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometrySpheresDataNV.html>
402#[repr(C)]
403#[derive(Copy, Clone, Debug)]
404pub struct AccelerationStructureGeometrySpheresDataNV {
405    pub s_type: StructureType,
406    pub next: *const c_void,
407    pub vertex_format: Format,
408    pub vertex_data: DeviceOrHostAddressConstKHR,
409    pub vertex_stride: DeviceSize,
410    pub radius_format: Format,
411    pub radius_data: DeviceOrHostAddressConstKHR,
412    pub radius_stride: DeviceSize,
413    pub index_type: IndexType,
414    pub index_data: DeviceOrHostAddressConstKHR,
415    pub index_stride: DeviceSize,
416}
417
418impl Default for AccelerationStructureGeometrySpheresDataNV {
419    #[inline]
420    fn default() -> Self {
421        Self {
422            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV,
423            next: ptr::null(),
424            vertex_format: Format::default(),
425            vertex_data: DeviceOrHostAddressConstKHR::default(),
426            vertex_stride: DeviceSize::default(),
427            radius_format: Format::default(),
428            radius_data: DeviceOrHostAddressConstKHR::default(),
429            radius_stride: DeviceSize::default(),
430            index_type: IndexType::default(),
431            index_data: DeviceOrHostAddressConstKHR::default(),
432            index_stride: DeviceSize::default(),
433        }
434    }
435}
436
437unsafe impl Send for AccelerationStructureGeometrySpheresDataNV {}
438unsafe impl Sync for AccelerationStructureGeometrySpheresDataNV {}
439
440/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html>
441#[repr(C)]
442#[derive(Copy, Clone, Debug)]
443pub struct AccelerationStructureGeometryTrianglesDataKHR {
444    pub s_type: StructureType,
445    pub next: *const c_void,
446    pub vertex_format: Format,
447    pub vertex_data: DeviceOrHostAddressConstKHR,
448    pub vertex_stride: DeviceSize,
449    pub max_vertex: u32,
450    pub index_type: IndexType,
451    pub index_data: DeviceOrHostAddressConstKHR,
452    pub transform_data: DeviceOrHostAddressConstKHR,
453}
454
455impl Default for AccelerationStructureGeometryTrianglesDataKHR {
456    #[inline]
457    fn default() -> Self {
458        Self {
459            s_type: StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,
460            next: ptr::null(),
461            vertex_format: Format::default(),
462            vertex_data: DeviceOrHostAddressConstKHR::default(),
463            vertex_stride: DeviceSize::default(),
464            max_vertex: u32::default(),
465            index_type: IndexType::default(),
466            index_data: DeviceOrHostAddressConstKHR::default(),
467            transform_data: DeviceOrHostAddressConstKHR::default(),
468        }
469    }
470}
471
472unsafe impl Send for AccelerationStructureGeometryTrianglesDataKHR {}
473unsafe impl Sync for AccelerationStructureGeometryTrianglesDataKHR {}
474
475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInfoNV.html>
476#[repr(C)]
477#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
478pub struct AccelerationStructureInfoNV {
479    pub s_type: StructureType,
480    pub next: *const c_void,
481    pub type_: AccelerationStructureTypeNV,
482    pub flags: BuildAccelerationStructureFlagsNV,
483    pub instance_count: u32,
484    pub geometry_count: u32,
485    pub geometries: *const GeometryNV,
486}
487
488impl Default for AccelerationStructureInfoNV {
489    #[inline]
490    fn default() -> Self {
491        Self {
492            s_type: StructureType::ACCELERATION_STRUCTURE_INFO_NV,
493            next: ptr::null(),
494            type_: AccelerationStructureTypeNV::default(),
495            flags: BuildAccelerationStructureFlagsNV::default(),
496            instance_count: u32::default(),
497            geometry_count: u32::default(),
498            geometries: ptr::null(),
499        }
500    }
501}
502
503unsafe impl Send for AccelerationStructureInfoNV {}
504unsafe impl Sync for AccelerationStructureInfoNV {}
505
506bitfields32! {
507    struct AccelerationStructureInstanceKHRBitfields0 {
508        (instance_custom_index, with_instance_custom_index)[0 .. 24],
509        (mask, with_mask)[24 .. 32],
510    }
511}
512
513bitfields32! {
514    struct AccelerationStructureInstanceKHRBitfields1 {
515        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
516        (flags, with_flags)[24 .. 32],
517    }
518}
519
520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceKHR.html>
521#[repr(C)]
522#[derive(Copy, Clone, Default, Debug, PartialEq)]
523pub struct AccelerationStructureInstanceKHR {
524    pub transform: TransformMatrixKHR,
525    pub acceleration_structure_reference: u64,
526    pub bitfields0: AccelerationStructureInstanceKHRBitfields0,
527    pub bitfields1: AccelerationStructureInstanceKHRBitfields1,
528}
529
530bitfields32! {
531    struct AccelerationStructureMatrixMotionInstanceNVBitfields0 {
532        (instance_custom_index, with_instance_custom_index)[0 .. 24],
533        (mask, with_mask)[24 .. 32],
534    }
535}
536
537bitfields32! {
538    struct AccelerationStructureMatrixMotionInstanceNVBitfields1 {
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/VkAccelerationStructureMatrixMotionInstanceNV.html>
545#[repr(C)]
546#[derive(Copy, Clone, Default, Debug, PartialEq)]
547pub struct AccelerationStructureMatrixMotionInstanceNV {
548    pub transform_t0: TransformMatrixKHR,
549    pub transform_t1: TransformMatrixKHR,
550    pub acceleration_structure_reference: u64,
551    pub bitfields0: AccelerationStructureMatrixMotionInstanceNVBitfields0,
552    pub bitfields1: AccelerationStructureMatrixMotionInstanceNVBitfields1,
553}
554
555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMemoryRequirementsInfoNV.html>
556#[repr(C)]
557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
558pub struct AccelerationStructureMemoryRequirementsInfoNV {
559    pub s_type: StructureType,
560    pub next: *const c_void,
561    pub type_: AccelerationStructureMemoryRequirementsTypeNV,
562    pub acceleration_structure: AccelerationStructureNV,
563}
564
565impl Default for AccelerationStructureMemoryRequirementsInfoNV {
566    #[inline]
567    fn default() -> Self {
568        Self {
569            s_type: StructureType::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
570            next: ptr::null(),
571            type_: AccelerationStructureMemoryRequirementsTypeNV::default(),
572            acceleration_structure: AccelerationStructureNV::default(),
573        }
574    }
575}
576
577unsafe impl Send for AccelerationStructureMemoryRequirementsInfoNV {}
578unsafe impl Sync for AccelerationStructureMemoryRequirementsInfoNV {}
579
580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInfoNV.html>
581#[repr(C)]
582#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
583pub struct AccelerationStructureMotionInfoNV {
584    pub s_type: StructureType,
585    pub next: *const c_void,
586    pub max_instances: u32,
587    pub flags: AccelerationStructureMotionInfoFlagsNV,
588}
589
590impl Default for AccelerationStructureMotionInfoNV {
591    #[inline]
592    fn default() -> Self {
593        Self {
594            s_type: StructureType::ACCELERATION_STRUCTURE_MOTION_INFO_NV,
595            next: ptr::null(),
596            max_instances: u32::default(),
597            flags: AccelerationStructureMotionInfoFlagsNV::default(),
598        }
599    }
600}
601
602unsafe impl Send for AccelerationStructureMotionInfoNV {}
603unsafe impl Sync for AccelerationStructureMotionInfoNV {}
604
605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceNV.html>
606#[repr(C)]
607#[derive(Copy, Clone, Default, Debug)]
608pub struct AccelerationStructureMotionInstanceNV {
609    pub type_: AccelerationStructureMotionInstanceTypeNV,
610    pub flags: AccelerationStructureMotionInstanceFlagsNV,
611    pub data: AccelerationStructureMotionInstanceDataNV,
612}
613
614bitfields32! {
615    struct AccelerationStructureSRTMotionInstanceNVBitfields0 {
616        (instance_custom_index, with_instance_custom_index)[0 .. 24],
617        (mask, with_mask)[24 .. 32],
618    }
619}
620
621bitfields32! {
622    struct AccelerationStructureSRTMotionInstanceNVBitfields1 {
623        (instance_shader_binding_table_record_offset, with_instance_shader_binding_table_record_offset)[0 .. 24],
624        (flags, with_flags)[24 .. 32],
625    }
626}
627
628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureSRTMotionInstanceNV.html>
629#[repr(C)]
630#[derive(Copy, Clone, Default, Debug, PartialEq)]
631pub struct AccelerationStructureSRTMotionInstanceNV {
632    pub transform_t0: SRTDataNV,
633    pub transform_t1: SRTDataNV,
634    pub acceleration_structure_reference: u64,
635    pub bitfields0: AccelerationStructureSRTMotionInstanceNVBitfields0,
636    pub bitfields1: AccelerationStructureSRTMotionInstanceNVBitfields1,
637}
638
639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesDisplacementMicromapNV.html>
640#[repr(C)]
641#[derive(Copy, Clone, Debug)]
642pub struct AccelerationStructureTrianglesDisplacementMicromapNV {
643    pub s_type: StructureType,
644    pub next: *mut c_void,
645    pub displacement_bias_and_scale_format: Format,
646    pub displacement_vector_format: Format,
647    pub displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR,
648    pub displacement_bias_and_scale_stride: DeviceSize,
649    pub displacement_vector_buffer: DeviceOrHostAddressConstKHR,
650    pub displacement_vector_stride: DeviceSize,
651    pub displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR,
652    pub displaced_micromap_primitive_flags_stride: DeviceSize,
653    pub index_type: IndexType,
654    pub index_buffer: DeviceOrHostAddressConstKHR,
655    pub index_stride: DeviceSize,
656    pub base_triangle: u32,
657    pub usage_counts_count: u32,
658    pub usage_counts: *const MicromapUsageEXT,
659    pub pointer_usage_counts: *const *const MicromapUsageEXT,
660    pub micromap: MicromapEXT,
661}
662
663impl Default for AccelerationStructureTrianglesDisplacementMicromapNV {
664    #[inline]
665    fn default() -> Self {
666        Self {
667            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV,
668            next: ptr::null_mut(),
669            displacement_bias_and_scale_format: Format::default(),
670            displacement_vector_format: Format::default(),
671            displacement_bias_and_scale_buffer: DeviceOrHostAddressConstKHR::default(),
672            displacement_bias_and_scale_stride: DeviceSize::default(),
673            displacement_vector_buffer: DeviceOrHostAddressConstKHR::default(),
674            displacement_vector_stride: DeviceSize::default(),
675            displaced_micromap_primitive_flags: DeviceOrHostAddressConstKHR::default(),
676            displaced_micromap_primitive_flags_stride: DeviceSize::default(),
677            index_type: IndexType::default(),
678            index_buffer: DeviceOrHostAddressConstKHR::default(),
679            index_stride: DeviceSize::default(),
680            base_triangle: u32::default(),
681            usage_counts_count: u32::default(),
682            usage_counts: ptr::null(),
683            pointer_usage_counts: ptr::null(),
684            micromap: MicromapEXT::default(),
685        }
686    }
687}
688
689unsafe impl Send for AccelerationStructureTrianglesDisplacementMicromapNV {}
690unsafe impl Sync for AccelerationStructureTrianglesDisplacementMicromapNV {}
691
692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesOpacityMicromapEXT.html>
693#[repr(C)]
694#[derive(Copy, Clone, Debug)]
695pub struct AccelerationStructureTrianglesOpacityMicromapEXT {
696    pub s_type: StructureType,
697    pub next: *mut c_void,
698    pub index_type: IndexType,
699    pub index_buffer: DeviceOrHostAddressConstKHR,
700    pub index_stride: DeviceSize,
701    pub base_triangle: u32,
702    pub usage_counts_count: u32,
703    pub usage_counts: *const MicromapUsageEXT,
704    pub pointer_usage_counts: *const *const MicromapUsageEXT,
705    pub micromap: MicromapEXT,
706}
707
708impl Default for AccelerationStructureTrianglesOpacityMicromapEXT {
709    #[inline]
710    fn default() -> Self {
711        Self {
712            s_type: StructureType::ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT,
713            next: ptr::null_mut(),
714            index_type: IndexType::default(),
715            index_buffer: DeviceOrHostAddressConstKHR::default(),
716            index_stride: DeviceSize::default(),
717            base_triangle: u32::default(),
718            usage_counts_count: u32::default(),
719            usage_counts: ptr::null(),
720            pointer_usage_counts: ptr::null(),
721            micromap: MicromapEXT::default(),
722        }
723    }
724}
725
726unsafe impl Send for AccelerationStructureTrianglesOpacityMicromapEXT {}
727unsafe impl Sync for AccelerationStructureTrianglesOpacityMicromapEXT {}
728
729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureVersionInfoKHR.html>
730#[repr(C)]
731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
732pub struct AccelerationStructureVersionInfoKHR {
733    pub s_type: StructureType,
734    pub next: *const c_void,
735    pub version_data: *const u8,
736}
737
738impl Default for AccelerationStructureVersionInfoKHR {
739    #[inline]
740    fn default() -> Self {
741        Self {
742            s_type: StructureType::ACCELERATION_STRUCTURE_VERSION_INFO_KHR,
743            next: ptr::null(),
744            version_data: ptr::null(),
745        }
746    }
747}
748
749unsafe impl Send for AccelerationStructureVersionInfoKHR {}
750unsafe impl Sync for AccelerationStructureVersionInfoKHR {}
751
752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireNextImageInfoKHR.html>
753#[repr(C)]
754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
755pub struct AcquireNextImageInfoKHR {
756    pub s_type: StructureType,
757    pub next: *const c_void,
758    pub swapchain: SwapchainKHR,
759    pub timeout: u64,
760    pub semaphore: Semaphore,
761    pub fence: Fence,
762    pub device_mask: u32,
763}
764
765impl Default for AcquireNextImageInfoKHR {
766    #[inline]
767    fn default() -> Self {
768        Self {
769            s_type: StructureType::ACQUIRE_NEXT_IMAGE_INFO_KHR,
770            next: ptr::null(),
771            swapchain: SwapchainKHR::default(),
772            timeout: u64::default(),
773            semaphore: Semaphore::default(),
774            fence: Fence::default(),
775            device_mask: u32::default(),
776        }
777    }
778}
779
780unsafe impl Send for AcquireNextImageInfoKHR {}
781unsafe impl Sync for AcquireNextImageInfoKHR {}
782
783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAcquireProfilingLockInfoKHR.html>
784#[repr(C)]
785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
786pub struct AcquireProfilingLockInfoKHR {
787    pub s_type: StructureType,
788    pub next: *const c_void,
789    pub flags: AcquireProfilingLockFlagsKHR,
790    pub timeout: u64,
791}
792
793impl Default for AcquireProfilingLockInfoKHR {
794    #[inline]
795    fn default() -> Self {
796        Self {
797            s_type: StructureType::ACQUIRE_PROFILING_LOCK_INFO_KHR,
798            next: ptr::null(),
799            flags: AcquireProfilingLockFlagsKHR::default(),
800            timeout: u64::default(),
801        }
802    }
803}
804
805unsafe impl Send for AcquireProfilingLockInfoKHR {}
806unsafe impl Sync for AcquireProfilingLockInfoKHR {}
807
808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAllocationCallbacks.html>
809#[repr(C)]
810#[derive(Copy, Clone)]
811pub struct AllocationCallbacks {
812    pub user_data: *mut c_void,
813    pub allocation: PFN_vkAllocationFunction,
814    pub reallocation: PFN_vkReallocationFunction,
815    pub free: PFN_vkFreeFunction,
816    pub internal_allocation: PFN_vkInternalAllocationNotification,
817    pub internal_free: PFN_vkInternalFreeNotification,
818}
819
820impl fmt::Debug for AllocationCallbacks {
821    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
822        f.debug_struct("AllocationCallbacks")
823            .field("user_data", &self.user_data)
824            .field("allocation", &(self.allocation.map(|f| f as *const u8)))
825            .field("reallocation", &(self.reallocation.map(|f| f as *const u8)))
826            .field("free", &(self.free.map(|f| f as *const u8)))
827            .field(
828                "internal_allocation",
829                &(self.internal_allocation.map(|f| f as *const u8)),
830            )
831            .field(
832                "internal_free",
833                &(self.internal_free.map(|f| f as *const u8)),
834            )
835            .finish()
836    }
837}
838
839impl Default for AllocationCallbacks {
840    #[inline]
841    fn default() -> Self {
842        Self {
843            user_data: ptr::null_mut(),
844            allocation: PFN_vkAllocationFunction::default(),
845            reallocation: PFN_vkReallocationFunction::default(),
846            free: PFN_vkFreeFunction::default(),
847            internal_allocation: PFN_vkInternalAllocationNotification::default(),
848            internal_free: PFN_vkInternalFreeNotification::default(),
849        }
850    }
851}
852
853unsafe impl Send for AllocationCallbacks {}
854unsafe impl Sync for AllocationCallbacks {}
855
856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAmigoProfilingSubmitInfoSEC.html>
857#[repr(C)]
858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
859pub struct AmigoProfilingSubmitInfoSEC {
860    pub s_type: StructureType,
861    pub next: *const c_void,
862    pub first_draw_timestamp: u64,
863    pub swap_buffer_timestamp: u64,
864}
865
866impl Default for AmigoProfilingSubmitInfoSEC {
867    #[inline]
868    fn default() -> Self {
869        Self {
870            s_type: StructureType::AMIGO_PROFILING_SUBMIT_INFO_SEC,
871            next: ptr::null(),
872            first_draw_timestamp: u64::default(),
873            swap_buffer_timestamp: u64::default(),
874        }
875    }
876}
877
878unsafe impl Send for AmigoProfilingSubmitInfoSEC {}
879unsafe impl Sync for AmigoProfilingSubmitInfoSEC {}
880
881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatProperties2ANDROID.html>
882#[repr(C)]
883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
884pub struct AndroidHardwareBufferFormatProperties2ANDROID {
885    pub s_type: StructureType,
886    pub next: *mut c_void,
887    pub format: Format,
888    pub external_format: u64,
889    pub format_features: FormatFeatureFlags2,
890    pub sampler_ycbcr_conversion_components: ComponentMapping,
891    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
892    pub suggested_ycbcr_range: SamplerYcbcrRange,
893    pub suggested_x_chroma_offset: ChromaLocation,
894    pub suggested_y_chroma_offset: ChromaLocation,
895}
896
897impl Default for AndroidHardwareBufferFormatProperties2ANDROID {
898    #[inline]
899    fn default() -> Self {
900        Self {
901            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID,
902            next: ptr::null_mut(),
903            format: Format::default(),
904            external_format: u64::default(),
905            format_features: FormatFeatureFlags2::default(),
906            sampler_ycbcr_conversion_components: ComponentMapping::default(),
907            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
908            suggested_ycbcr_range: SamplerYcbcrRange::default(),
909            suggested_x_chroma_offset: ChromaLocation::default(),
910            suggested_y_chroma_offset: ChromaLocation::default(),
911        }
912    }
913}
914
915unsafe impl Send for AndroidHardwareBufferFormatProperties2ANDROID {}
916unsafe impl Sync for AndroidHardwareBufferFormatProperties2ANDROID {}
917
918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html>
919#[repr(C)]
920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
921pub struct AndroidHardwareBufferFormatPropertiesANDROID {
922    pub s_type: StructureType,
923    pub next: *mut c_void,
924    pub format: Format,
925    pub external_format: u64,
926    pub format_features: FormatFeatureFlags,
927    pub sampler_ycbcr_conversion_components: ComponentMapping,
928    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
929    pub suggested_ycbcr_range: SamplerYcbcrRange,
930    pub suggested_x_chroma_offset: ChromaLocation,
931    pub suggested_y_chroma_offset: ChromaLocation,
932}
933
934impl Default for AndroidHardwareBufferFormatPropertiesANDROID {
935    #[inline]
936    fn default() -> Self {
937        Self {
938            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,
939            next: ptr::null_mut(),
940            format: Format::default(),
941            external_format: u64::default(),
942            format_features: FormatFeatureFlags::default(),
943            sampler_ycbcr_conversion_components: ComponentMapping::default(),
944            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
945            suggested_ycbcr_range: SamplerYcbcrRange::default(),
946            suggested_x_chroma_offset: ChromaLocation::default(),
947            suggested_y_chroma_offset: ChromaLocation::default(),
948        }
949    }
950}
951
952unsafe impl Send for AndroidHardwareBufferFormatPropertiesANDROID {}
953unsafe impl Sync for AndroidHardwareBufferFormatPropertiesANDROID {}
954
955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatResolvePropertiesANDROID.html>
956#[repr(C)]
957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
958pub struct AndroidHardwareBufferFormatResolvePropertiesANDROID {
959    pub s_type: StructureType,
960    pub next: *mut c_void,
961    pub color_attachment_format: Format,
962}
963
964impl Default for AndroidHardwareBufferFormatResolvePropertiesANDROID {
965    #[inline]
966    fn default() -> Self {
967        Self {
968            s_type: StructureType::ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID,
969            next: ptr::null_mut(),
970            color_attachment_format: Format::default(),
971        }
972    }
973}
974
975unsafe impl Send for AndroidHardwareBufferFormatResolvePropertiesANDROID {}
976unsafe impl Sync for AndroidHardwareBufferFormatResolvePropertiesANDROID {}
977
978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferPropertiesANDROID.html>
979#[repr(C)]
980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
981pub struct AndroidHardwareBufferPropertiesANDROID {
982    pub s_type: StructureType,
983    pub next: *mut c_void,
984    pub allocation_size: DeviceSize,
985    pub memory_type_bits: u32,
986}
987
988impl Default for AndroidHardwareBufferPropertiesANDROID {
989    #[inline]
990    fn default() -> Self {
991        Self {
992            s_type: StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,
993            next: ptr::null_mut(),
994            allocation_size: DeviceSize::default(),
995            memory_type_bits: u32::default(),
996        }
997    }
998}
999
1000unsafe impl Send for AndroidHardwareBufferPropertiesANDROID {}
1001unsafe impl Sync for AndroidHardwareBufferPropertiesANDROID {}
1002
1003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidHardwareBufferUsageANDROID.html>
1004#[repr(C)]
1005#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1006pub struct AndroidHardwareBufferUsageANDROID {
1007    pub s_type: StructureType,
1008    pub next: *mut c_void,
1009    pub android_hardware_buffer_usage: u64,
1010}
1011
1012impl Default for AndroidHardwareBufferUsageANDROID {
1013    #[inline]
1014    fn default() -> Self {
1015        Self {
1016            s_type: StructureType::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,
1017            next: ptr::null_mut(),
1018            android_hardware_buffer_usage: u64::default(),
1019        }
1020    }
1021}
1022
1023unsafe impl Send for AndroidHardwareBufferUsageANDROID {}
1024unsafe impl Sync for AndroidHardwareBufferUsageANDROID {}
1025
1026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAndroidSurfaceCreateInfoKHR.html>
1027#[repr(C)]
1028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1029pub struct AndroidSurfaceCreateInfoKHR {
1030    pub s_type: StructureType,
1031    pub next: *const c_void,
1032    pub flags: AndroidSurfaceCreateFlagsKHR,
1033    pub window: *mut ANativeWindow,
1034}
1035
1036impl Default for AndroidSurfaceCreateInfoKHR {
1037    #[inline]
1038    fn default() -> Self {
1039        Self {
1040            s_type: StructureType::ANDROID_SURFACE_CREATE_INFO_KHR,
1041            next: ptr::null(),
1042            flags: AndroidSurfaceCreateFlagsKHR::default(),
1043            window: ptr::null_mut(),
1044        }
1045    }
1046}
1047
1048unsafe impl Send for AndroidSurfaceCreateInfoKHR {}
1049unsafe impl Sync for AndroidSurfaceCreateInfoKHR {}
1050
1051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagDataAMD.html>
1052#[repr(C)]
1053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1054pub struct AntiLagDataAMD {
1055    pub s_type: StructureType,
1056    pub next: *const c_void,
1057    pub mode: AntiLagModeAMD,
1058    pub max_fps: u32,
1059    pub presentation_info: *const AntiLagPresentationInfoAMD,
1060}
1061
1062impl Default for AntiLagDataAMD {
1063    #[inline]
1064    fn default() -> Self {
1065        Self {
1066            s_type: StructureType::ANTI_LAG_DATA_AMD,
1067            next: ptr::null(),
1068            mode: AntiLagModeAMD::default(),
1069            max_fps: u32::default(),
1070            presentation_info: ptr::null(),
1071        }
1072    }
1073}
1074
1075unsafe impl Send for AntiLagDataAMD {}
1076unsafe impl Sync for AntiLagDataAMD {}
1077
1078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAntiLagPresentationInfoAMD.html>
1079#[repr(C)]
1080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1081pub struct AntiLagPresentationInfoAMD {
1082    pub s_type: StructureType,
1083    pub next: *mut c_void,
1084    pub stage: AntiLagStageAMD,
1085    pub frame_index: u64,
1086}
1087
1088impl Default for AntiLagPresentationInfoAMD {
1089    #[inline]
1090    fn default() -> Self {
1091        Self {
1092            s_type: StructureType::ANTI_LAG_PRESENTATION_INFO_AMD,
1093            next: ptr::null_mut(),
1094            stage: AntiLagStageAMD::default(),
1095            frame_index: u64::default(),
1096        }
1097    }
1098}
1099
1100unsafe impl Send for AntiLagPresentationInfoAMD {}
1101unsafe impl Sync for AntiLagPresentationInfoAMD {}
1102
1103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationInfo.html>
1104#[repr(C)]
1105#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1106pub struct ApplicationInfo {
1107    pub s_type: StructureType,
1108    pub next: *const c_void,
1109    pub application_name: *const c_char,
1110    pub application_version: u32,
1111    pub engine_name: *const c_char,
1112    pub engine_version: u32,
1113    pub api_version: u32,
1114}
1115
1116impl Default for ApplicationInfo {
1117    #[inline]
1118    fn default() -> Self {
1119        Self {
1120            s_type: StructureType::APPLICATION_INFO,
1121            next: ptr::null(),
1122            application_name: ptr::null(),
1123            application_version: u32::default(),
1124            engine_name: ptr::null(),
1125            engine_version: u32::default(),
1126            api_version: u32::default(),
1127        }
1128    }
1129}
1130
1131unsafe impl Send for ApplicationInfo {}
1132unsafe impl Sync for ApplicationInfo {}
1133
1134/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkApplicationParametersEXT.html>
1135#[repr(C)]
1136#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1137pub struct ApplicationParametersEXT {
1138    pub s_type: StructureType,
1139    pub next: *const c_void,
1140    pub vendor_id: u32,
1141    pub device_id: u32,
1142    pub key: u32,
1143    pub value: u64,
1144}
1145
1146impl Default for ApplicationParametersEXT {
1147    #[inline]
1148    fn default() -> Self {
1149        Self {
1150            s_type: StructureType::APPLICATION_PARAMETERS_EXT,
1151            next: ptr::null(),
1152            vendor_id: u32::default(),
1153            device_id: u32::default(),
1154            key: u32::default(),
1155            value: u64::default(),
1156        }
1157    }
1158}
1159
1160unsafe impl Send for ApplicationParametersEXT {}
1161unsafe impl Sync for ApplicationParametersEXT {}
1162
1163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription.html>
1164#[repr(C)]
1165#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1166pub struct AttachmentDescription {
1167    pub flags: AttachmentDescriptionFlags,
1168    pub format: Format,
1169    pub samples: SampleCountFlags,
1170    pub load_op: AttachmentLoadOp,
1171    pub store_op: AttachmentStoreOp,
1172    pub stencil_load_op: AttachmentLoadOp,
1173    pub stencil_store_op: AttachmentStoreOp,
1174    pub initial_layout: ImageLayout,
1175    pub final_layout: ImageLayout,
1176}
1177
1178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2.html>
1179#[repr(C)]
1180#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1181pub struct AttachmentDescription2 {
1182    pub s_type: StructureType,
1183    pub next: *const c_void,
1184    pub flags: AttachmentDescriptionFlags,
1185    pub format: Format,
1186    pub samples: SampleCountFlags,
1187    pub load_op: AttachmentLoadOp,
1188    pub store_op: AttachmentStoreOp,
1189    pub stencil_load_op: AttachmentLoadOp,
1190    pub stencil_store_op: AttachmentStoreOp,
1191    pub initial_layout: ImageLayout,
1192    pub final_layout: ImageLayout,
1193}
1194
1195impl Default for AttachmentDescription2 {
1196    #[inline]
1197    fn default() -> Self {
1198        Self {
1199            s_type: StructureType::ATTACHMENT_DESCRIPTION_2,
1200            next: ptr::null(),
1201            flags: AttachmentDescriptionFlags::default(),
1202            format: Format::default(),
1203            samples: SampleCountFlags::default(),
1204            load_op: AttachmentLoadOp::default(),
1205            store_op: AttachmentStoreOp::default(),
1206            stencil_load_op: AttachmentLoadOp::default(),
1207            stencil_store_op: AttachmentStoreOp::default(),
1208            initial_layout: ImageLayout::default(),
1209            final_layout: ImageLayout::default(),
1210        }
1211    }
1212}
1213
1214unsafe impl Send for AttachmentDescription2 {}
1215unsafe impl Sync for AttachmentDescription2 {}
1216
1217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayout.html>
1218#[repr(C)]
1219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1220pub struct AttachmentDescriptionStencilLayout {
1221    pub s_type: StructureType,
1222    pub next: *mut c_void,
1223    pub stencil_initial_layout: ImageLayout,
1224    pub stencil_final_layout: ImageLayout,
1225}
1226
1227impl Default for AttachmentDescriptionStencilLayout {
1228    #[inline]
1229    fn default() -> Self {
1230        Self {
1231            s_type: StructureType::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
1232            next: ptr::null_mut(),
1233            stencil_initial_layout: ImageLayout::default(),
1234            stencil_final_layout: ImageLayout::default(),
1235        }
1236    }
1237}
1238
1239unsafe impl Send for AttachmentDescriptionStencilLayout {}
1240unsafe impl Sync for AttachmentDescriptionStencilLayout {}
1241
1242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentFeedbackLoopInfoEXT.html>
1243#[repr(C)]
1244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1245pub struct AttachmentFeedbackLoopInfoEXT {
1246    pub s_type: StructureType,
1247    pub next: *const c_void,
1248    pub feedback_loop_enable: Bool32,
1249}
1250
1251impl Default for AttachmentFeedbackLoopInfoEXT {
1252    #[inline]
1253    fn default() -> Self {
1254        Self {
1255            s_type: StructureType::ATTACHMENT_FEEDBACK_LOOP_INFO_EXT,
1256            next: ptr::null(),
1257            feedback_loop_enable: Bool32::default(),
1258        }
1259    }
1260}
1261
1262unsafe impl Send for AttachmentFeedbackLoopInfoEXT {}
1263unsafe impl Sync for AttachmentFeedbackLoopInfoEXT {}
1264
1265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference.html>
1266#[repr(C)]
1267#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1268pub struct AttachmentReference {
1269    pub attachment: u32,
1270    pub layout: ImageLayout,
1271}
1272
1273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2.html>
1274#[repr(C)]
1275#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1276pub struct AttachmentReference2 {
1277    pub s_type: StructureType,
1278    pub next: *const c_void,
1279    pub attachment: u32,
1280    pub layout: ImageLayout,
1281    pub aspect_mask: ImageAspectFlags,
1282}
1283
1284impl Default for AttachmentReference2 {
1285    #[inline]
1286    fn default() -> Self {
1287        Self {
1288            s_type: StructureType::ATTACHMENT_REFERENCE_2,
1289            next: ptr::null(),
1290            attachment: u32::default(),
1291            layout: ImageLayout::default(),
1292            aspect_mask: ImageAspectFlags::default(),
1293        }
1294    }
1295}
1296
1297unsafe impl Send for AttachmentReference2 {}
1298unsafe impl Sync for AttachmentReference2 {}
1299
1300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayout.html>
1301#[repr(C)]
1302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1303pub struct AttachmentReferenceStencilLayout {
1304    pub s_type: StructureType,
1305    pub next: *mut c_void,
1306    pub stencil_layout: ImageLayout,
1307}
1308
1309impl Default for AttachmentReferenceStencilLayout {
1310    #[inline]
1311    fn default() -> Self {
1312        Self {
1313            s_type: StructureType::ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
1314            next: ptr::null_mut(),
1315            stencil_layout: ImageLayout::default(),
1316        }
1317    }
1318}
1319
1320unsafe impl Send for AttachmentReferenceStencilLayout {}
1321unsafe impl Sync for AttachmentReferenceStencilLayout {}
1322
1323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoAMD.html>
1324#[repr(C)]
1325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1326pub struct AttachmentSampleCountInfoAMD {
1327    pub s_type: StructureType,
1328    pub next: *const c_void,
1329    pub color_attachment_count: u32,
1330    pub color_attachment_samples: *const SampleCountFlags,
1331    pub depth_stencil_attachment_samples: SampleCountFlags,
1332}
1333
1334impl Default for AttachmentSampleCountInfoAMD {
1335    #[inline]
1336    fn default() -> Self {
1337        Self {
1338            s_type: StructureType::ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
1339            next: ptr::null(),
1340            color_attachment_count: u32::default(),
1341            color_attachment_samples: ptr::null(),
1342            depth_stencil_attachment_samples: SampleCountFlags::default(),
1343        }
1344    }
1345}
1346
1347unsafe impl Send for AttachmentSampleCountInfoAMD {}
1348unsafe impl Sync for AttachmentSampleCountInfoAMD {}
1349
1350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleLocationsEXT.html>
1351#[repr(C)]
1352#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1353pub struct AttachmentSampleLocationsEXT {
1354    pub attachment_index: u32,
1355    pub sample_locations_info: SampleLocationsInfoEXT,
1356}
1357
1358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseInStructure.html>
1359#[repr(C)]
1360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1361pub struct BaseInStructure {
1362    pub s_type: StructureType,
1363    pub next: *const BaseInStructure,
1364}
1365
1366impl Default for BaseInStructure {
1367    #[inline]
1368    fn default() -> Self {
1369        Self {
1370            s_type: StructureType::default(),
1371            next: ptr::null(),
1372        }
1373    }
1374}
1375
1376unsafe impl Send for BaseInStructure {}
1377unsafe impl Sync for BaseInStructure {}
1378
1379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBaseOutStructure.html>
1380#[repr(C)]
1381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1382pub struct BaseOutStructure {
1383    pub s_type: StructureType,
1384    pub next: *mut BaseOutStructure,
1385}
1386
1387impl Default for BaseOutStructure {
1388    #[inline]
1389    fn default() -> Self {
1390        Self {
1391            s_type: StructureType::default(),
1392            next: ptr::null_mut(),
1393        }
1394    }
1395}
1396
1397unsafe impl Send for BaseOutStructure {}
1398unsafe impl Sync for BaseOutStructure {}
1399
1400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html>
1401#[repr(C)]
1402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1403pub struct BindAccelerationStructureMemoryInfoNV {
1404    pub s_type: StructureType,
1405    pub next: *const c_void,
1406    pub acceleration_structure: AccelerationStructureNV,
1407    pub memory: DeviceMemory,
1408    pub memory_offset: DeviceSize,
1409    pub device_index_count: u32,
1410    pub device_indices: *const u32,
1411}
1412
1413impl Default for BindAccelerationStructureMemoryInfoNV {
1414    #[inline]
1415    fn default() -> Self {
1416        Self {
1417            s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
1418            next: ptr::null(),
1419            acceleration_structure: AccelerationStructureNV::default(),
1420            memory: DeviceMemory::default(),
1421            memory_offset: DeviceSize::default(),
1422            device_index_count: u32::default(),
1423            device_indices: ptr::null(),
1424        }
1425    }
1426}
1427
1428unsafe impl Send for BindAccelerationStructureMemoryInfoNV {}
1429unsafe impl Sync for BindAccelerationStructureMemoryInfoNV {}
1430
1431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html>
1432#[repr(C)]
1433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1434pub struct BindBufferMemoryDeviceGroupInfo {
1435    pub s_type: StructureType,
1436    pub next: *const c_void,
1437    pub device_index_count: u32,
1438    pub device_indices: *const u32,
1439}
1440
1441impl Default for BindBufferMemoryDeviceGroupInfo {
1442    #[inline]
1443    fn default() -> Self {
1444        Self {
1445            s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1446            next: ptr::null(),
1447            device_index_count: u32::default(),
1448            device_indices: ptr::null(),
1449        }
1450    }
1451}
1452
1453unsafe impl Send for BindBufferMemoryDeviceGroupInfo {}
1454unsafe impl Sync for BindBufferMemoryDeviceGroupInfo {}
1455
1456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html>
1457#[repr(C)]
1458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1459pub struct BindBufferMemoryInfo {
1460    pub s_type: StructureType,
1461    pub next: *const c_void,
1462    pub buffer: Buffer,
1463    pub memory: DeviceMemory,
1464    pub memory_offset: DeviceSize,
1465}
1466
1467impl Default for BindBufferMemoryInfo {
1468    #[inline]
1469    fn default() -> Self {
1470        Self {
1471            s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
1472            next: ptr::null(),
1473            buffer: Buffer::default(),
1474            memory: DeviceMemory::default(),
1475            memory_offset: DeviceSize::default(),
1476        }
1477    }
1478}
1479
1480unsafe impl Send for BindBufferMemoryInfo {}
1481unsafe impl Sync for BindBufferMemoryInfo {}
1482
1483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDataGraphPipelineSessionMemoryInfoARM.html>
1484#[repr(C)]
1485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1486pub struct BindDataGraphPipelineSessionMemoryInfoARM {
1487    pub s_type: StructureType,
1488    pub next: *const c_void,
1489    pub session: DataGraphPipelineSessionARM,
1490    pub bind_point: DataGraphPipelineSessionBindPointARM,
1491    pub object_index: u32,
1492    pub memory: DeviceMemory,
1493    pub memory_offset: DeviceSize,
1494}
1495
1496impl Default for BindDataGraphPipelineSessionMemoryInfoARM {
1497    #[inline]
1498    fn default() -> Self {
1499        Self {
1500            s_type: StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM,
1501            next: ptr::null(),
1502            session: DataGraphPipelineSessionARM::default(),
1503            bind_point: DataGraphPipelineSessionBindPointARM::default(),
1504            object_index: u32::default(),
1505            memory: DeviceMemory::default(),
1506            memory_offset: DeviceSize::default(),
1507        }
1508    }
1509}
1510
1511unsafe impl Send for BindDataGraphPipelineSessionMemoryInfoARM {}
1512unsafe impl Sync for BindDataGraphPipelineSessionMemoryInfoARM {}
1513
1514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html>
1515#[repr(C)]
1516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1517pub struct BindDescriptorBufferEmbeddedSamplersInfoEXT {
1518    pub s_type: StructureType,
1519    pub next: *const c_void,
1520    pub stage_flags: ShaderStageFlags,
1521    pub layout: PipelineLayout,
1522    pub set: u32,
1523}
1524
1525impl Default for BindDescriptorBufferEmbeddedSamplersInfoEXT {
1526    #[inline]
1527    fn default() -> Self {
1528        Self {
1529            s_type: StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT,
1530            next: ptr::null(),
1531            stage_flags: ShaderStageFlags::default(),
1532            layout: PipelineLayout::default(),
1533            set: u32::default(),
1534        }
1535    }
1536}
1537
1538unsafe impl Send for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1539unsafe impl Sync for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1540
1541/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html>
1542#[repr(C)]
1543#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1544pub struct BindDescriptorSetsInfo {
1545    pub s_type: StructureType,
1546    pub next: *const c_void,
1547    pub stage_flags: ShaderStageFlags,
1548    pub layout: PipelineLayout,
1549    pub first_set: u32,
1550    pub descriptor_set_count: u32,
1551    pub descriptor_sets: *const DescriptorSet,
1552    pub dynamic_offset_count: u32,
1553    pub dynamic_offsets: *const u32,
1554}
1555
1556impl Default for BindDescriptorSetsInfo {
1557    #[inline]
1558    fn default() -> Self {
1559        Self {
1560            s_type: StructureType::BIND_DESCRIPTOR_SETS_INFO,
1561            next: ptr::null(),
1562            stage_flags: ShaderStageFlags::default(),
1563            layout: PipelineLayout::default(),
1564            first_set: u32::default(),
1565            descriptor_set_count: u32::default(),
1566            descriptor_sets: ptr::null(),
1567            dynamic_offset_count: u32::default(),
1568            dynamic_offsets: ptr::null(),
1569        }
1570    }
1571}
1572
1573unsafe impl Send for BindDescriptorSetsInfo {}
1574unsafe impl Sync for BindDescriptorSetsInfo {}
1575
1576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html>
1577#[repr(C)]
1578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1579pub struct BindImageMemoryDeviceGroupInfo {
1580    pub s_type: StructureType,
1581    pub next: *const c_void,
1582    pub device_index_count: u32,
1583    pub device_indices: *const u32,
1584    pub split_instance_bind_region_count: u32,
1585    pub split_instance_bind_regions: *const Rect2D,
1586}
1587
1588impl Default for BindImageMemoryDeviceGroupInfo {
1589    #[inline]
1590    fn default() -> Self {
1591        Self {
1592            s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1593            next: ptr::null(),
1594            device_index_count: u32::default(),
1595            device_indices: ptr::null(),
1596            split_instance_bind_region_count: u32::default(),
1597            split_instance_bind_regions: ptr::null(),
1598        }
1599    }
1600}
1601
1602unsafe impl Send for BindImageMemoryDeviceGroupInfo {}
1603unsafe impl Sync for BindImageMemoryDeviceGroupInfo {}
1604
1605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html>
1606#[repr(C)]
1607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1608pub struct BindImageMemoryInfo {
1609    pub s_type: StructureType,
1610    pub next: *const c_void,
1611    pub image: Image,
1612    pub memory: DeviceMemory,
1613    pub memory_offset: DeviceSize,
1614}
1615
1616impl Default for BindImageMemoryInfo {
1617    #[inline]
1618    fn default() -> Self {
1619        Self {
1620            s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
1621            next: ptr::null(),
1622            image: Image::default(),
1623            memory: DeviceMemory::default(),
1624            memory_offset: DeviceSize::default(),
1625        }
1626    }
1627}
1628
1629unsafe impl Send for BindImageMemoryInfo {}
1630unsafe impl Sync for BindImageMemoryInfo {}
1631
1632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html>
1633#[repr(C)]
1634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1635pub struct BindImageMemorySwapchainInfoKHR {
1636    pub s_type: StructureType,
1637    pub next: *const c_void,
1638    pub swapchain: SwapchainKHR,
1639    pub image_index: u32,
1640}
1641
1642impl Default for BindImageMemorySwapchainInfoKHR {
1643    #[inline]
1644    fn default() -> Self {
1645        Self {
1646            s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
1647            next: ptr::null(),
1648            swapchain: SwapchainKHR::default(),
1649            image_index: u32::default(),
1650        }
1651    }
1652}
1653
1654unsafe impl Send for BindImageMemorySwapchainInfoKHR {}
1655unsafe impl Sync for BindImageMemorySwapchainInfoKHR {}
1656
1657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html>
1658#[repr(C)]
1659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1660pub struct BindImagePlaneMemoryInfo {
1661    pub s_type: StructureType,
1662    pub next: *const c_void,
1663    pub plane_aspect: ImageAspectFlags,
1664}
1665
1666impl Default for BindImagePlaneMemoryInfo {
1667    #[inline]
1668    fn default() -> Self {
1669        Self {
1670            s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
1671            next: ptr::null(),
1672            plane_aspect: ImageAspectFlags::default(),
1673        }
1674    }
1675}
1676
1677unsafe impl Send for BindImagePlaneMemoryInfo {}
1678unsafe impl Sync for BindImagePlaneMemoryInfo {}
1679
1680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html>
1681#[repr(C)]
1682#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1683pub struct BindIndexBufferIndirectCommandEXT {
1684    pub buffer_address: DeviceAddress,
1685    pub size: u32,
1686    pub index_type: IndexType,
1687}
1688
1689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html>
1690#[repr(C)]
1691#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1692pub struct BindIndexBufferIndirectCommandNV {
1693    pub buffer_address: DeviceAddress,
1694    pub size: u32,
1695    pub index_type: IndexType,
1696}
1697
1698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatus.html>
1699#[repr(C)]
1700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1701pub struct BindMemoryStatus {
1702    pub s_type: StructureType,
1703    pub next: *const c_void,
1704    pub result: *mut Result,
1705}
1706
1707impl Default for BindMemoryStatus {
1708    #[inline]
1709    fn default() -> Self {
1710        Self {
1711            s_type: StructureType::BIND_MEMORY_STATUS,
1712            next: ptr::null(),
1713            result: ptr::null_mut(),
1714        }
1715    }
1716}
1717
1718unsafe impl Send for BindMemoryStatus {}
1719unsafe impl Sync for BindMemoryStatus {}
1720
1721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html>
1722#[repr(C)]
1723#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1724pub struct BindPipelineIndirectCommandNV {
1725    pub pipeline_address: DeviceAddress,
1726}
1727
1728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html>
1729#[repr(C)]
1730#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1731pub struct BindShaderGroupIndirectCommandNV {
1732    pub group_index: u32,
1733}
1734
1735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindSparseInfo.html>
1736#[repr(C)]
1737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1738pub struct BindSparseInfo {
1739    pub s_type: StructureType,
1740    pub next: *const c_void,
1741    pub wait_semaphore_count: u32,
1742    pub wait_semaphores: *const Semaphore,
1743    pub buffer_bind_count: u32,
1744    pub buffer_binds: *const SparseBufferMemoryBindInfo,
1745    pub image_opaque_bind_count: u32,
1746    pub image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
1747    pub image_bind_count: u32,
1748    pub image_binds: *const SparseImageMemoryBindInfo,
1749    pub signal_semaphore_count: u32,
1750    pub signal_semaphores: *const Semaphore,
1751}
1752
1753impl Default for BindSparseInfo {
1754    #[inline]
1755    fn default() -> Self {
1756        Self {
1757            s_type: StructureType::BIND_SPARSE_INFO,
1758            next: ptr::null(),
1759            wait_semaphore_count: u32::default(),
1760            wait_semaphores: ptr::null(),
1761            buffer_bind_count: u32::default(),
1762            buffer_binds: ptr::null(),
1763            image_opaque_bind_count: u32::default(),
1764            image_opaque_binds: ptr::null(),
1765            image_bind_count: u32::default(),
1766            image_binds: ptr::null(),
1767            signal_semaphore_count: u32::default(),
1768            signal_semaphores: ptr::null(),
1769        }
1770    }
1771}
1772
1773unsafe impl Send for BindSparseInfo {}
1774unsafe impl Sync for BindSparseInfo {}
1775
1776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindTensorMemoryInfoARM.html>
1777#[repr(C)]
1778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1779pub struct BindTensorMemoryInfoARM {
1780    pub s_type: StructureType,
1781    pub next: *const c_void,
1782    pub tensor: TensorARM,
1783    pub memory: DeviceMemory,
1784    pub memory_offset: DeviceSize,
1785}
1786
1787impl Default for BindTensorMemoryInfoARM {
1788    #[inline]
1789    fn default() -> Self {
1790        Self {
1791            s_type: StructureType::BIND_TENSOR_MEMORY_INFO_ARM,
1792            next: ptr::null(),
1793            tensor: TensorARM::default(),
1794            memory: DeviceMemory::default(),
1795            memory_offset: DeviceSize::default(),
1796        }
1797    }
1798}
1799
1800unsafe impl Send for BindTensorMemoryInfoARM {}
1801unsafe impl Sync for BindTensorMemoryInfoARM {}
1802
1803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html>
1804#[repr(C)]
1805#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1806pub struct BindVertexBufferIndirectCommandEXT {
1807    pub buffer_address: DeviceAddress,
1808    pub size: u32,
1809    pub stride: u32,
1810}
1811
1812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html>
1813#[repr(C)]
1814#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1815pub struct BindVertexBufferIndirectCommandNV {
1816    pub buffer_address: DeviceAddress,
1817    pub size: u32,
1818    pub stride: u32,
1819}
1820
1821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html>
1822#[repr(C)]
1823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1824pub struct BindVideoSessionMemoryInfoKHR {
1825    pub s_type: StructureType,
1826    pub next: *const c_void,
1827    pub memory_bind_index: u32,
1828    pub memory: DeviceMemory,
1829    pub memory_offset: DeviceSize,
1830    pub memory_size: DeviceSize,
1831}
1832
1833impl Default for BindVideoSessionMemoryInfoKHR {
1834    #[inline]
1835    fn default() -> Self {
1836        Self {
1837            s_type: StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR,
1838            next: ptr::null(),
1839            memory_bind_index: u32::default(),
1840            memory: DeviceMemory::default(),
1841            memory_offset: DeviceSize::default(),
1842            memory_size: DeviceSize::default(),
1843        }
1844    }
1845}
1846
1847unsafe impl Send for BindVideoSessionMemoryInfoKHR {}
1848unsafe impl Sync for BindVideoSessionMemoryInfoKHR {}
1849
1850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html>
1851#[repr(C)]
1852#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1853pub struct BlitImageCubicWeightsInfoQCOM {
1854    pub s_type: StructureType,
1855    pub next: *const c_void,
1856    pub cubic_weights: CubicFilterWeightsQCOM,
1857}
1858
1859impl Default for BlitImageCubicWeightsInfoQCOM {
1860    #[inline]
1861    fn default() -> Self {
1862        Self {
1863            s_type: StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM,
1864            next: ptr::null(),
1865            cubic_weights: CubicFilterWeightsQCOM::default(),
1866        }
1867    }
1868}
1869
1870unsafe impl Send for BlitImageCubicWeightsInfoQCOM {}
1871unsafe impl Sync for BlitImageCubicWeightsInfoQCOM {}
1872
1873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2.html>
1874#[repr(C)]
1875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1876pub struct BlitImageInfo2 {
1877    pub s_type: StructureType,
1878    pub next: *const c_void,
1879    pub src_image: Image,
1880    pub src_image_layout: ImageLayout,
1881    pub dst_image: Image,
1882    pub dst_image_layout: ImageLayout,
1883    pub region_count: u32,
1884    pub regions: *const ImageBlit2,
1885    pub filter: Filter,
1886}
1887
1888impl Default for BlitImageInfo2 {
1889    #[inline]
1890    fn default() -> Self {
1891        Self {
1892            s_type: StructureType::BLIT_IMAGE_INFO_2,
1893            next: ptr::null(),
1894            src_image: Image::default(),
1895            src_image_layout: ImageLayout::default(),
1896            dst_image: Image::default(),
1897            dst_image_layout: ImageLayout::default(),
1898            region_count: u32::default(),
1899            regions: ptr::null(),
1900            filter: Filter::default(),
1901        }
1902    }
1903}
1904
1905unsafe impl Send for BlitImageInfo2 {}
1906unsafe impl Sync for BlitImageInfo2 {}
1907
1908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html>
1909#[repr(C)]
1910#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1911pub struct BufferCaptureDescriptorDataInfoEXT {
1912    pub s_type: StructureType,
1913    pub next: *const c_void,
1914    pub buffer: Buffer,
1915}
1916
1917impl Default for BufferCaptureDescriptorDataInfoEXT {
1918    #[inline]
1919    fn default() -> Self {
1920        Self {
1921            s_type: StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
1922            next: ptr::null(),
1923            buffer: Buffer::default(),
1924        }
1925    }
1926}
1927
1928unsafe impl Send for BufferCaptureDescriptorDataInfoEXT {}
1929unsafe impl Sync for BufferCaptureDescriptorDataInfoEXT {}
1930
1931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>
1932#[repr(C)]
1933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1934pub struct BufferCollectionBufferCreateInfoFUCHSIA {
1935    pub s_type: StructureType,
1936    pub next: *const c_void,
1937    pub collection: BufferCollectionFUCHSIA,
1938    pub index: u32,
1939}
1940
1941impl Default for BufferCollectionBufferCreateInfoFUCHSIA {
1942    #[inline]
1943    fn default() -> Self {
1944        Self {
1945            s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
1946            next: ptr::null(),
1947            collection: BufferCollectionFUCHSIA::default(),
1948            index: u32::default(),
1949        }
1950    }
1951}
1952
1953unsafe impl Send for BufferCollectionBufferCreateInfoFUCHSIA {}
1954unsafe impl Sync for BufferCollectionBufferCreateInfoFUCHSIA {}
1955
1956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>
1957#[repr(C)]
1958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1959pub struct BufferCollectionConstraintsInfoFUCHSIA {
1960    pub s_type: StructureType,
1961    pub next: *const c_void,
1962    pub min_buffer_count: u32,
1963    pub max_buffer_count: u32,
1964    pub min_buffer_count_for_camping: u32,
1965    pub min_buffer_count_for_dedicated_slack: u32,
1966    pub min_buffer_count_for_shared_slack: u32,
1967}
1968
1969impl Default for BufferCollectionConstraintsInfoFUCHSIA {
1970    #[inline]
1971    fn default() -> Self {
1972        Self {
1973            s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
1974            next: ptr::null(),
1975            min_buffer_count: u32::default(),
1976            max_buffer_count: u32::default(),
1977            min_buffer_count_for_camping: u32::default(),
1978            min_buffer_count_for_dedicated_slack: u32::default(),
1979            min_buffer_count_for_shared_slack: u32::default(),
1980        }
1981    }
1982}
1983
1984unsafe impl Send for BufferCollectionConstraintsInfoFUCHSIA {}
1985unsafe impl Sync for BufferCollectionConstraintsInfoFUCHSIA {}
1986
1987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>
1988#[repr(C)]
1989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1990pub struct BufferCollectionCreateInfoFUCHSIA {
1991    pub s_type: StructureType,
1992    pub next: *const c_void,
1993    pub collection_token: zx_handle_t,
1994}
1995
1996impl Default for BufferCollectionCreateInfoFUCHSIA {
1997    #[inline]
1998    fn default() -> Self {
1999        Self {
2000            s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
2001            next: ptr::null(),
2002            collection_token: zx_handle_t::default(),
2003        }
2004    }
2005}
2006
2007unsafe impl Send for BufferCollectionCreateInfoFUCHSIA {}
2008unsafe impl Sync for BufferCollectionCreateInfoFUCHSIA {}
2009
2010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>
2011#[repr(C)]
2012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2013pub struct BufferCollectionImageCreateInfoFUCHSIA {
2014    pub s_type: StructureType,
2015    pub next: *const c_void,
2016    pub collection: BufferCollectionFUCHSIA,
2017    pub index: u32,
2018}
2019
2020impl Default for BufferCollectionImageCreateInfoFUCHSIA {
2021    #[inline]
2022    fn default() -> Self {
2023        Self {
2024            s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
2025            next: ptr::null(),
2026            collection: BufferCollectionFUCHSIA::default(),
2027            index: u32::default(),
2028        }
2029    }
2030}
2031
2032unsafe impl Send for BufferCollectionImageCreateInfoFUCHSIA {}
2033unsafe impl Sync for BufferCollectionImageCreateInfoFUCHSIA {}
2034
2035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html>
2036#[repr(C)]
2037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2038pub struct BufferCollectionPropertiesFUCHSIA {
2039    pub s_type: StructureType,
2040    pub next: *mut c_void,
2041    pub memory_type_bits: u32,
2042    pub buffer_count: u32,
2043    pub create_info_index: u32,
2044    pub sysmem_pixel_format: u64,
2045    pub format_features: FormatFeatureFlags,
2046    pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
2047    pub sampler_ycbcr_conversion_components: ComponentMapping,
2048    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
2049    pub suggested_ycbcr_range: SamplerYcbcrRange,
2050    pub suggested_x_chroma_offset: ChromaLocation,
2051    pub suggested_y_chroma_offset: ChromaLocation,
2052}
2053
2054impl Default for BufferCollectionPropertiesFUCHSIA {
2055    #[inline]
2056    fn default() -> Self {
2057        Self {
2058            s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
2059            next: ptr::null_mut(),
2060            memory_type_bits: u32::default(),
2061            buffer_count: u32::default(),
2062            create_info_index: u32::default(),
2063            sysmem_pixel_format: u64::default(),
2064            format_features: FormatFeatureFlags::default(),
2065            sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
2066            sampler_ycbcr_conversion_components: ComponentMapping::default(),
2067            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
2068            suggested_ycbcr_range: SamplerYcbcrRange::default(),
2069            suggested_x_chroma_offset: ChromaLocation::default(),
2070            suggested_y_chroma_offset: ChromaLocation::default(),
2071        }
2072    }
2073}
2074
2075unsafe impl Send for BufferCollectionPropertiesFUCHSIA {}
2076unsafe impl Sync for BufferCollectionPropertiesFUCHSIA {}
2077
2078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html>
2079#[repr(C)]
2080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2081pub struct BufferConstraintsInfoFUCHSIA {
2082    pub s_type: StructureType,
2083    pub next: *const c_void,
2084    pub create_info: BufferCreateInfo,
2085    pub required_format_features: FormatFeatureFlags,
2086    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
2087}
2088
2089impl Default for BufferConstraintsInfoFUCHSIA {
2090    #[inline]
2091    fn default() -> Self {
2092        Self {
2093            s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
2094            next: ptr::null(),
2095            create_info: BufferCreateInfo::default(),
2096            required_format_features: FormatFeatureFlags::default(),
2097            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
2098        }
2099    }
2100}
2101
2102unsafe impl Send for BufferConstraintsInfoFUCHSIA {}
2103unsafe impl Sync for BufferConstraintsInfoFUCHSIA {}
2104
2105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy.html>
2106#[repr(C)]
2107#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2108pub struct BufferCopy {
2109    pub src_offset: DeviceSize,
2110    pub dst_offset: DeviceSize,
2111    pub size: DeviceSize,
2112}
2113
2114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2.html>
2115#[repr(C)]
2116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2117pub struct BufferCopy2 {
2118    pub s_type: StructureType,
2119    pub next: *const c_void,
2120    pub src_offset: DeviceSize,
2121    pub dst_offset: DeviceSize,
2122    pub size: DeviceSize,
2123}
2124
2125impl Default for BufferCopy2 {
2126    #[inline]
2127    fn default() -> Self {
2128        Self {
2129            s_type: StructureType::BUFFER_COPY_2,
2130            next: ptr::null(),
2131            src_offset: DeviceSize::default(),
2132            dst_offset: DeviceSize::default(),
2133            size: DeviceSize::default(),
2134        }
2135    }
2136}
2137
2138unsafe impl Send for BufferCopy2 {}
2139unsafe impl Sync for BufferCopy2 {}
2140
2141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateInfo.html>
2142#[repr(C)]
2143#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2144pub struct BufferCreateInfo {
2145    pub s_type: StructureType,
2146    pub next: *const c_void,
2147    pub flags: BufferCreateFlags,
2148    pub size: DeviceSize,
2149    pub usage: BufferUsageFlags,
2150    pub sharing_mode: SharingMode,
2151    pub queue_family_index_count: u32,
2152    pub queue_family_indices: *const u32,
2153}
2154
2155impl Default for BufferCreateInfo {
2156    #[inline]
2157    fn default() -> Self {
2158        Self {
2159            s_type: StructureType::BUFFER_CREATE_INFO,
2160            next: ptr::null(),
2161            flags: BufferCreateFlags::default(),
2162            size: DeviceSize::default(),
2163            usage: BufferUsageFlags::default(),
2164            sharing_mode: SharingMode::default(),
2165            queue_family_index_count: u32::default(),
2166            queue_family_indices: ptr::null(),
2167        }
2168    }
2169}
2170
2171unsafe impl Send for BufferCreateInfo {}
2172unsafe impl Sync for BufferCreateInfo {}
2173
2174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html>
2175#[repr(C)]
2176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2177pub struct BufferDeviceAddressCreateInfoEXT {
2178    pub s_type: StructureType,
2179    pub next: *const c_void,
2180    pub device_address: DeviceAddress,
2181}
2182
2183impl Default for BufferDeviceAddressCreateInfoEXT {
2184    #[inline]
2185    fn default() -> Self {
2186        Self {
2187            s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
2188            next: ptr::null(),
2189            device_address: DeviceAddress::default(),
2190        }
2191    }
2192}
2193
2194unsafe impl Send for BufferDeviceAddressCreateInfoEXT {}
2195unsafe impl Sync for BufferDeviceAddressCreateInfoEXT {}
2196
2197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html>
2198#[repr(C)]
2199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2200pub struct BufferDeviceAddressInfo {
2201    pub s_type: StructureType,
2202    pub next: *const c_void,
2203    pub buffer: Buffer,
2204}
2205
2206impl Default for BufferDeviceAddressInfo {
2207    #[inline]
2208    fn default() -> Self {
2209        Self {
2210            s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
2211            next: ptr::null(),
2212            buffer: Buffer::default(),
2213        }
2214    }
2215}
2216
2217unsafe impl Send for BufferDeviceAddressInfo {}
2218unsafe impl Sync for BufferDeviceAddressInfo {}
2219
2220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy.html>
2221#[repr(C)]
2222#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2223pub struct BufferImageCopy {
2224    pub buffer_offset: DeviceSize,
2225    pub buffer_row_length: u32,
2226    pub buffer_image_height: u32,
2227    pub image_subresource: ImageSubresourceLayers,
2228    pub image_offset: Offset3D,
2229    pub image_extent: Extent3D,
2230}
2231
2232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2.html>
2233#[repr(C)]
2234#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2235pub struct BufferImageCopy2 {
2236    pub s_type: StructureType,
2237    pub next: *const c_void,
2238    pub buffer_offset: DeviceSize,
2239    pub buffer_row_length: u32,
2240    pub buffer_image_height: u32,
2241    pub image_subresource: ImageSubresourceLayers,
2242    pub image_offset: Offset3D,
2243    pub image_extent: Extent3D,
2244}
2245
2246impl Default for BufferImageCopy2 {
2247    #[inline]
2248    fn default() -> Self {
2249        Self {
2250            s_type: StructureType::BUFFER_IMAGE_COPY_2,
2251            next: ptr::null(),
2252            buffer_offset: DeviceSize::default(),
2253            buffer_row_length: u32::default(),
2254            buffer_image_height: u32::default(),
2255            image_subresource: ImageSubresourceLayers::default(),
2256            image_offset: Offset3D::default(),
2257            image_extent: Extent3D::default(),
2258        }
2259    }
2260}
2261
2262unsafe impl Send for BufferImageCopy2 {}
2263unsafe impl Sync for BufferImageCopy2 {}
2264
2265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html>
2266#[repr(C)]
2267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2268pub struct BufferMemoryBarrier {
2269    pub s_type: StructureType,
2270    pub next: *const c_void,
2271    pub src_access_mask: AccessFlags,
2272    pub dst_access_mask: AccessFlags,
2273    pub src_queue_family_index: u32,
2274    pub dst_queue_family_index: u32,
2275    pub buffer: Buffer,
2276    pub offset: DeviceSize,
2277    pub size: DeviceSize,
2278}
2279
2280impl Default for BufferMemoryBarrier {
2281    #[inline]
2282    fn default() -> Self {
2283        Self {
2284            s_type: StructureType::BUFFER_MEMORY_BARRIER,
2285            next: ptr::null(),
2286            src_access_mask: AccessFlags::default(),
2287            dst_access_mask: AccessFlags::default(),
2288            src_queue_family_index: u32::default(),
2289            dst_queue_family_index: u32::default(),
2290            buffer: Buffer::default(),
2291            offset: DeviceSize::default(),
2292            size: DeviceSize::default(),
2293        }
2294    }
2295}
2296
2297unsafe impl Send for BufferMemoryBarrier {}
2298unsafe impl Sync for BufferMemoryBarrier {}
2299
2300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html>
2301#[repr(C)]
2302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2303pub struct BufferMemoryBarrier2 {
2304    pub s_type: StructureType,
2305    pub next: *const c_void,
2306    pub src_stage_mask: PipelineStageFlags2,
2307    pub src_access_mask: AccessFlags2,
2308    pub dst_stage_mask: PipelineStageFlags2,
2309    pub dst_access_mask: AccessFlags2,
2310    pub src_queue_family_index: u32,
2311    pub dst_queue_family_index: u32,
2312    pub buffer: Buffer,
2313    pub offset: DeviceSize,
2314    pub size: DeviceSize,
2315}
2316
2317impl Default for BufferMemoryBarrier2 {
2318    #[inline]
2319    fn default() -> Self {
2320        Self {
2321            s_type: StructureType::BUFFER_MEMORY_BARRIER_2,
2322            next: ptr::null(),
2323            src_stage_mask: PipelineStageFlags2::default(),
2324            src_access_mask: AccessFlags2::default(),
2325            dst_stage_mask: PipelineStageFlags2::default(),
2326            dst_access_mask: AccessFlags2::default(),
2327            src_queue_family_index: u32::default(),
2328            dst_queue_family_index: u32::default(),
2329            buffer: Buffer::default(),
2330            offset: DeviceSize::default(),
2331            size: DeviceSize::default(),
2332        }
2333    }
2334}
2335
2336unsafe impl Send for BufferMemoryBarrier2 {}
2337unsafe impl Sync for BufferMemoryBarrier2 {}
2338
2339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html>
2340#[repr(C)]
2341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2342pub struct BufferMemoryRequirementsInfo2 {
2343    pub s_type: StructureType,
2344    pub next: *const c_void,
2345    pub buffer: Buffer,
2346}
2347
2348impl Default for BufferMemoryRequirementsInfo2 {
2349    #[inline]
2350    fn default() -> Self {
2351        Self {
2352            s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
2353            next: ptr::null(),
2354            buffer: Buffer::default(),
2355        }
2356    }
2357}
2358
2359unsafe impl Send for BufferMemoryRequirementsInfo2 {}
2360unsafe impl Sync for BufferMemoryRequirementsInfo2 {}
2361
2362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>
2363#[repr(C)]
2364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2365pub struct BufferOpaqueCaptureAddressCreateInfo {
2366    pub s_type: StructureType,
2367    pub next: *const c_void,
2368    pub opaque_capture_address: u64,
2369}
2370
2371impl Default for BufferOpaqueCaptureAddressCreateInfo {
2372    #[inline]
2373    fn default() -> Self {
2374        Self {
2375            s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
2376            next: ptr::null(),
2377            opaque_capture_address: u64::default(),
2378        }
2379    }
2380}
2381
2382unsafe impl Send for BufferOpaqueCaptureAddressCreateInfo {}
2383unsafe impl Sync for BufferOpaqueCaptureAddressCreateInfo {}
2384
2385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html>
2386#[repr(C)]
2387#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2388pub struct BufferUsageFlags2CreateInfo {
2389    pub s_type: StructureType,
2390    pub next: *const c_void,
2391    pub usage: BufferUsageFlags2,
2392}
2393
2394impl Default for BufferUsageFlags2CreateInfo {
2395    #[inline]
2396    fn default() -> Self {
2397        Self {
2398            s_type: StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO,
2399            next: ptr::null(),
2400            usage: BufferUsageFlags2::default(),
2401        }
2402    }
2403}
2404
2405unsafe impl Send for BufferUsageFlags2CreateInfo {}
2406unsafe impl Sync for BufferUsageFlags2CreateInfo {}
2407
2408/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html>
2409#[repr(C)]
2410#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2411pub struct BufferViewCreateInfo {
2412    pub s_type: StructureType,
2413    pub next: *const c_void,
2414    pub flags: BufferViewCreateFlags,
2415    pub buffer: Buffer,
2416    pub format: Format,
2417    pub offset: DeviceSize,
2418    pub range: DeviceSize,
2419}
2420
2421impl Default for BufferViewCreateInfo {
2422    #[inline]
2423    fn default() -> Self {
2424        Self {
2425            s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2426            next: ptr::null(),
2427            flags: BufferViewCreateFlags::default(),
2428            buffer: Buffer::default(),
2429            format: Format::default(),
2430            offset: DeviceSize::default(),
2431            range: DeviceSize::default(),
2432        }
2433    }
2434}
2435
2436unsafe impl Send for BufferViewCreateInfo {}
2437unsafe impl Sync for BufferViewCreateInfo {}
2438
2439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html>
2440#[repr(C)]
2441#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2442pub struct BuildPartitionedAccelerationStructureIndirectCommandNV {
2443    pub op_type: PartitionedAccelerationStructureOpTypeNV,
2444    pub arg_count: u32,
2445    pub arg_data: StridedDeviceAddressNV,
2446}
2447
2448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html>
2449#[repr(C)]
2450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2451pub struct BuildPartitionedAccelerationStructureInfoNV {
2452    pub s_type: StructureType,
2453    pub next: *mut c_void,
2454    pub input: PartitionedAccelerationStructureInstancesInputNV,
2455    pub src_acceleration_structure_data: DeviceAddress,
2456    pub dst_acceleration_structure_data: DeviceAddress,
2457    pub scratch_data: DeviceAddress,
2458    pub src_infos: DeviceAddress,
2459    pub src_infos_count: DeviceAddress,
2460}
2461
2462impl Default for BuildPartitionedAccelerationStructureInfoNV {
2463    #[inline]
2464    fn default() -> Self {
2465        Self {
2466            s_type: StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV,
2467            next: ptr::null_mut(),
2468            input: PartitionedAccelerationStructureInstancesInputNV::default(),
2469            src_acceleration_structure_data: DeviceAddress::default(),
2470            dst_acceleration_structure_data: DeviceAddress::default(),
2471            scratch_data: DeviceAddress::default(),
2472            src_infos: DeviceAddress::default(),
2473            src_infos_count: DeviceAddress::default(),
2474        }
2475    }
2476}
2477
2478unsafe impl Send for BuildPartitionedAccelerationStructureInfoNV {}
2479unsafe impl Sync for BuildPartitionedAccelerationStructureInfoNV {}
2480
2481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html>
2482#[repr(C)]
2483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2484pub struct CalibratedTimestampInfoKHR {
2485    pub s_type: StructureType,
2486    pub next: *const c_void,
2487    pub time_domain: TimeDomainKHR,
2488}
2489
2490impl Default for CalibratedTimestampInfoKHR {
2491    #[inline]
2492    fn default() -> Self {
2493        Self {
2494            s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_KHR,
2495            next: ptr::null(),
2496            time_domain: TimeDomainKHR::default(),
2497        }
2498    }
2499}
2500
2501unsafe impl Send for CalibratedTimestampInfoKHR {}
2502unsafe impl Sync for CalibratedTimestampInfoKHR {}
2503
2504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointData2NV.html>
2505#[repr(C)]
2506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2507pub struct CheckpointData2NV {
2508    pub s_type: StructureType,
2509    pub next: *mut c_void,
2510    pub stage: PipelineStageFlags2,
2511    pub checkpoint_marker: *mut c_void,
2512}
2513
2514impl Default for CheckpointData2NV {
2515    #[inline]
2516    fn default() -> Self {
2517        Self {
2518            s_type: StructureType::CHECKPOINT_DATA_2_NV,
2519            next: ptr::null_mut(),
2520            stage: PipelineStageFlags2::default(),
2521            checkpoint_marker: ptr::null_mut(),
2522        }
2523    }
2524}
2525
2526unsafe impl Send for CheckpointData2NV {}
2527unsafe impl Sync for CheckpointData2NV {}
2528
2529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointDataNV.html>
2530#[repr(C)]
2531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2532pub struct CheckpointDataNV {
2533    pub s_type: StructureType,
2534    pub next: *mut c_void,
2535    pub stage: PipelineStageFlags,
2536    pub checkpoint_marker: *mut c_void,
2537}
2538
2539impl Default for CheckpointDataNV {
2540    #[inline]
2541    fn default() -> Self {
2542        Self {
2543            s_type: StructureType::CHECKPOINT_DATA_NV,
2544            next: ptr::null_mut(),
2545            stage: PipelineStageFlags::default(),
2546            checkpoint_marker: ptr::null_mut(),
2547        }
2548    }
2549}
2550
2551unsafe impl Send for CheckpointDataNV {}
2552unsafe impl Sync for CheckpointDataNV {}
2553
2554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearAttachment.html>
2555#[repr(C)]
2556#[derive(Copy, Clone, Default, Debug)]
2557pub struct ClearAttachment {
2558    pub aspect_mask: ImageAspectFlags,
2559    pub color_attachment: u32,
2560    pub clear_value: ClearValue,
2561}
2562
2563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html>
2564#[repr(C)]
2565#[derive(Copy, Clone, Default, Debug, PartialEq)]
2566pub struct ClearDepthStencilValue {
2567    pub depth: f32,
2568    pub stencil: u32,
2569}
2570
2571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearRect.html>
2572#[repr(C)]
2573#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2574pub struct ClearRect {
2575    pub rect: Rect2D,
2576    pub base_array_layer: u32,
2577    pub layer_count: u32,
2578}
2579
2580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html>
2581#[repr(C)]
2582#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2583pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
2584    pub cluster_references_count: u32,
2585    pub cluster_references_stride: u32,
2586    pub cluster_references: DeviceAddress,
2587}
2588
2589bitfields32! {
2590    struct ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0 {
2591        (triangle_count, with_triangle_count)[0 .. 9],
2592        (vertex_count, with_vertex_count)[9 .. 18],
2593        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2594        (index_type, with_index_type)[24 .. 28],
2595        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2596    }
2597}
2598
2599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html>
2600#[repr(C)]
2601#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2602pub struct ClusterAccelerationStructureBuildTriangleClusterInfoNV {
2603    pub cluster_id: u32,
2604    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2605    pub base_geometry_index_and_geometry_flags:
2606        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2607    pub index_buffer_stride: u16,
2608    pub vertex_buffer_stride: u16,
2609    pub geometry_index_and_flags_buffer_stride: u16,
2610    pub opacity_micromap_index_buffer_stride: u16,
2611    pub index_buffer: DeviceAddress,
2612    pub vertex_buffer: DeviceAddress,
2613    pub geometry_index_and_flags_buffer: DeviceAddress,
2614    pub opacity_micromap_array: DeviceAddress,
2615    pub opacity_micromap_index_buffer: DeviceAddress,
2616    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0,
2617}
2618
2619bitfields32! {
2620    struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0 {
2621        (triangle_count, with_triangle_count)[0 .. 9],
2622        (vertex_count, with_vertex_count)[9 .. 18],
2623        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2624        (index_type, with_index_type)[24 .. 28],
2625        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2626    }
2627}
2628
2629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html>
2630#[repr(C)]
2631#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2632pub struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV {
2633    pub cluster_id: u32,
2634    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2635    pub base_geometry_index_and_geometry_flags:
2636        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2637    pub index_buffer_stride: u16,
2638    pub vertex_buffer_stride: u16,
2639    pub geometry_index_and_flags_buffer_stride: u16,
2640    pub opacity_micromap_index_buffer_stride: u16,
2641    pub index_buffer: DeviceAddress,
2642    pub vertex_buffer: DeviceAddress,
2643    pub geometry_index_and_flags_buffer: DeviceAddress,
2644    pub opacity_micromap_array: DeviceAddress,
2645    pub opacity_micromap_index_buffer: DeviceAddress,
2646    pub instantiation_bounding_box_limit: DeviceAddress,
2647    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0,
2648}
2649
2650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html>
2651#[repr(C)]
2652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2653pub struct ClusterAccelerationStructureClustersBottomLevelInputNV {
2654    pub s_type: StructureType,
2655    pub next: *mut c_void,
2656    pub max_total_cluster_count: u32,
2657    pub max_cluster_count_per_acceleration_structure: u32,
2658}
2659
2660impl Default for ClusterAccelerationStructureClustersBottomLevelInputNV {
2661    #[inline]
2662    fn default() -> Self {
2663        Self {
2664            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV,
2665            next: ptr::null_mut(),
2666            max_total_cluster_count: u32::default(),
2667            max_cluster_count_per_acceleration_structure: u32::default(),
2668        }
2669    }
2670}
2671
2672unsafe impl Send for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2673unsafe impl Sync for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2674
2675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html>
2676#[repr(C)]
2677#[derive(Copy, Clone, Debug)]
2678pub struct ClusterAccelerationStructureCommandsInfoNV {
2679    pub s_type: StructureType,
2680    pub next: *mut c_void,
2681    pub input: ClusterAccelerationStructureInputInfoNV,
2682    pub dst_implicit_data: DeviceAddress,
2683    pub scratch_data: DeviceAddress,
2684    pub dst_addresses_array: StridedDeviceAddressRegionKHR,
2685    pub dst_sizes_array: StridedDeviceAddressRegionKHR,
2686    pub src_infos_array: StridedDeviceAddressRegionKHR,
2687    pub src_infos_count: DeviceAddress,
2688    pub address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV,
2689}
2690
2691impl Default for ClusterAccelerationStructureCommandsInfoNV {
2692    #[inline]
2693    fn default() -> Self {
2694        Self {
2695            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV,
2696            next: ptr::null_mut(),
2697            input: ClusterAccelerationStructureInputInfoNV::default(),
2698            dst_implicit_data: DeviceAddress::default(),
2699            scratch_data: DeviceAddress::default(),
2700            dst_addresses_array: StridedDeviceAddressRegionKHR::default(),
2701            dst_sizes_array: StridedDeviceAddressRegionKHR::default(),
2702            src_infos_array: StridedDeviceAddressRegionKHR::default(),
2703            src_infos_count: DeviceAddress::default(),
2704            address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV::default(
2705            ),
2706        }
2707    }
2708}
2709
2710unsafe impl Send for ClusterAccelerationStructureCommandsInfoNV {}
2711unsafe impl Sync for ClusterAccelerationStructureCommandsInfoNV {}
2712
2713bitfields32! {
2714    struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0 {
2715        (geometry_index, with_geometry_index)[0 .. 24],
2716        (reserved, with_reserved)[24 .. 29],
2717        (geometry_flags, with_geometry_flags)[29 .. 32],
2718    }
2719}
2720
2721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html>
2722#[repr(C)]
2723#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2724pub struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV {
2725    pub bitfields0: ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0,
2726}
2727
2728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGetTemplateIndicesInfoNV.html>
2729#[repr(C)]
2730#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2731pub struct ClusterAccelerationStructureGetTemplateIndicesInfoNV {
2732    pub cluster_template_address: DeviceAddress,
2733}
2734
2735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html>
2736#[repr(C)]
2737#[derive(Copy, Clone, Debug)]
2738pub struct ClusterAccelerationStructureInputInfoNV {
2739    pub s_type: StructureType,
2740    pub next: *mut c_void,
2741    pub max_acceleration_structure_count: u32,
2742    pub flags: BuildAccelerationStructureFlagsKHR,
2743    pub op_type: ClusterAccelerationStructureOpTypeNV,
2744    pub op_mode: ClusterAccelerationStructureOpModeNV,
2745    pub op_input: ClusterAccelerationStructureOpInputNV,
2746}
2747
2748impl Default for ClusterAccelerationStructureInputInfoNV {
2749    #[inline]
2750    fn default() -> Self {
2751        Self {
2752            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV,
2753            next: ptr::null_mut(),
2754            max_acceleration_structure_count: u32::default(),
2755            flags: BuildAccelerationStructureFlagsKHR::default(),
2756            op_type: ClusterAccelerationStructureOpTypeNV::default(),
2757            op_mode: ClusterAccelerationStructureOpModeNV::default(),
2758            op_input: ClusterAccelerationStructureOpInputNV::default(),
2759        }
2760    }
2761}
2762
2763unsafe impl Send for ClusterAccelerationStructureInputInfoNV {}
2764unsafe impl Sync for ClusterAccelerationStructureInputInfoNV {}
2765
2766bitfields32! {
2767    struct ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0 {
2768        (geometry_index_offset, with_geometry_index_offset)[0 .. 24],
2769        (reserved, with_reserved)[24 .. 32],
2770    }
2771}
2772
2773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html>
2774#[repr(C)]
2775#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2776pub struct ClusterAccelerationStructureInstantiateClusterInfoNV {
2777    pub cluster_id_offset: u32,
2778    pub cluster_template_address: DeviceAddress,
2779    pub vertex_buffer: StridedDeviceAddressNV,
2780    pub bitfields0: ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0,
2781}
2782
2783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html>
2784#[repr(C)]
2785#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2786pub struct ClusterAccelerationStructureMoveObjectsInfoNV {
2787    pub src_acceleration_structure: DeviceAddress,
2788}
2789
2790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html>
2791#[repr(C)]
2792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2793pub struct ClusterAccelerationStructureMoveObjectsInputNV {
2794    pub s_type: StructureType,
2795    pub next: *mut c_void,
2796    pub type_: ClusterAccelerationStructureTypeNV,
2797    pub no_move_overlap: Bool32,
2798    pub max_moved_bytes: DeviceSize,
2799}
2800
2801impl Default for ClusterAccelerationStructureMoveObjectsInputNV {
2802    #[inline]
2803    fn default() -> Self {
2804        Self {
2805            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV,
2806            next: ptr::null_mut(),
2807            type_: ClusterAccelerationStructureTypeNV::default(),
2808            no_move_overlap: Bool32::default(),
2809            max_moved_bytes: DeviceSize::default(),
2810        }
2811    }
2812}
2813
2814unsafe impl Send for ClusterAccelerationStructureMoveObjectsInputNV {}
2815unsafe impl Sync for ClusterAccelerationStructureMoveObjectsInputNV {}
2816
2817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html>
2818#[repr(C)]
2819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2820pub struct ClusterAccelerationStructureTriangleClusterInputNV {
2821    pub s_type: StructureType,
2822    pub next: *mut c_void,
2823    pub vertex_format: Format,
2824    pub max_geometry_index_value: u32,
2825    pub max_cluster_unique_geometry_count: u32,
2826    pub max_cluster_triangle_count: u32,
2827    pub max_cluster_vertex_count: u32,
2828    pub max_total_triangle_count: u32,
2829    pub max_total_vertex_count: u32,
2830    pub min_position_truncate_bit_count: u32,
2831}
2832
2833impl Default for ClusterAccelerationStructureTriangleClusterInputNV {
2834    #[inline]
2835    fn default() -> Self {
2836        Self {
2837            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV,
2838            next: ptr::null_mut(),
2839            vertex_format: Format::default(),
2840            max_geometry_index_value: u32::default(),
2841            max_cluster_unique_geometry_count: u32::default(),
2842            max_cluster_triangle_count: u32::default(),
2843            max_cluster_vertex_count: u32::default(),
2844            max_total_triangle_count: u32::default(),
2845            max_total_vertex_count: u32::default(),
2846            min_position_truncate_bit_count: u32::default(),
2847        }
2848    }
2849}
2850
2851unsafe impl Send for ClusterAccelerationStructureTriangleClusterInputNV {}
2852unsafe impl Sync for ClusterAccelerationStructureTriangleClusterInputNV {}
2853
2854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html>
2855#[repr(C)]
2856#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2857pub struct CoarseSampleLocationNV {
2858    pub pixel_x: u32,
2859    pub pixel_y: u32,
2860    pub sample: u32,
2861}
2862
2863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html>
2864#[repr(C)]
2865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2866pub struct CoarseSampleOrderCustomNV {
2867    pub shading_rate: ShadingRatePaletteEntryNV,
2868    pub sample_count: u32,
2869    pub sample_location_count: u32,
2870    pub sample_locations: *const CoarseSampleLocationNV,
2871}
2872
2873impl Default for CoarseSampleOrderCustomNV {
2874    #[inline]
2875    fn default() -> Self {
2876        Self {
2877            shading_rate: ShadingRatePaletteEntryNV::default(),
2878            sample_count: u32::default(),
2879            sample_location_count: u32::default(),
2880            sample_locations: ptr::null(),
2881        }
2882    }
2883}
2884
2885unsafe impl Send for CoarseSampleOrderCustomNV {}
2886unsafe impl Sync for CoarseSampleOrderCustomNV {}
2887
2888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html>
2889#[repr(C)]
2890#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2891pub struct ColorBlendAdvancedEXT {
2892    pub advanced_blend_op: BlendOp,
2893    pub src_premultiplied: Bool32,
2894    pub dst_premultiplied: Bool32,
2895    pub blend_overlap: BlendOverlapEXT,
2896    pub clamp_results: Bool32,
2897}
2898
2899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html>
2900#[repr(C)]
2901#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2902pub struct ColorBlendEquationEXT {
2903    pub src_color_blend_factor: BlendFactor,
2904    pub dst_color_blend_factor: BlendFactor,
2905    pub color_blend_op: BlendOp,
2906    pub src_alpha_blend_factor: BlendFactor,
2907    pub dst_alpha_blend_factor: BlendFactor,
2908    pub alpha_blend_op: BlendOp,
2909}
2910
2911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html>
2912#[repr(C)]
2913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2914pub struct CommandBufferAllocateInfo {
2915    pub s_type: StructureType,
2916    pub next: *const c_void,
2917    pub command_pool: CommandPool,
2918    pub level: CommandBufferLevel,
2919    pub command_buffer_count: u32,
2920}
2921
2922impl Default for CommandBufferAllocateInfo {
2923    #[inline]
2924    fn default() -> Self {
2925        Self {
2926            s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
2927            next: ptr::null(),
2928            command_pool: CommandPool::default(),
2929            level: CommandBufferLevel::default(),
2930            command_buffer_count: u32::default(),
2931        }
2932    }
2933}
2934
2935unsafe impl Send for CommandBufferAllocateInfo {}
2936unsafe impl Sync for CommandBufferAllocateInfo {}
2937
2938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html>
2939#[repr(C)]
2940#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2941pub struct CommandBufferBeginInfo {
2942    pub s_type: StructureType,
2943    pub next: *const c_void,
2944    pub flags: CommandBufferUsageFlags,
2945    pub inheritance_info: *const CommandBufferInheritanceInfo,
2946}
2947
2948impl Default for CommandBufferBeginInfo {
2949    #[inline]
2950    fn default() -> Self {
2951        Self {
2952            s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
2953            next: ptr::null(),
2954            flags: CommandBufferUsageFlags::default(),
2955            inheritance_info: ptr::null(),
2956        }
2957    }
2958}
2959
2960unsafe impl Send for CommandBufferBeginInfo {}
2961unsafe impl Sync for CommandBufferBeginInfo {}
2962
2963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>
2964#[repr(C)]
2965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2966pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
2967    pub s_type: StructureType,
2968    pub next: *const c_void,
2969    pub conditional_rendering_enable: Bool32,
2970}
2971
2972impl Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
2973    #[inline]
2974    fn default() -> Self {
2975        Self {
2976            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
2977            next: ptr::null(),
2978            conditional_rendering_enable: Bool32::default(),
2979        }
2980    }
2981}
2982
2983unsafe impl Send for CommandBufferInheritanceConditionalRenderingInfoEXT {}
2984unsafe impl Sync for CommandBufferInheritanceConditionalRenderingInfoEXT {}
2985
2986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html>
2987#[repr(C)]
2988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2989pub struct CommandBufferInheritanceInfo {
2990    pub s_type: StructureType,
2991    pub next: *const c_void,
2992    pub render_pass: RenderPass,
2993    pub subpass: u32,
2994    pub framebuffer: Framebuffer,
2995    pub occlusion_query_enable: Bool32,
2996    pub query_flags: QueryControlFlags,
2997    pub pipeline_statistics: QueryPipelineStatisticFlags,
2998}
2999
3000impl Default for CommandBufferInheritanceInfo {
3001    #[inline]
3002    fn default() -> Self {
3003        Self {
3004            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
3005            next: ptr::null(),
3006            render_pass: RenderPass::default(),
3007            subpass: u32::default(),
3008            framebuffer: Framebuffer::default(),
3009            occlusion_query_enable: Bool32::default(),
3010            query_flags: QueryControlFlags::default(),
3011            pipeline_statistics: QueryPipelineStatisticFlags::default(),
3012        }
3013    }
3014}
3015
3016unsafe impl Send for CommandBufferInheritanceInfo {}
3017unsafe impl Sync for CommandBufferInheritanceInfo {}
3018
3019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>
3020#[repr(C)]
3021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3022pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
3023    pub s_type: StructureType,
3024    pub next: *const c_void,
3025    pub transform: SurfaceTransformFlagsKHR,
3026    pub render_area: Rect2D,
3027}
3028
3029impl Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
3030    #[inline]
3031    fn default() -> Self {
3032        Self {
3033            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
3034            next: ptr::null(),
3035            transform: SurfaceTransformFlagsKHR::default(),
3036            render_area: Rect2D::default(),
3037        }
3038    }
3039}
3040
3041unsafe impl Send for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3042unsafe impl Sync for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3043
3044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html>
3045#[repr(C)]
3046#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3047pub struct CommandBufferInheritanceRenderingInfo {
3048    pub s_type: StructureType,
3049    pub next: *const c_void,
3050    pub flags: RenderingFlags,
3051    pub view_mask: u32,
3052    pub color_attachment_count: u32,
3053    pub color_attachment_formats: *const Format,
3054    pub depth_attachment_format: Format,
3055    pub stencil_attachment_format: Format,
3056    pub rasterization_samples: SampleCountFlags,
3057}
3058
3059impl Default for CommandBufferInheritanceRenderingInfo {
3060    #[inline]
3061    fn default() -> Self {
3062        Self {
3063            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
3064            next: ptr::null(),
3065            flags: RenderingFlags::default(),
3066            view_mask: u32::default(),
3067            color_attachment_count: u32::default(),
3068            color_attachment_formats: ptr::null(),
3069            depth_attachment_format: Format::default(),
3070            stencil_attachment_format: Format::default(),
3071            rasterization_samples: SampleCountFlags::default(),
3072        }
3073    }
3074}
3075
3076unsafe impl Send for CommandBufferInheritanceRenderingInfo {}
3077unsafe impl Sync for CommandBufferInheritanceRenderingInfo {}
3078
3079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>
3080#[repr(C)]
3081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3082pub struct CommandBufferInheritanceViewportScissorInfoNV {
3083    pub s_type: StructureType,
3084    pub next: *const c_void,
3085    pub viewport_scissor_2d: Bool32,
3086    pub viewport_depth_count: u32,
3087    pub viewport_depths: *const Viewport,
3088}
3089
3090impl Default for CommandBufferInheritanceViewportScissorInfoNV {
3091    #[inline]
3092    fn default() -> Self {
3093        Self {
3094            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
3095            next: ptr::null(),
3096            viewport_scissor_2d: Bool32::default(),
3097            viewport_depth_count: u32::default(),
3098            viewport_depths: ptr::null(),
3099        }
3100    }
3101}
3102
3103unsafe impl Send for CommandBufferInheritanceViewportScissorInfoNV {}
3104unsafe impl Sync for CommandBufferInheritanceViewportScissorInfoNV {}
3105
3106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html>
3107#[repr(C)]
3108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3109pub struct CommandBufferSubmitInfo {
3110    pub s_type: StructureType,
3111    pub next: *const c_void,
3112    pub command_buffer: CommandBuffer,
3113    pub device_mask: u32,
3114}
3115
3116impl Default for CommandBufferSubmitInfo {
3117    #[inline]
3118    fn default() -> Self {
3119        Self {
3120            s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO,
3121            next: ptr::null(),
3122            command_buffer: CommandBuffer::default(),
3123            device_mask: u32::default(),
3124        }
3125    }
3126}
3127
3128unsafe impl Send for CommandBufferSubmitInfo {}
3129unsafe impl Sync for CommandBufferSubmitInfo {}
3130
3131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html>
3132#[repr(C)]
3133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3134pub struct CommandPoolCreateInfo {
3135    pub s_type: StructureType,
3136    pub next: *const c_void,
3137    pub flags: CommandPoolCreateFlags,
3138    pub queue_family_index: u32,
3139}
3140
3141impl Default for CommandPoolCreateInfo {
3142    #[inline]
3143    fn default() -> Self {
3144        Self {
3145            s_type: StructureType::COMMAND_POOL_CREATE_INFO,
3146            next: ptr::null(),
3147            flags: CommandPoolCreateFlags::default(),
3148            queue_family_index: u32::default(),
3149        }
3150    }
3151}
3152
3153unsafe impl Send for CommandPoolCreateInfo {}
3154unsafe impl Sync for CommandPoolCreateInfo {}
3155
3156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComponentMapping.html>
3157#[repr(C)]
3158#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3159pub struct ComponentMapping {
3160    pub r: ComponentSwizzle,
3161    pub g: ComponentSwizzle,
3162    pub b: ComponentSwizzle,
3163    pub a: ComponentSwizzle,
3164}
3165
3166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html>
3167#[repr(C)]
3168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3169pub struct ComputePipelineCreateInfo {
3170    pub s_type: StructureType,
3171    pub next: *const c_void,
3172    pub flags: PipelineCreateFlags,
3173    pub stage: PipelineShaderStageCreateInfo,
3174    pub layout: PipelineLayout,
3175    pub base_pipeline_handle: Pipeline,
3176    pub base_pipeline_index: i32,
3177}
3178
3179impl Default for ComputePipelineCreateInfo {
3180    #[inline]
3181    fn default() -> Self {
3182        Self {
3183            s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
3184            next: ptr::null(),
3185            flags: PipelineCreateFlags::default(),
3186            stage: PipelineShaderStageCreateInfo::default(),
3187            layout: PipelineLayout::default(),
3188            base_pipeline_handle: Pipeline::default(),
3189            base_pipeline_index: i32::default(),
3190        }
3191    }
3192}
3193
3194unsafe impl Send for ComputePipelineCreateInfo {}
3195unsafe impl Sync for ComputePipelineCreateInfo {}
3196
3197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html>
3198#[repr(C)]
3199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3200pub struct ComputePipelineIndirectBufferInfoNV {
3201    pub s_type: StructureType,
3202    pub next: *const c_void,
3203    pub device_address: DeviceAddress,
3204    pub size: DeviceSize,
3205    pub pipeline_device_address_capture_replay: DeviceAddress,
3206}
3207
3208impl Default for ComputePipelineIndirectBufferInfoNV {
3209    #[inline]
3210    fn default() -> Self {
3211        Self {
3212            s_type: StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV,
3213            next: ptr::null(),
3214            device_address: DeviceAddress::default(),
3215            size: DeviceSize::default(),
3216            pipeline_device_address_capture_replay: DeviceAddress::default(),
3217        }
3218    }
3219}
3220
3221unsafe impl Send for ComputePipelineIndirectBufferInfoNV {}
3222unsafe impl Sync for ComputePipelineIndirectBufferInfoNV {}
3223
3224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html>
3225#[repr(C)]
3226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3227pub struct ConditionalRenderingBeginInfoEXT {
3228    pub s_type: StructureType,
3229    pub next: *const c_void,
3230    pub buffer: Buffer,
3231    pub offset: DeviceSize,
3232    pub flags: ConditionalRenderingFlagsEXT,
3233}
3234
3235impl Default for ConditionalRenderingBeginInfoEXT {
3236    #[inline]
3237    fn default() -> Self {
3238        Self {
3239            s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
3240            next: ptr::null(),
3241            buffer: Buffer::default(),
3242            offset: DeviceSize::default(),
3243            flags: ConditionalRenderingFlagsEXT::default(),
3244        }
3245    }
3246}
3247
3248unsafe impl Send for ConditionalRenderingBeginInfoEXT {}
3249unsafe impl Sync for ConditionalRenderingBeginInfoEXT {}
3250
3251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersion.html>
3252#[repr(C)]
3253#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3254pub struct ConformanceVersion {
3255    pub major: u8,
3256    pub minor: u8,
3257    pub subminor: u8,
3258    pub patch: u8,
3259}
3260
3261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html>
3262#[repr(C)]
3263#[derive(Copy, Clone, Debug)]
3264pub struct ConvertCooperativeVectorMatrixInfoNV {
3265    pub s_type: StructureType,
3266    pub next: *const c_void,
3267    pub src_size: usize,
3268    pub src_data: DeviceOrHostAddressConstKHR,
3269    pub dst_size: *mut usize,
3270    pub dst_data: DeviceOrHostAddressKHR,
3271    pub src_component_type: ComponentTypeKHR,
3272    pub dst_component_type: ComponentTypeKHR,
3273    pub num_rows: u32,
3274    pub num_columns: u32,
3275    pub src_layout: CooperativeVectorMatrixLayoutNV,
3276    pub src_stride: usize,
3277    pub dst_layout: CooperativeVectorMatrixLayoutNV,
3278    pub dst_stride: usize,
3279}
3280
3281impl Default for ConvertCooperativeVectorMatrixInfoNV {
3282    #[inline]
3283    fn default() -> Self {
3284        Self {
3285            s_type: StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV,
3286            next: ptr::null(),
3287            src_size: usize::default(),
3288            src_data: DeviceOrHostAddressConstKHR::default(),
3289            dst_size: ptr::null_mut(),
3290            dst_data: DeviceOrHostAddressKHR::default(),
3291            src_component_type: ComponentTypeKHR::default(),
3292            dst_component_type: ComponentTypeKHR::default(),
3293            num_rows: u32::default(),
3294            num_columns: u32::default(),
3295            src_layout: CooperativeVectorMatrixLayoutNV::default(),
3296            src_stride: usize::default(),
3297            dst_layout: CooperativeVectorMatrixLayoutNV::default(),
3298            dst_stride: usize::default(),
3299        }
3300    }
3301}
3302
3303unsafe impl Send for ConvertCooperativeVectorMatrixInfoNV {}
3304unsafe impl Sync for ConvertCooperativeVectorMatrixInfoNV {}
3305
3306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html>
3307#[repr(C)]
3308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3309pub struct CooperativeMatrixFlexibleDimensionsPropertiesNV {
3310    pub s_type: StructureType,
3311    pub next: *mut c_void,
3312    pub m_granularity: u32,
3313    pub n_granularity: u32,
3314    pub k_granularity: u32,
3315    pub a_type: ComponentTypeKHR,
3316    pub b_type: ComponentTypeKHR,
3317    pub c_type: ComponentTypeKHR,
3318    pub result_type: ComponentTypeKHR,
3319    pub saturating_accumulation: Bool32,
3320    pub scope: ScopeKHR,
3321    pub workgroup_invocations: u32,
3322}
3323
3324impl Default for CooperativeMatrixFlexibleDimensionsPropertiesNV {
3325    #[inline]
3326    fn default() -> Self {
3327        Self {
3328            s_type: StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV,
3329            next: ptr::null_mut(),
3330            m_granularity: u32::default(),
3331            n_granularity: u32::default(),
3332            k_granularity: u32::default(),
3333            a_type: ComponentTypeKHR::default(),
3334            b_type: ComponentTypeKHR::default(),
3335            c_type: ComponentTypeKHR::default(),
3336            result_type: ComponentTypeKHR::default(),
3337            saturating_accumulation: Bool32::default(),
3338            scope: ScopeKHR::default(),
3339            workgroup_invocations: u32::default(),
3340        }
3341    }
3342}
3343
3344unsafe impl Send for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3345unsafe impl Sync for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3346
3347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html>
3348#[repr(C)]
3349#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3350pub struct CooperativeMatrixPropertiesKHR {
3351    pub s_type: StructureType,
3352    pub next: *mut c_void,
3353    pub m_size: u32,
3354    pub n_size: u32,
3355    pub k_size: u32,
3356    pub a_type: ComponentTypeKHR,
3357    pub b_type: ComponentTypeKHR,
3358    pub c_type: ComponentTypeKHR,
3359    pub result_type: ComponentTypeKHR,
3360    pub saturating_accumulation: Bool32,
3361    pub scope: ScopeKHR,
3362}
3363
3364impl Default for CooperativeMatrixPropertiesKHR {
3365    #[inline]
3366    fn default() -> Self {
3367        Self {
3368            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR,
3369            next: ptr::null_mut(),
3370            m_size: u32::default(),
3371            n_size: u32::default(),
3372            k_size: u32::default(),
3373            a_type: ComponentTypeKHR::default(),
3374            b_type: ComponentTypeKHR::default(),
3375            c_type: ComponentTypeKHR::default(),
3376            result_type: ComponentTypeKHR::default(),
3377            saturating_accumulation: Bool32::default(),
3378            scope: ScopeKHR::default(),
3379        }
3380    }
3381}
3382
3383unsafe impl Send for CooperativeMatrixPropertiesKHR {}
3384unsafe impl Sync for CooperativeMatrixPropertiesKHR {}
3385
3386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html>
3387#[repr(C)]
3388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3389pub struct CooperativeMatrixPropertiesNV {
3390    pub s_type: StructureType,
3391    pub next: *mut c_void,
3392    pub m_size: u32,
3393    pub n_size: u32,
3394    pub k_size: u32,
3395    pub a_type: ComponentTypeNV,
3396    pub b_type: ComponentTypeNV,
3397    pub c_type: ComponentTypeNV,
3398    pub d_type: ComponentTypeNV,
3399    pub scope: ScopeNV,
3400}
3401
3402impl Default for CooperativeMatrixPropertiesNV {
3403    #[inline]
3404    fn default() -> Self {
3405        Self {
3406            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
3407            next: ptr::null_mut(),
3408            m_size: u32::default(),
3409            n_size: u32::default(),
3410            k_size: u32::default(),
3411            a_type: ComponentTypeNV::default(),
3412            b_type: ComponentTypeNV::default(),
3413            c_type: ComponentTypeNV::default(),
3414            d_type: ComponentTypeNV::default(),
3415            scope: ScopeNV::default(),
3416        }
3417    }
3418}
3419
3420unsafe impl Send for CooperativeMatrixPropertiesNV {}
3421unsafe impl Sync for CooperativeMatrixPropertiesNV {}
3422
3423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html>
3424#[repr(C)]
3425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3426pub struct CooperativeVectorPropertiesNV {
3427    pub s_type: StructureType,
3428    pub next: *mut c_void,
3429    pub input_type: ComponentTypeKHR,
3430    pub input_interpretation: ComponentTypeKHR,
3431    pub matrix_interpretation: ComponentTypeKHR,
3432    pub bias_interpretation: ComponentTypeKHR,
3433    pub result_type: ComponentTypeKHR,
3434    pub transpose: Bool32,
3435}
3436
3437impl Default for CooperativeVectorPropertiesNV {
3438    #[inline]
3439    fn default() -> Self {
3440        Self {
3441            s_type: StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV,
3442            next: ptr::null_mut(),
3443            input_type: ComponentTypeKHR::default(),
3444            input_interpretation: ComponentTypeKHR::default(),
3445            matrix_interpretation: ComponentTypeKHR::default(),
3446            bias_interpretation: ComponentTypeKHR::default(),
3447            result_type: ComponentTypeKHR::default(),
3448            transpose: Bool32::default(),
3449        }
3450    }
3451}
3452
3453unsafe impl Send for CooperativeVectorPropertiesNV {}
3454unsafe impl Sync for CooperativeVectorPropertiesNV {}
3455
3456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html>
3457#[repr(C)]
3458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3459pub struct CopyAccelerationStructureInfoKHR {
3460    pub s_type: StructureType,
3461    pub next: *const c_void,
3462    pub src: AccelerationStructureKHR,
3463    pub dst: AccelerationStructureKHR,
3464    pub mode: CopyAccelerationStructureModeKHR,
3465}
3466
3467impl Default for CopyAccelerationStructureInfoKHR {
3468    #[inline]
3469    fn default() -> Self {
3470        Self {
3471            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
3472            next: ptr::null(),
3473            src: AccelerationStructureKHR::default(),
3474            dst: AccelerationStructureKHR::default(),
3475            mode: CopyAccelerationStructureModeKHR::default(),
3476        }
3477    }
3478}
3479
3480unsafe impl Send for CopyAccelerationStructureInfoKHR {}
3481unsafe impl Sync for CopyAccelerationStructureInfoKHR {}
3482
3483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>
3484#[repr(C)]
3485#[derive(Copy, Clone, Debug)]
3486pub struct CopyAccelerationStructureToMemoryInfoKHR {
3487    pub s_type: StructureType,
3488    pub next: *const c_void,
3489    pub src: AccelerationStructureKHR,
3490    pub dst: DeviceOrHostAddressKHR,
3491    pub mode: CopyAccelerationStructureModeKHR,
3492}
3493
3494impl Default for CopyAccelerationStructureToMemoryInfoKHR {
3495    #[inline]
3496    fn default() -> Self {
3497        Self {
3498            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
3499            next: ptr::null(),
3500            src: AccelerationStructureKHR::default(),
3501            dst: DeviceOrHostAddressKHR::default(),
3502            mode: CopyAccelerationStructureModeKHR::default(),
3503        }
3504    }
3505}
3506
3507unsafe impl Send for CopyAccelerationStructureToMemoryInfoKHR {}
3508unsafe impl Sync for CopyAccelerationStructureToMemoryInfoKHR {}
3509
3510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html>
3511#[repr(C)]
3512#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3513pub struct CopyBufferInfo2 {
3514    pub s_type: StructureType,
3515    pub next: *const c_void,
3516    pub src_buffer: Buffer,
3517    pub dst_buffer: Buffer,
3518    pub region_count: u32,
3519    pub regions: *const BufferCopy2,
3520}
3521
3522impl Default for CopyBufferInfo2 {
3523    #[inline]
3524    fn default() -> Self {
3525        Self {
3526            s_type: StructureType::COPY_BUFFER_INFO_2,
3527            next: ptr::null(),
3528            src_buffer: Buffer::default(),
3529            dst_buffer: Buffer::default(),
3530            region_count: u32::default(),
3531            regions: ptr::null(),
3532        }
3533    }
3534}
3535
3536unsafe impl Send for CopyBufferInfo2 {}
3537unsafe impl Sync for CopyBufferInfo2 {}
3538
3539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html>
3540#[repr(C)]
3541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3542pub struct CopyBufferToImageInfo2 {
3543    pub s_type: StructureType,
3544    pub next: *const c_void,
3545    pub src_buffer: Buffer,
3546    pub dst_image: Image,
3547    pub dst_image_layout: ImageLayout,
3548    pub region_count: u32,
3549    pub regions: *const BufferImageCopy2,
3550}
3551
3552impl Default for CopyBufferToImageInfo2 {
3553    #[inline]
3554    fn default() -> Self {
3555        Self {
3556            s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2,
3557            next: ptr::null(),
3558            src_buffer: Buffer::default(),
3559            dst_image: Image::default(),
3560            dst_image_layout: ImageLayout::default(),
3561            region_count: u32::default(),
3562            regions: ptr::null(),
3563        }
3564    }
3565}
3566
3567unsafe impl Send for CopyBufferToImageInfo2 {}
3568unsafe impl Sync for CopyBufferToImageInfo2 {}
3569
3570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html>
3571#[repr(C)]
3572#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3573pub struct CopyCommandTransformInfoQCOM {
3574    pub s_type: StructureType,
3575    pub next: *const c_void,
3576    pub transform: SurfaceTransformFlagsKHR,
3577}
3578
3579impl Default for CopyCommandTransformInfoQCOM {
3580    #[inline]
3581    fn default() -> Self {
3582        Self {
3583            s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
3584            next: ptr::null(),
3585            transform: SurfaceTransformFlagsKHR::default(),
3586        }
3587    }
3588}
3589
3590unsafe impl Send for CopyCommandTransformInfoQCOM {}
3591unsafe impl Sync for CopyCommandTransformInfoQCOM {}
3592
3593/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html>
3594#[repr(C)]
3595#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3596pub struct CopyDescriptorSet {
3597    pub s_type: StructureType,
3598    pub next: *const c_void,
3599    pub src_set: DescriptorSet,
3600    pub src_binding: u32,
3601    pub src_array_element: u32,
3602    pub dst_set: DescriptorSet,
3603    pub dst_binding: u32,
3604    pub dst_array_element: u32,
3605    pub descriptor_count: u32,
3606}
3607
3608impl Default for CopyDescriptorSet {
3609    #[inline]
3610    fn default() -> Self {
3611        Self {
3612            s_type: StructureType::COPY_DESCRIPTOR_SET,
3613            next: ptr::null(),
3614            src_set: DescriptorSet::default(),
3615            src_binding: u32::default(),
3616            src_array_element: u32::default(),
3617            dst_set: DescriptorSet::default(),
3618            dst_binding: u32::default(),
3619            dst_array_element: u32::default(),
3620            descriptor_count: u32::default(),
3621        }
3622    }
3623}
3624
3625unsafe impl Send for CopyDescriptorSet {}
3626unsafe impl Sync for CopyDescriptorSet {}
3627
3628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2.html>
3629#[repr(C)]
3630#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3631pub struct CopyImageInfo2 {
3632    pub s_type: StructureType,
3633    pub next: *const c_void,
3634    pub src_image: Image,
3635    pub src_image_layout: ImageLayout,
3636    pub dst_image: Image,
3637    pub dst_image_layout: ImageLayout,
3638    pub region_count: u32,
3639    pub regions: *const ImageCopy2,
3640}
3641
3642impl Default for CopyImageInfo2 {
3643    #[inline]
3644    fn default() -> Self {
3645        Self {
3646            s_type: StructureType::COPY_IMAGE_INFO_2,
3647            next: ptr::null(),
3648            src_image: Image::default(),
3649            src_image_layout: ImageLayout::default(),
3650            dst_image: Image::default(),
3651            dst_image_layout: ImageLayout::default(),
3652            region_count: u32::default(),
3653            regions: ptr::null(),
3654        }
3655    }
3656}
3657
3658unsafe impl Send for CopyImageInfo2 {}
3659unsafe impl Sync for CopyImageInfo2 {}
3660
3661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html>
3662#[repr(C)]
3663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3664pub struct CopyImageToBufferInfo2 {
3665    pub s_type: StructureType,
3666    pub next: *const c_void,
3667    pub src_image: Image,
3668    pub src_image_layout: ImageLayout,
3669    pub dst_buffer: Buffer,
3670    pub region_count: u32,
3671    pub regions: *const BufferImageCopy2,
3672}
3673
3674impl Default for CopyImageToBufferInfo2 {
3675    #[inline]
3676    fn default() -> Self {
3677        Self {
3678            s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2,
3679            next: ptr::null(),
3680            src_image: Image::default(),
3681            src_image_layout: ImageLayout::default(),
3682            dst_buffer: Buffer::default(),
3683            region_count: u32::default(),
3684            regions: ptr::null(),
3685        }
3686    }
3687}
3688
3689unsafe impl Send for CopyImageToBufferInfo2 {}
3690unsafe impl Sync for CopyImageToBufferInfo2 {}
3691
3692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html>
3693#[repr(C)]
3694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3695pub struct CopyImageToImageInfo {
3696    pub s_type: StructureType,
3697    pub next: *const c_void,
3698    pub flags: HostImageCopyFlags,
3699    pub src_image: Image,
3700    pub src_image_layout: ImageLayout,
3701    pub dst_image: Image,
3702    pub dst_image_layout: ImageLayout,
3703    pub region_count: u32,
3704    pub regions: *const ImageCopy2,
3705}
3706
3707impl Default for CopyImageToImageInfo {
3708    #[inline]
3709    fn default() -> Self {
3710        Self {
3711            s_type: StructureType::COPY_IMAGE_TO_IMAGE_INFO,
3712            next: ptr::null(),
3713            flags: HostImageCopyFlags::default(),
3714            src_image: Image::default(),
3715            src_image_layout: ImageLayout::default(),
3716            dst_image: Image::default(),
3717            dst_image_layout: ImageLayout::default(),
3718            region_count: u32::default(),
3719            regions: ptr::null(),
3720        }
3721    }
3722}
3723
3724unsafe impl Send for CopyImageToImageInfo {}
3725unsafe impl Sync for CopyImageToImageInfo {}
3726
3727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html>
3728#[repr(C)]
3729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3730pub struct CopyImageToMemoryInfo {
3731    pub s_type: StructureType,
3732    pub next: *const c_void,
3733    pub flags: HostImageCopyFlags,
3734    pub src_image: Image,
3735    pub src_image_layout: ImageLayout,
3736    pub region_count: u32,
3737    pub regions: *const ImageToMemoryCopy,
3738}
3739
3740impl Default for CopyImageToMemoryInfo {
3741    #[inline]
3742    fn default() -> Self {
3743        Self {
3744            s_type: StructureType::COPY_IMAGE_TO_MEMORY_INFO,
3745            next: ptr::null(),
3746            flags: HostImageCopyFlags::default(),
3747            src_image: Image::default(),
3748            src_image_layout: ImageLayout::default(),
3749            region_count: u32::default(),
3750            regions: ptr::null(),
3751        }
3752    }
3753}
3754
3755unsafe impl Send for CopyImageToMemoryInfo {}
3756unsafe impl Sync for CopyImageToMemoryInfo {}
3757
3758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandKHR.html>
3759#[repr(C)]
3760#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3761pub struct CopyMemoryIndirectCommandKHR {
3762    pub src_address: DeviceAddress,
3763    pub dst_address: DeviceAddress,
3764    pub size: DeviceSize,
3765}
3766
3767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectInfoKHR.html>
3768#[repr(C)]
3769#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3770pub struct CopyMemoryIndirectInfoKHR {
3771    pub s_type: StructureType,
3772    pub next: *const c_void,
3773    pub src_copy_flags: AddressCopyFlagsKHR,
3774    pub dst_copy_flags: AddressCopyFlagsKHR,
3775    pub copy_count: u32,
3776    pub copy_address_range: StridedDeviceAddressRangeKHR,
3777}
3778
3779impl Default for CopyMemoryIndirectInfoKHR {
3780    #[inline]
3781    fn default() -> Self {
3782        Self {
3783            s_type: StructureType::COPY_MEMORY_INDIRECT_INFO_KHR,
3784            next: ptr::null(),
3785            src_copy_flags: AddressCopyFlagsKHR::default(),
3786            dst_copy_flags: AddressCopyFlagsKHR::default(),
3787            copy_count: u32::default(),
3788            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3789        }
3790    }
3791}
3792
3793unsafe impl Send for CopyMemoryIndirectInfoKHR {}
3794unsafe impl Sync for CopyMemoryIndirectInfoKHR {}
3795
3796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>
3797#[repr(C)]
3798#[derive(Copy, Clone, Debug)]
3799pub struct CopyMemoryToAccelerationStructureInfoKHR {
3800    pub s_type: StructureType,
3801    pub next: *const c_void,
3802    pub src: DeviceOrHostAddressConstKHR,
3803    pub dst: AccelerationStructureKHR,
3804    pub mode: CopyAccelerationStructureModeKHR,
3805}
3806
3807impl Default for CopyMemoryToAccelerationStructureInfoKHR {
3808    #[inline]
3809    fn default() -> Self {
3810        Self {
3811            s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
3812            next: ptr::null(),
3813            src: DeviceOrHostAddressConstKHR::default(),
3814            dst: AccelerationStructureKHR::default(),
3815            mode: CopyAccelerationStructureModeKHR::default(),
3816        }
3817    }
3818}
3819
3820unsafe impl Send for CopyMemoryToAccelerationStructureInfoKHR {}
3821unsafe impl Sync for CopyMemoryToAccelerationStructureInfoKHR {}
3822
3823/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandKHR.html>
3824#[repr(C)]
3825#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3826pub struct CopyMemoryToImageIndirectCommandKHR {
3827    pub src_address: DeviceAddress,
3828    pub buffer_row_length: u32,
3829    pub buffer_image_height: u32,
3830    pub image_subresource: ImageSubresourceLayers,
3831    pub image_offset: Offset3D,
3832    pub image_extent: Extent3D,
3833}
3834
3835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectInfoKHR.html>
3836#[repr(C)]
3837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3838pub struct CopyMemoryToImageIndirectInfoKHR {
3839    pub s_type: StructureType,
3840    pub next: *const c_void,
3841    pub src_copy_flags: AddressCopyFlagsKHR,
3842    pub copy_count: u32,
3843    pub copy_address_range: StridedDeviceAddressRangeKHR,
3844    pub dst_image: Image,
3845    pub dst_image_layout: ImageLayout,
3846    pub image_subresources: *const ImageSubresourceLayers,
3847}
3848
3849impl Default for CopyMemoryToImageIndirectInfoKHR {
3850    #[inline]
3851    fn default() -> Self {
3852        Self {
3853            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR,
3854            next: ptr::null(),
3855            src_copy_flags: AddressCopyFlagsKHR::default(),
3856            copy_count: u32::default(),
3857            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3858            dst_image: Image::default(),
3859            dst_image_layout: ImageLayout::default(),
3860            image_subresources: ptr::null(),
3861        }
3862    }
3863}
3864
3865unsafe impl Send for CopyMemoryToImageIndirectInfoKHR {}
3866unsafe impl Sync for CopyMemoryToImageIndirectInfoKHR {}
3867
3868/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html>
3869#[repr(C)]
3870#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3871pub struct CopyMemoryToImageInfo {
3872    pub s_type: StructureType,
3873    pub next: *const c_void,
3874    pub flags: HostImageCopyFlags,
3875    pub dst_image: Image,
3876    pub dst_image_layout: ImageLayout,
3877    pub region_count: u32,
3878    pub regions: *const MemoryToImageCopy,
3879}
3880
3881impl Default for CopyMemoryToImageInfo {
3882    #[inline]
3883    fn default() -> Self {
3884        Self {
3885            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INFO,
3886            next: ptr::null(),
3887            flags: HostImageCopyFlags::default(),
3888            dst_image: Image::default(),
3889            dst_image_layout: ImageLayout::default(),
3890            region_count: u32::default(),
3891            regions: ptr::null(),
3892        }
3893    }
3894}
3895
3896unsafe impl Send for CopyMemoryToImageInfo {}
3897unsafe impl Sync for CopyMemoryToImageInfo {}
3898
3899/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html>
3900#[repr(C)]
3901#[derive(Copy, Clone, Debug)]
3902pub struct CopyMemoryToMicromapInfoEXT {
3903    pub s_type: StructureType,
3904    pub next: *const c_void,
3905    pub src: DeviceOrHostAddressConstKHR,
3906    pub dst: MicromapEXT,
3907    pub mode: CopyMicromapModeEXT,
3908}
3909
3910impl Default for CopyMemoryToMicromapInfoEXT {
3911    #[inline]
3912    fn default() -> Self {
3913        Self {
3914            s_type: StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT,
3915            next: ptr::null(),
3916            src: DeviceOrHostAddressConstKHR::default(),
3917            dst: MicromapEXT::default(),
3918            mode: CopyMicromapModeEXT::default(),
3919        }
3920    }
3921}
3922
3923unsafe impl Send for CopyMemoryToMicromapInfoEXT {}
3924unsafe impl Sync for CopyMemoryToMicromapInfoEXT {}
3925
3926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html>
3927#[repr(C)]
3928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3929pub struct CopyMicromapInfoEXT {
3930    pub s_type: StructureType,
3931    pub next: *const c_void,
3932    pub src: MicromapEXT,
3933    pub dst: MicromapEXT,
3934    pub mode: CopyMicromapModeEXT,
3935}
3936
3937impl Default for CopyMicromapInfoEXT {
3938    #[inline]
3939    fn default() -> Self {
3940        Self {
3941            s_type: StructureType::COPY_MICROMAP_INFO_EXT,
3942            next: ptr::null(),
3943            src: MicromapEXT::default(),
3944            dst: MicromapEXT::default(),
3945            mode: CopyMicromapModeEXT::default(),
3946        }
3947    }
3948}
3949
3950unsafe impl Send for CopyMicromapInfoEXT {}
3951unsafe impl Sync for CopyMicromapInfoEXT {}
3952
3953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html>
3954#[repr(C)]
3955#[derive(Copy, Clone, Debug)]
3956pub struct CopyMicromapToMemoryInfoEXT {
3957    pub s_type: StructureType,
3958    pub next: *const c_void,
3959    pub src: MicromapEXT,
3960    pub dst: DeviceOrHostAddressKHR,
3961    pub mode: CopyMicromapModeEXT,
3962}
3963
3964impl Default for CopyMicromapToMemoryInfoEXT {
3965    #[inline]
3966    fn default() -> Self {
3967        Self {
3968            s_type: StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT,
3969            next: ptr::null(),
3970            src: MicromapEXT::default(),
3971            dst: DeviceOrHostAddressKHR::default(),
3972            mode: CopyMicromapModeEXT::default(),
3973        }
3974    }
3975}
3976
3977unsafe impl Send for CopyMicromapToMemoryInfoEXT {}
3978unsafe impl Sync for CopyMicromapToMemoryInfoEXT {}
3979
3980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyTensorInfoARM.html>
3981#[repr(C)]
3982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3983pub struct CopyTensorInfoARM {
3984    pub s_type: StructureType,
3985    pub next: *const c_void,
3986    pub src_tensor: TensorARM,
3987    pub dst_tensor: TensorARM,
3988    pub region_count: u32,
3989    pub regions: *const TensorCopyARM,
3990}
3991
3992impl Default for CopyTensorInfoARM {
3993    #[inline]
3994    fn default() -> Self {
3995        Self {
3996            s_type: StructureType::COPY_TENSOR_INFO_ARM,
3997            next: ptr::null(),
3998            src_tensor: TensorARM::default(),
3999            dst_tensor: TensorARM::default(),
4000            region_count: u32::default(),
4001            regions: ptr::null(),
4002        }
4003    }
4004}
4005
4006unsafe impl Send for CopyTensorInfoARM {}
4007unsafe impl Sync for CopyTensorInfoARM {}
4008
4009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html>
4010#[repr(C)]
4011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4012pub struct CuFunctionCreateInfoNVX {
4013    pub s_type: StructureType,
4014    pub next: *const c_void,
4015    pub module: CuModuleNVX,
4016    pub name: *const c_char,
4017}
4018
4019impl Default for CuFunctionCreateInfoNVX {
4020    #[inline]
4021    fn default() -> Self {
4022        Self {
4023            s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
4024            next: ptr::null(),
4025            module: CuModuleNVX::default(),
4026            name: ptr::null(),
4027        }
4028    }
4029}
4030
4031unsafe impl Send for CuFunctionCreateInfoNVX {}
4032unsafe impl Sync for CuFunctionCreateInfoNVX {}
4033
4034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html>
4035#[repr(C)]
4036#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4037pub struct CuLaunchInfoNVX {
4038    pub s_type: StructureType,
4039    pub next: *const c_void,
4040    pub function: CuFunctionNVX,
4041    pub grid_dim_x: u32,
4042    pub grid_dim_y: u32,
4043    pub grid_dim_z: u32,
4044    pub block_dim_x: u32,
4045    pub block_dim_y: u32,
4046    pub block_dim_z: u32,
4047    pub shared_mem_bytes: u32,
4048    pub param_count: usize,
4049    pub params: *const c_void,
4050    pub extra_count: usize,
4051    pub extras: *const c_void,
4052}
4053
4054impl Default for CuLaunchInfoNVX {
4055    #[inline]
4056    fn default() -> Self {
4057        Self {
4058            s_type: StructureType::CU_LAUNCH_INFO_NVX,
4059            next: ptr::null(),
4060            function: CuFunctionNVX::default(),
4061            grid_dim_x: u32::default(),
4062            grid_dim_y: u32::default(),
4063            grid_dim_z: u32::default(),
4064            block_dim_x: u32::default(),
4065            block_dim_y: u32::default(),
4066            block_dim_z: u32::default(),
4067            shared_mem_bytes: u32::default(),
4068            param_count: usize::default(),
4069            params: ptr::null(),
4070            extra_count: usize::default(),
4071            extras: ptr::null(),
4072        }
4073    }
4074}
4075
4076unsafe impl Send for CuLaunchInfoNVX {}
4077unsafe impl Sync for CuLaunchInfoNVX {}
4078
4079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html>
4080#[repr(C)]
4081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4082pub struct CuModuleCreateInfoNVX {
4083    pub s_type: StructureType,
4084    pub next: *const c_void,
4085    pub data_size: usize,
4086    pub data: *const c_void,
4087}
4088
4089impl Default for CuModuleCreateInfoNVX {
4090    #[inline]
4091    fn default() -> Self {
4092        Self {
4093            s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
4094            next: ptr::null(),
4095            data_size: usize::default(),
4096            data: ptr::null(),
4097        }
4098    }
4099}
4100
4101unsafe impl Send for CuModuleCreateInfoNVX {}
4102unsafe impl Sync for CuModuleCreateInfoNVX {}
4103
4104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html>
4105#[repr(C)]
4106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4107pub struct CuModuleTexturingModeCreateInfoNVX {
4108    pub s_type: StructureType,
4109    pub next: *const c_void,
4110    pub use64bit_texturing: Bool32,
4111}
4112
4113impl Default for CuModuleTexturingModeCreateInfoNVX {
4114    #[inline]
4115    fn default() -> Self {
4116        Self {
4117            s_type: StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX,
4118            next: ptr::null(),
4119            use64bit_texturing: Bool32::default(),
4120        }
4121    }
4122}
4123
4124unsafe impl Send for CuModuleTexturingModeCreateInfoNVX {}
4125unsafe impl Sync for CuModuleTexturingModeCreateInfoNVX {}
4126
4127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html>
4128#[repr(C)]
4129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4130pub struct CudaFunctionCreateInfoNV {
4131    pub s_type: StructureType,
4132    pub next: *const c_void,
4133    pub module: CudaModuleNV,
4134    pub name: *const c_char,
4135}
4136
4137impl Default for CudaFunctionCreateInfoNV {
4138    #[inline]
4139    fn default() -> Self {
4140        Self {
4141            s_type: StructureType::CUDA_FUNCTION_CREATE_INFO_NV,
4142            next: ptr::null(),
4143            module: CudaModuleNV::default(),
4144            name: ptr::null(),
4145        }
4146    }
4147}
4148
4149unsafe impl Send for CudaFunctionCreateInfoNV {}
4150unsafe impl Sync for CudaFunctionCreateInfoNV {}
4151
4152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html>
4153#[repr(C)]
4154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4155pub struct CudaLaunchInfoNV {
4156    pub s_type: StructureType,
4157    pub next: *const c_void,
4158    pub function: CudaFunctionNV,
4159    pub grid_dim_x: u32,
4160    pub grid_dim_y: u32,
4161    pub grid_dim_z: u32,
4162    pub block_dim_x: u32,
4163    pub block_dim_y: u32,
4164    pub block_dim_z: u32,
4165    pub shared_mem_bytes: u32,
4166    pub param_count: usize,
4167    pub params: *const c_void,
4168    pub extra_count: usize,
4169    pub extras: *const c_void,
4170}
4171
4172impl Default for CudaLaunchInfoNV {
4173    #[inline]
4174    fn default() -> Self {
4175        Self {
4176            s_type: StructureType::CUDA_LAUNCH_INFO_NV,
4177            next: ptr::null(),
4178            function: CudaFunctionNV::default(),
4179            grid_dim_x: u32::default(),
4180            grid_dim_y: u32::default(),
4181            grid_dim_z: u32::default(),
4182            block_dim_x: u32::default(),
4183            block_dim_y: u32::default(),
4184            block_dim_z: u32::default(),
4185            shared_mem_bytes: u32::default(),
4186            param_count: usize::default(),
4187            params: ptr::null(),
4188            extra_count: usize::default(),
4189            extras: ptr::null(),
4190        }
4191    }
4192}
4193
4194unsafe impl Send for CudaLaunchInfoNV {}
4195unsafe impl Sync for CudaLaunchInfoNV {}
4196
4197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html>
4198#[repr(C)]
4199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4200pub struct CudaModuleCreateInfoNV {
4201    pub s_type: StructureType,
4202    pub next: *const c_void,
4203    pub data_size: usize,
4204    pub data: *const c_void,
4205}
4206
4207impl Default for CudaModuleCreateInfoNV {
4208    #[inline]
4209    fn default() -> Self {
4210        Self {
4211            s_type: StructureType::CUDA_MODULE_CREATE_INFO_NV,
4212            next: ptr::null(),
4213            data_size: usize::default(),
4214            data: ptr::null(),
4215        }
4216    }
4217}
4218
4219unsafe impl Send for CudaModuleCreateInfoNV {}
4220unsafe impl Sync for CudaModuleCreateInfoNV {}
4221
4222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html>
4223#[repr(C)]
4224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4225pub struct D3D12FenceSubmitInfoKHR {
4226    pub s_type: StructureType,
4227    pub next: *const c_void,
4228    pub wait_semaphore_values_count: u32,
4229    pub wait_semaphore_values: *const u64,
4230    pub signal_semaphore_values_count: u32,
4231    pub signal_semaphore_values: *const u64,
4232}
4233
4234impl Default for D3D12FenceSubmitInfoKHR {
4235    #[inline]
4236    fn default() -> Self {
4237        Self {
4238            s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
4239            next: ptr::null(),
4240            wait_semaphore_values_count: u32::default(),
4241            wait_semaphore_values: ptr::null(),
4242            signal_semaphore_values_count: u32::default(),
4243            signal_semaphore_values: ptr::null(),
4244        }
4245    }
4246}
4247
4248unsafe impl Send for D3D12FenceSubmitInfoKHR {}
4249unsafe impl Sync for D3D12FenceSubmitInfoKHR {}
4250
4251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCompilerControlCreateInfoARM.html>
4252#[repr(C)]
4253#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4254pub struct DataGraphPipelineCompilerControlCreateInfoARM {
4255    pub s_type: StructureType,
4256    pub next: *const c_void,
4257    pub vendor_options: *const c_char,
4258}
4259
4260impl Default for DataGraphPipelineCompilerControlCreateInfoARM {
4261    #[inline]
4262    fn default() -> Self {
4263        Self {
4264            s_type: StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM,
4265            next: ptr::null(),
4266            vendor_options: ptr::null(),
4267        }
4268    }
4269}
4270
4271unsafe impl Send for DataGraphPipelineCompilerControlCreateInfoARM {}
4272unsafe impl Sync for DataGraphPipelineCompilerControlCreateInfoARM {}
4273
4274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantARM.html>
4275#[repr(C)]
4276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4277pub struct DataGraphPipelineConstantARM {
4278    pub s_type: StructureType,
4279    pub next: *const c_void,
4280    pub id: u32,
4281    pub constant_data: *const c_void,
4282}
4283
4284impl Default for DataGraphPipelineConstantARM {
4285    #[inline]
4286    fn default() -> Self {
4287        Self {
4288            s_type: StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM,
4289            next: ptr::null(),
4290            id: u32::default(),
4291            constant_data: ptr::null(),
4292        }
4293    }
4294}
4295
4296unsafe impl Send for DataGraphPipelineConstantARM {}
4297unsafe impl Sync for DataGraphPipelineConstantARM {}
4298
4299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.html>
4300#[repr(C)]
4301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4302pub struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4303    pub s_type: StructureType,
4304    pub next: *const c_void,
4305    pub dimension: u32,
4306    pub zero_count: u32,
4307    pub group_size: u32,
4308}
4309
4310impl Default for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4311    #[inline]
4312    fn default() -> Self {
4313        Self {
4314            s_type:
4315                StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM,
4316            next: ptr::null(),
4317            dimension: u32::default(),
4318            zero_count: u32::default(),
4319            group_size: u32::default(),
4320        }
4321    }
4322}
4323
4324unsafe impl Send for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4325unsafe impl Sync for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4326
4327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCreateInfoARM.html>
4328#[repr(C)]
4329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4330pub struct DataGraphPipelineCreateInfoARM {
4331    pub s_type: StructureType,
4332    pub next: *const c_void,
4333    pub flags: PipelineCreateFlags2KHR,
4334    pub layout: PipelineLayout,
4335    pub resource_info_count: u32,
4336    pub resource_infos: *const DataGraphPipelineResourceInfoARM,
4337}
4338
4339impl Default for DataGraphPipelineCreateInfoARM {
4340    #[inline]
4341    fn default() -> Self {
4342        Self {
4343            s_type: StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM,
4344            next: ptr::null(),
4345            flags: PipelineCreateFlags2KHR::default(),
4346            layout: PipelineLayout::default(),
4347            resource_info_count: u32::default(),
4348            resource_infos: ptr::null(),
4349        }
4350    }
4351}
4352
4353unsafe impl Send for DataGraphPipelineCreateInfoARM {}
4354unsafe impl Sync for DataGraphPipelineCreateInfoARM {}
4355
4356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchInfoARM.html>
4357#[repr(C)]
4358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4359pub struct DataGraphPipelineDispatchInfoARM {
4360    pub s_type: StructureType,
4361    pub next: *mut c_void,
4362    pub flags: DataGraphPipelineDispatchFlagsARM,
4363}
4364
4365impl Default for DataGraphPipelineDispatchInfoARM {
4366    #[inline]
4367    fn default() -> Self {
4368        Self {
4369            s_type: StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM,
4370            next: ptr::null_mut(),
4371            flags: DataGraphPipelineDispatchFlagsARM::default(),
4372        }
4373    }
4374}
4375
4376unsafe impl Send for DataGraphPipelineDispatchInfoARM {}
4377unsafe impl Sync for DataGraphPipelineDispatchInfoARM {}
4378
4379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineIdentifierCreateInfoARM.html>
4380#[repr(C)]
4381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4382pub struct DataGraphPipelineIdentifierCreateInfoARM {
4383    pub s_type: StructureType,
4384    pub next: *const c_void,
4385    pub identifier_size: u32,
4386    pub identifier: *const u8,
4387}
4388
4389impl Default for DataGraphPipelineIdentifierCreateInfoARM {
4390    #[inline]
4391    fn default() -> Self {
4392        Self {
4393            s_type: StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM,
4394            next: ptr::null(),
4395            identifier_size: u32::default(),
4396            identifier: ptr::null(),
4397        }
4398    }
4399}
4400
4401unsafe impl Send for DataGraphPipelineIdentifierCreateInfoARM {}
4402unsafe impl Sync for DataGraphPipelineIdentifierCreateInfoARM {}
4403
4404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineInfoARM.html>
4405#[repr(C)]
4406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4407pub struct DataGraphPipelineInfoARM {
4408    pub s_type: StructureType,
4409    pub next: *const c_void,
4410    pub data_graph_pipeline: Pipeline,
4411}
4412
4413impl Default for DataGraphPipelineInfoARM {
4414    #[inline]
4415    fn default() -> Self {
4416        Self {
4417            s_type: StructureType::DATA_GRAPH_PIPELINE_INFO_ARM,
4418            next: ptr::null(),
4419            data_graph_pipeline: Pipeline::default(),
4420        }
4421    }
4422}
4423
4424unsafe impl Send for DataGraphPipelineInfoARM {}
4425unsafe impl Sync for DataGraphPipelineInfoARM {}
4426
4427/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyQueryResultARM.html>
4428#[repr(C)]
4429#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4430pub struct DataGraphPipelinePropertyQueryResultARM {
4431    pub s_type: StructureType,
4432    pub next: *const c_void,
4433    pub property: DataGraphPipelinePropertyARM,
4434    pub is_text: Bool32,
4435    pub data_size: usize,
4436    pub data: *mut c_void,
4437}
4438
4439impl Default for DataGraphPipelinePropertyQueryResultARM {
4440    #[inline]
4441    fn default() -> Self {
4442        Self {
4443            s_type: StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM,
4444            next: ptr::null(),
4445            property: DataGraphPipelinePropertyARM::default(),
4446            is_text: Bool32::default(),
4447            data_size: usize::default(),
4448            data: ptr::null_mut(),
4449        }
4450    }
4451}
4452
4453unsafe impl Send for DataGraphPipelinePropertyQueryResultARM {}
4454unsafe impl Sync for DataGraphPipelinePropertyQueryResultARM {}
4455
4456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineResourceInfoARM.html>
4457#[repr(C)]
4458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4459pub struct DataGraphPipelineResourceInfoARM {
4460    pub s_type: StructureType,
4461    pub next: *const c_void,
4462    pub descriptor_set: u32,
4463    pub binding: u32,
4464    pub array_element: u32,
4465}
4466
4467impl Default for DataGraphPipelineResourceInfoARM {
4468    #[inline]
4469    fn default() -> Self {
4470        Self {
4471            s_type: StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM,
4472            next: ptr::null(),
4473            descriptor_set: u32::default(),
4474            binding: u32::default(),
4475            array_element: u32::default(),
4476        }
4477    }
4478}
4479
4480unsafe impl Send for DataGraphPipelineResourceInfoARM {}
4481unsafe impl Sync for DataGraphPipelineResourceInfoARM {}
4482
4483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementARM.html>
4484#[repr(C)]
4485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4486pub struct DataGraphPipelineSessionBindPointRequirementARM {
4487    pub s_type: StructureType,
4488    pub next: *const c_void,
4489    pub bind_point: DataGraphPipelineSessionBindPointARM,
4490    pub bind_point_type: DataGraphPipelineSessionBindPointTypeARM,
4491    pub num_objects: u32,
4492}
4493
4494impl Default for DataGraphPipelineSessionBindPointRequirementARM {
4495    #[inline]
4496    fn default() -> Self {
4497        Self {
4498            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM,
4499            next: ptr::null(),
4500            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4501            bind_point_type: DataGraphPipelineSessionBindPointTypeARM::default(),
4502            num_objects: u32::default(),
4503        }
4504    }
4505}
4506
4507unsafe impl Send for DataGraphPipelineSessionBindPointRequirementARM {}
4508unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementARM {}
4509
4510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementsInfoARM.html>
4511#[repr(C)]
4512#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4513pub struct DataGraphPipelineSessionBindPointRequirementsInfoARM {
4514    pub s_type: StructureType,
4515    pub next: *const c_void,
4516    pub session: DataGraphPipelineSessionARM,
4517}
4518
4519impl Default for DataGraphPipelineSessionBindPointRequirementsInfoARM {
4520    #[inline]
4521    fn default() -> Self {
4522        Self {
4523            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM,
4524            next: ptr::null(),
4525            session: DataGraphPipelineSessionARM::default(),
4526        }
4527    }
4528}
4529
4530unsafe impl Send for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4531unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4532
4533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateInfoARM.html>
4534#[repr(C)]
4535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4536pub struct DataGraphPipelineSessionCreateInfoARM {
4537    pub s_type: StructureType,
4538    pub next: *const c_void,
4539    pub flags: DataGraphPipelineSessionCreateFlagsARM,
4540    pub data_graph_pipeline: Pipeline,
4541}
4542
4543impl Default for DataGraphPipelineSessionCreateInfoARM {
4544    #[inline]
4545    fn default() -> Self {
4546        Self {
4547            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM,
4548            next: ptr::null(),
4549            flags: DataGraphPipelineSessionCreateFlagsARM::default(),
4550            data_graph_pipeline: Pipeline::default(),
4551        }
4552    }
4553}
4554
4555unsafe impl Send for DataGraphPipelineSessionCreateInfoARM {}
4556unsafe impl Sync for DataGraphPipelineSessionCreateInfoARM {}
4557
4558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionMemoryRequirementsInfoARM.html>
4559#[repr(C)]
4560#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4561pub struct DataGraphPipelineSessionMemoryRequirementsInfoARM {
4562    pub s_type: StructureType,
4563    pub next: *const c_void,
4564    pub session: DataGraphPipelineSessionARM,
4565    pub bind_point: DataGraphPipelineSessionBindPointARM,
4566    pub object_index: u32,
4567}
4568
4569impl Default for DataGraphPipelineSessionMemoryRequirementsInfoARM {
4570    #[inline]
4571    fn default() -> Self {
4572        Self {
4573            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM,
4574            next: ptr::null(),
4575            session: DataGraphPipelineSessionARM::default(),
4576            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4577            object_index: u32::default(),
4578        }
4579    }
4580}
4581
4582unsafe impl Send for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4583unsafe impl Sync for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4584
4585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineShaderModuleCreateInfoARM.html>
4586#[repr(C)]
4587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4588pub struct DataGraphPipelineShaderModuleCreateInfoARM {
4589    pub s_type: StructureType,
4590    pub next: *const c_void,
4591    pub module: ShaderModule,
4592    pub name: *const c_char,
4593    pub specialization_info: *const SpecializationInfo,
4594    pub constant_count: u32,
4595    pub constants: *const DataGraphPipelineConstantARM,
4596}
4597
4598impl Default for DataGraphPipelineShaderModuleCreateInfoARM {
4599    #[inline]
4600    fn default() -> Self {
4601        Self {
4602            s_type: StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM,
4603            next: ptr::null(),
4604            module: ShaderModule::default(),
4605            name: ptr::null(),
4606            specialization_info: ptr::null(),
4607            constant_count: u32::default(),
4608            constants: ptr::null(),
4609        }
4610    }
4611}
4612
4613unsafe impl Send for DataGraphPipelineShaderModuleCreateInfoARM {}
4614unsafe impl Sync for DataGraphPipelineShaderModuleCreateInfoARM {}
4615
4616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphProcessingEngineCreateInfoARM.html>
4617#[repr(C)]
4618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4619pub struct DataGraphProcessingEngineCreateInfoARM {
4620    pub s_type: StructureType,
4621    pub next: *const c_void,
4622    pub processing_engine_count: u32,
4623    pub processing_engines: *mut PhysicalDeviceDataGraphProcessingEngineARM,
4624}
4625
4626impl Default for DataGraphProcessingEngineCreateInfoARM {
4627    #[inline]
4628    fn default() -> Self {
4629        Self {
4630            s_type: StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM,
4631            next: ptr::null(),
4632            processing_engine_count: u32::default(),
4633            processing_engines: ptr::null_mut(),
4634        }
4635    }
4636}
4637
4638unsafe impl Send for DataGraphProcessingEngineCreateInfoARM {}
4639unsafe impl Sync for DataGraphProcessingEngineCreateInfoARM {}
4640
4641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html>
4642#[repr(C)]
4643#[derive(Copy, Clone, Debug, PartialEq)]
4644pub struct DebugMarkerMarkerInfoEXT {
4645    pub s_type: StructureType,
4646    pub next: *const c_void,
4647    pub marker_name: *const c_char,
4648    pub color: [f32; 4],
4649}
4650
4651impl Default for DebugMarkerMarkerInfoEXT {
4652    #[inline]
4653    fn default() -> Self {
4654        Self {
4655            s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
4656            next: ptr::null(),
4657            marker_name: ptr::null(),
4658            color: [f32::default(); 4],
4659        }
4660    }
4661}
4662
4663unsafe impl Send for DebugMarkerMarkerInfoEXT {}
4664unsafe impl Sync for DebugMarkerMarkerInfoEXT {}
4665
4666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html>
4667#[repr(C)]
4668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4669pub struct DebugMarkerObjectNameInfoEXT {
4670    pub s_type: StructureType,
4671    pub next: *const c_void,
4672    pub object_type: DebugReportObjectTypeEXT,
4673    pub object: u64,
4674    pub object_name: *const c_char,
4675}
4676
4677impl Default for DebugMarkerObjectNameInfoEXT {
4678    #[inline]
4679    fn default() -> Self {
4680        Self {
4681            s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
4682            next: ptr::null(),
4683            object_type: DebugReportObjectTypeEXT::default(),
4684            object: u64::default(),
4685            object_name: ptr::null(),
4686        }
4687    }
4688}
4689
4690unsafe impl Send for DebugMarkerObjectNameInfoEXT {}
4691unsafe impl Sync for DebugMarkerObjectNameInfoEXT {}
4692
4693/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html>
4694#[repr(C)]
4695#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4696pub struct DebugMarkerObjectTagInfoEXT {
4697    pub s_type: StructureType,
4698    pub next: *const c_void,
4699    pub object_type: DebugReportObjectTypeEXT,
4700    pub object: u64,
4701    pub tag_name: u64,
4702    pub tag_size: usize,
4703    pub tag: *const c_void,
4704}
4705
4706impl Default for DebugMarkerObjectTagInfoEXT {
4707    #[inline]
4708    fn default() -> Self {
4709        Self {
4710            s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
4711            next: ptr::null(),
4712            object_type: DebugReportObjectTypeEXT::default(),
4713            object: u64::default(),
4714            tag_name: u64::default(),
4715            tag_size: usize::default(),
4716            tag: ptr::null(),
4717        }
4718    }
4719}
4720
4721unsafe impl Send for DebugMarkerObjectTagInfoEXT {}
4722unsafe impl Sync for DebugMarkerObjectTagInfoEXT {}
4723
4724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html>
4725#[repr(C)]
4726#[derive(Copy, Clone)]
4727pub struct DebugReportCallbackCreateInfoEXT {
4728    pub s_type: StructureType,
4729    pub next: *const c_void,
4730    pub flags: DebugReportFlagsEXT,
4731    pub callback: PFN_vkDebugReportCallbackEXT,
4732    pub user_data: *mut c_void,
4733}
4734
4735impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
4736    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4737        f.debug_struct("DebugReportCallbackCreateInfoEXT")
4738            .field("s_type", &self.s_type)
4739            .field("next", &self.next)
4740            .field("flags", &self.flags)
4741            .field("callback", &(self.callback.map(|f| f as *const u8)))
4742            .field("user_data", &self.user_data)
4743            .finish()
4744    }
4745}
4746
4747impl Default for DebugReportCallbackCreateInfoEXT {
4748    #[inline]
4749    fn default() -> Self {
4750        Self {
4751            s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
4752            next: ptr::null(),
4753            flags: DebugReportFlagsEXT::default(),
4754            callback: PFN_vkDebugReportCallbackEXT::default(),
4755            user_data: ptr::null_mut(),
4756        }
4757    }
4758}
4759
4760unsafe impl Send for DebugReportCallbackCreateInfoEXT {}
4761unsafe impl Sync for DebugReportCallbackCreateInfoEXT {}
4762
4763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html>
4764#[repr(C)]
4765#[derive(Copy, Clone, Debug, PartialEq)]
4766pub struct DebugUtilsLabelEXT {
4767    pub s_type: StructureType,
4768    pub next: *const c_void,
4769    pub label_name: *const c_char,
4770    pub color: [f32; 4],
4771}
4772
4773impl Default for DebugUtilsLabelEXT {
4774    #[inline]
4775    fn default() -> Self {
4776        Self {
4777            s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
4778            next: ptr::null(),
4779            label_name: ptr::null(),
4780            color: [f32::default(); 4],
4781        }
4782    }
4783}
4784
4785unsafe impl Send for DebugUtilsLabelEXT {}
4786unsafe impl Sync for DebugUtilsLabelEXT {}
4787
4788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>
4789#[repr(C)]
4790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4791pub struct DebugUtilsMessengerCallbackDataEXT {
4792    pub s_type: StructureType,
4793    pub next: *const c_void,
4794    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
4795    pub message_id_name: *const c_char,
4796    pub message_id_number: i32,
4797    pub message: *const c_char,
4798    pub queue_label_count: u32,
4799    pub queue_labels: *const DebugUtilsLabelEXT,
4800    pub cmd_buf_label_count: u32,
4801    pub cmd_buf_labels: *const DebugUtilsLabelEXT,
4802    pub object_count: u32,
4803    pub objects: *const DebugUtilsObjectNameInfoEXT,
4804}
4805
4806impl Default for DebugUtilsMessengerCallbackDataEXT {
4807    #[inline]
4808    fn default() -> Self {
4809        Self {
4810            s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
4811            next: ptr::null(),
4812            flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
4813            message_id_name: ptr::null(),
4814            message_id_number: i32::default(),
4815            message: ptr::null(),
4816            queue_label_count: u32::default(),
4817            queue_labels: ptr::null(),
4818            cmd_buf_label_count: u32::default(),
4819            cmd_buf_labels: ptr::null(),
4820            object_count: u32::default(),
4821            objects: ptr::null(),
4822        }
4823    }
4824}
4825
4826unsafe impl Send for DebugUtilsMessengerCallbackDataEXT {}
4827unsafe impl Sync for DebugUtilsMessengerCallbackDataEXT {}
4828
4829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>
4830#[repr(C)]
4831#[derive(Copy, Clone)]
4832pub struct DebugUtilsMessengerCreateInfoEXT {
4833    pub s_type: StructureType,
4834    pub next: *const c_void,
4835    pub flags: DebugUtilsMessengerCreateFlagsEXT,
4836    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
4837    pub message_type: DebugUtilsMessageTypeFlagsEXT,
4838    pub user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
4839    pub user_data: *mut c_void,
4840}
4841
4842impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
4843    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4844        f.debug_struct("DebugUtilsMessengerCreateInfoEXT")
4845            .field("s_type", &self.s_type)
4846            .field("next", &self.next)
4847            .field("flags", &self.flags)
4848            .field("message_severity", &self.message_severity)
4849            .field("message_type", &self.message_type)
4850            .field(
4851                "user_callback",
4852                &(self.user_callback.map(|f| f as *const u8)),
4853            )
4854            .field("user_data", &self.user_data)
4855            .finish()
4856    }
4857}
4858
4859impl Default for DebugUtilsMessengerCreateInfoEXT {
4860    #[inline]
4861    fn default() -> Self {
4862        Self {
4863            s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
4864            next: ptr::null(),
4865            flags: DebugUtilsMessengerCreateFlagsEXT::default(),
4866            message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
4867            message_type: DebugUtilsMessageTypeFlagsEXT::default(),
4868            user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
4869            user_data: ptr::null_mut(),
4870        }
4871    }
4872}
4873
4874unsafe impl Send for DebugUtilsMessengerCreateInfoEXT {}
4875unsafe impl Sync for DebugUtilsMessengerCreateInfoEXT {}
4876
4877/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html>
4878#[repr(C)]
4879#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4880pub struct DebugUtilsObjectNameInfoEXT {
4881    pub s_type: StructureType,
4882    pub next: *const c_void,
4883    pub object_type: ObjectType,
4884    pub object_handle: u64,
4885    pub object_name: *const c_char,
4886}
4887
4888impl Default for DebugUtilsObjectNameInfoEXT {
4889    #[inline]
4890    fn default() -> Self {
4891        Self {
4892            s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
4893            next: ptr::null(),
4894            object_type: ObjectType::default(),
4895            object_handle: u64::default(),
4896            object_name: ptr::null(),
4897        }
4898    }
4899}
4900
4901unsafe impl Send for DebugUtilsObjectNameInfoEXT {}
4902unsafe impl Sync for DebugUtilsObjectNameInfoEXT {}
4903
4904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html>
4905#[repr(C)]
4906#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4907pub struct DebugUtilsObjectTagInfoEXT {
4908    pub s_type: StructureType,
4909    pub next: *const c_void,
4910    pub object_type: ObjectType,
4911    pub object_handle: u64,
4912    pub tag_name: u64,
4913    pub tag_size: usize,
4914    pub tag: *const c_void,
4915}
4916
4917impl Default for DebugUtilsObjectTagInfoEXT {
4918    #[inline]
4919    fn default() -> Self {
4920        Self {
4921            s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
4922            next: ptr::null(),
4923            object_type: ObjectType::default(),
4924            object_handle: u64::default(),
4925            tag_name: u64::default(),
4926            tag_size: usize::default(),
4927            tag: ptr::null(),
4928        }
4929    }
4930}
4931
4932unsafe impl Send for DebugUtilsObjectTagInfoEXT {}
4933unsafe impl Sync for DebugUtilsObjectTagInfoEXT {}
4934
4935/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html>
4936#[repr(C)]
4937#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
4938pub struct DecompressMemoryRegionNV {
4939    pub src_address: DeviceAddress,
4940    pub dst_address: DeviceAddress,
4941    pub compressed_size: DeviceSize,
4942    pub decompressed_size: DeviceSize,
4943    pub decompression_method: MemoryDecompressionMethodFlagsNV,
4944}
4945
4946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>
4947#[repr(C)]
4948#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4949pub struct DedicatedAllocationBufferCreateInfoNV {
4950    pub s_type: StructureType,
4951    pub next: *const c_void,
4952    pub dedicated_allocation: Bool32,
4953}
4954
4955impl Default for DedicatedAllocationBufferCreateInfoNV {
4956    #[inline]
4957    fn default() -> Self {
4958        Self {
4959            s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
4960            next: ptr::null(),
4961            dedicated_allocation: Bool32::default(),
4962        }
4963    }
4964}
4965
4966unsafe impl Send for DedicatedAllocationBufferCreateInfoNV {}
4967unsafe impl Sync for DedicatedAllocationBufferCreateInfoNV {}
4968
4969/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html>
4970#[repr(C)]
4971#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4972pub struct DedicatedAllocationImageCreateInfoNV {
4973    pub s_type: StructureType,
4974    pub next: *const c_void,
4975    pub dedicated_allocation: Bool32,
4976}
4977
4978impl Default for DedicatedAllocationImageCreateInfoNV {
4979    #[inline]
4980    fn default() -> Self {
4981        Self {
4982            s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
4983            next: ptr::null(),
4984            dedicated_allocation: Bool32::default(),
4985        }
4986    }
4987}
4988
4989unsafe impl Send for DedicatedAllocationImageCreateInfoNV {}
4990unsafe impl Sync for DedicatedAllocationImageCreateInfoNV {}
4991
4992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>
4993#[repr(C)]
4994#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4995pub struct DedicatedAllocationMemoryAllocateInfoNV {
4996    pub s_type: StructureType,
4997    pub next: *const c_void,
4998    pub image: Image,
4999    pub buffer: Buffer,
5000}
5001
5002impl Default for DedicatedAllocationMemoryAllocateInfoNV {
5003    #[inline]
5004    fn default() -> Self {
5005        Self {
5006            s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
5007            next: ptr::null(),
5008            image: Image::default(),
5009            buffer: Buffer::default(),
5010        }
5011    }
5012}
5013
5014unsafe impl Send for DedicatedAllocationMemoryAllocateInfoNV {}
5015unsafe impl Sync for DedicatedAllocationMemoryAllocateInfoNV {}
5016
5017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfo.html>
5018#[repr(C)]
5019#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5020pub struct DependencyInfo {
5021    pub s_type: StructureType,
5022    pub next: *const c_void,
5023    pub dependency_flags: DependencyFlags,
5024    pub memory_barrier_count: u32,
5025    pub memory_barriers: *const MemoryBarrier2,
5026    pub buffer_memory_barrier_count: u32,
5027    pub buffer_memory_barriers: *const BufferMemoryBarrier2,
5028    pub image_memory_barrier_count: u32,
5029    pub image_memory_barriers: *const ImageMemoryBarrier2,
5030}
5031
5032impl Default for DependencyInfo {
5033    #[inline]
5034    fn default() -> Self {
5035        Self {
5036            s_type: StructureType::DEPENDENCY_INFO,
5037            next: ptr::null(),
5038            dependency_flags: DependencyFlags::default(),
5039            memory_barrier_count: u32::default(),
5040            memory_barriers: ptr::null(),
5041            buffer_memory_barrier_count: u32::default(),
5042            buffer_memory_barriers: ptr::null(),
5043            image_memory_barrier_count: u32::default(),
5044            image_memory_barriers: ptr::null(),
5045        }
5046    }
5047}
5048
5049unsafe impl Send for DependencyInfo {}
5050unsafe impl Sync for DependencyInfo {}
5051
5052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html>
5053#[repr(C)]
5054#[derive(Copy, Clone, Debug, PartialEq)]
5055pub struct DepthBiasInfoEXT {
5056    pub s_type: StructureType,
5057    pub next: *const c_void,
5058    pub depth_bias_constant_factor: f32,
5059    pub depth_bias_clamp: f32,
5060    pub depth_bias_slope_factor: f32,
5061}
5062
5063impl Default for DepthBiasInfoEXT {
5064    #[inline]
5065    fn default() -> Self {
5066        Self {
5067            s_type: StructureType::DEPTH_BIAS_INFO_EXT,
5068            next: ptr::null(),
5069            depth_bias_constant_factor: f32::default(),
5070            depth_bias_clamp: f32::default(),
5071            depth_bias_slope_factor: f32::default(),
5072        }
5073    }
5074}
5075
5076unsafe impl Send for DepthBiasInfoEXT {}
5077unsafe impl Sync for DepthBiasInfoEXT {}
5078
5079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html>
5080#[repr(C)]
5081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5082pub struct DepthBiasRepresentationInfoEXT {
5083    pub s_type: StructureType,
5084    pub next: *const c_void,
5085    pub depth_bias_representation: DepthBiasRepresentationEXT,
5086    pub depth_bias_exact: Bool32,
5087}
5088
5089impl Default for DepthBiasRepresentationInfoEXT {
5090    #[inline]
5091    fn default() -> Self {
5092        Self {
5093            s_type: StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT,
5094            next: ptr::null(),
5095            depth_bias_representation: DepthBiasRepresentationEXT::default(),
5096            depth_bias_exact: Bool32::default(),
5097        }
5098    }
5099}
5100
5101unsafe impl Send for DepthBiasRepresentationInfoEXT {}
5102unsafe impl Sync for DepthBiasRepresentationInfoEXT {}
5103
5104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html>
5105#[repr(C)]
5106#[derive(Copy, Clone, Default, Debug, PartialEq)]
5107pub struct DepthClampRangeEXT {
5108    pub min_depth_clamp: f32,
5109    pub max_depth_clamp: f32,
5110}
5111
5112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html>
5113#[repr(C)]
5114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5115pub struct DescriptorAddressInfoEXT {
5116    pub s_type: StructureType,
5117    pub next: *mut c_void,
5118    pub address: DeviceAddress,
5119    pub range: DeviceSize,
5120    pub format: Format,
5121}
5122
5123impl Default for DescriptorAddressInfoEXT {
5124    #[inline]
5125    fn default() -> Self {
5126        Self {
5127            s_type: StructureType::DESCRIPTOR_ADDRESS_INFO_EXT,
5128            next: ptr::null_mut(),
5129            address: DeviceAddress::default(),
5130            range: DeviceSize::default(),
5131            format: Format::default(),
5132        }
5133    }
5134}
5135
5136unsafe impl Send for DescriptorAddressInfoEXT {}
5137unsafe impl Sync for DescriptorAddressInfoEXT {}
5138
5139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html>
5140#[repr(C)]
5141#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5142pub struct DescriptorBufferBindingInfoEXT {
5143    pub s_type: StructureType,
5144    pub next: *const c_void,
5145    pub address: DeviceAddress,
5146    pub usage: BufferUsageFlags,
5147}
5148
5149impl Default for DescriptorBufferBindingInfoEXT {
5150    #[inline]
5151    fn default() -> Self {
5152        Self {
5153            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT,
5154            next: ptr::null(),
5155            address: DeviceAddress::default(),
5156            usage: BufferUsageFlags::default(),
5157        }
5158    }
5159}
5160
5161unsafe impl Send for DescriptorBufferBindingInfoEXT {}
5162unsafe impl Sync for DescriptorBufferBindingInfoEXT {}
5163
5164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html>
5165#[repr(C)]
5166#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5167pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5168    pub s_type: StructureType,
5169    pub next: *const c_void,
5170    pub buffer: Buffer,
5171}
5172
5173impl Default for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5174    #[inline]
5175    fn default() -> Self {
5176        Self {
5177            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT,
5178            next: ptr::null(),
5179            buffer: Buffer::default(),
5180        }
5181    }
5182}
5183
5184unsafe impl Send for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5185unsafe impl Sync for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5186
5187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html>
5188#[repr(C)]
5189#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5190pub struct DescriptorBufferInfo {
5191    pub buffer: Buffer,
5192    pub offset: DeviceSize,
5193    pub range: DeviceSize,
5194}
5195
5196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html>
5197#[repr(C)]
5198#[derive(Copy, Clone, Debug)]
5199pub struct DescriptorGetInfoEXT {
5200    pub s_type: StructureType,
5201    pub next: *const c_void,
5202    pub type_: DescriptorType,
5203    pub data: DescriptorDataEXT,
5204}
5205
5206impl Default for DescriptorGetInfoEXT {
5207    #[inline]
5208    fn default() -> Self {
5209        Self {
5210            s_type: StructureType::DESCRIPTOR_GET_INFO_EXT,
5211            next: ptr::null(),
5212            type_: DescriptorType::default(),
5213            data: DescriptorDataEXT::default(),
5214        }
5215    }
5216}
5217
5218unsafe impl Send for DescriptorGetInfoEXT {}
5219unsafe impl Sync for DescriptorGetInfoEXT {}
5220
5221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetTensorInfoARM.html>
5222#[repr(C)]
5223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5224pub struct DescriptorGetTensorInfoARM {
5225    pub s_type: StructureType,
5226    pub next: *const c_void,
5227    pub tensor_view: TensorViewARM,
5228}
5229
5230impl Default for DescriptorGetTensorInfoARM {
5231    #[inline]
5232    fn default() -> Self {
5233        Self {
5234            s_type: StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM,
5235            next: ptr::null(),
5236            tensor_view: TensorViewARM::default(),
5237        }
5238    }
5239}
5240
5241unsafe impl Send for DescriptorGetTensorInfoARM {}
5242unsafe impl Sync for DescriptorGetTensorInfoARM {}
5243
5244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html>
5245#[repr(C)]
5246#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5247pub struct DescriptorImageInfo {
5248    pub sampler: Sampler,
5249    pub image_view: ImageView,
5250    pub image_layout: ImageLayout,
5251}
5252
5253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html>
5254#[repr(C)]
5255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5256pub struct DescriptorPoolCreateInfo {
5257    pub s_type: StructureType,
5258    pub next: *const c_void,
5259    pub flags: DescriptorPoolCreateFlags,
5260    pub max_sets: u32,
5261    pub pool_size_count: u32,
5262    pub pool_sizes: *const DescriptorPoolSize,
5263}
5264
5265impl Default for DescriptorPoolCreateInfo {
5266    #[inline]
5267    fn default() -> Self {
5268        Self {
5269            s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
5270            next: ptr::null(),
5271            flags: DescriptorPoolCreateFlags::default(),
5272            max_sets: u32::default(),
5273            pool_size_count: u32::default(),
5274            pool_sizes: ptr::null(),
5275        }
5276    }
5277}
5278
5279unsafe impl Send for DescriptorPoolCreateInfo {}
5280unsafe impl Sync for DescriptorPoolCreateInfo {}
5281
5282/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html>
5283#[repr(C)]
5284#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5285pub struct DescriptorPoolInlineUniformBlockCreateInfo {
5286    pub s_type: StructureType,
5287    pub next: *const c_void,
5288    pub max_inline_uniform_block_bindings: u32,
5289}
5290
5291impl Default for DescriptorPoolInlineUniformBlockCreateInfo {
5292    #[inline]
5293    fn default() -> Self {
5294        Self {
5295            s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
5296            next: ptr::null(),
5297            max_inline_uniform_block_bindings: u32::default(),
5298        }
5299    }
5300}
5301
5302unsafe impl Send for DescriptorPoolInlineUniformBlockCreateInfo {}
5303unsafe impl Sync for DescriptorPoolInlineUniformBlockCreateInfo {}
5304
5305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html>
5306#[repr(C)]
5307#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5308pub struct DescriptorPoolSize {
5309    pub type_: DescriptorType,
5310    pub descriptor_count: u32,
5311}
5312
5313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html>
5314#[repr(C)]
5315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5316pub struct DescriptorSetAllocateInfo {
5317    pub s_type: StructureType,
5318    pub next: *const c_void,
5319    pub descriptor_pool: DescriptorPool,
5320    pub descriptor_set_count: u32,
5321    pub set_layouts: *const DescriptorSetLayout,
5322}
5323
5324impl Default for DescriptorSetAllocateInfo {
5325    #[inline]
5326    fn default() -> Self {
5327        Self {
5328            s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
5329            next: ptr::null(),
5330            descriptor_pool: DescriptorPool::default(),
5331            descriptor_set_count: u32::default(),
5332            set_layouts: ptr::null(),
5333        }
5334    }
5335}
5336
5337unsafe impl Send for DescriptorSetAllocateInfo {}
5338unsafe impl Sync for DescriptorSetAllocateInfo {}
5339
5340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html>
5341#[repr(C)]
5342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5343pub struct DescriptorSetBindingReferenceVALVE {
5344    pub s_type: StructureType,
5345    pub next: *const c_void,
5346    pub descriptor_set_layout: DescriptorSetLayout,
5347    pub binding: u32,
5348}
5349
5350impl Default for DescriptorSetBindingReferenceVALVE {
5351    #[inline]
5352    fn default() -> Self {
5353        Self {
5354            s_type: StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,
5355            next: ptr::null(),
5356            descriptor_set_layout: DescriptorSetLayout::default(),
5357            binding: u32::default(),
5358        }
5359    }
5360}
5361
5362unsafe impl Send for DescriptorSetBindingReferenceVALVE {}
5363unsafe impl Sync for DescriptorSetBindingReferenceVALVE {}
5364
5365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html>
5366#[repr(C)]
5367#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5368pub struct DescriptorSetLayoutBinding {
5369    pub binding: u32,
5370    pub descriptor_type: DescriptorType,
5371    pub descriptor_count: u32,
5372    pub stage_flags: ShaderStageFlags,
5373    pub immutable_samplers: *const Sampler,
5374}
5375
5376impl Default for DescriptorSetLayoutBinding {
5377    #[inline]
5378    fn default() -> Self {
5379        Self {
5380            binding: u32::default(),
5381            descriptor_type: DescriptorType::default(),
5382            descriptor_count: u32::default(),
5383            stage_flags: ShaderStageFlags::default(),
5384            immutable_samplers: ptr::null(),
5385        }
5386    }
5387}
5388
5389unsafe impl Send for DescriptorSetLayoutBinding {}
5390unsafe impl Sync for DescriptorSetLayoutBinding {}
5391
5392/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>
5393#[repr(C)]
5394#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5395pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
5396    pub s_type: StructureType,
5397    pub next: *const c_void,
5398    pub binding_count: u32,
5399    pub binding_flags: *const DescriptorBindingFlags,
5400}
5401
5402impl Default for DescriptorSetLayoutBindingFlagsCreateInfo {
5403    #[inline]
5404    fn default() -> Self {
5405        Self {
5406            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
5407            next: ptr::null(),
5408            binding_count: u32::default(),
5409            binding_flags: ptr::null(),
5410        }
5411    }
5412}
5413
5414unsafe impl Send for DescriptorSetLayoutBindingFlagsCreateInfo {}
5415unsafe impl Sync for DescriptorSetLayoutBindingFlagsCreateInfo {}
5416
5417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html>
5418#[repr(C)]
5419#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5420pub struct DescriptorSetLayoutCreateInfo {
5421    pub s_type: StructureType,
5422    pub next: *const c_void,
5423    pub flags: DescriptorSetLayoutCreateFlags,
5424    pub binding_count: u32,
5425    pub bindings: *const DescriptorSetLayoutBinding,
5426}
5427
5428impl Default for DescriptorSetLayoutCreateInfo {
5429    #[inline]
5430    fn default() -> Self {
5431        Self {
5432            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
5433            next: ptr::null(),
5434            flags: DescriptorSetLayoutCreateFlags::default(),
5435            binding_count: u32::default(),
5436            bindings: ptr::null(),
5437        }
5438    }
5439}
5440
5441unsafe impl Send for DescriptorSetLayoutCreateInfo {}
5442unsafe impl Sync for DescriptorSetLayoutCreateInfo {}
5443
5444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html>
5445#[repr(C)]
5446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5447pub struct DescriptorSetLayoutHostMappingInfoVALVE {
5448    pub s_type: StructureType,
5449    pub next: *mut c_void,
5450    pub descriptor_offset: usize,
5451    pub descriptor_size: u32,
5452}
5453
5454impl Default for DescriptorSetLayoutHostMappingInfoVALVE {
5455    #[inline]
5456    fn default() -> Self {
5457        Self {
5458            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
5459            next: ptr::null_mut(),
5460            descriptor_offset: usize::default(),
5461            descriptor_size: u32::default(),
5462        }
5463    }
5464}
5465
5466unsafe impl Send for DescriptorSetLayoutHostMappingInfoVALVE {}
5467unsafe impl Sync for DescriptorSetLayoutHostMappingInfoVALVE {}
5468
5469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html>
5470#[repr(C)]
5471#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5472pub struct DescriptorSetLayoutSupport {
5473    pub s_type: StructureType,
5474    pub next: *mut c_void,
5475    pub supported: Bool32,
5476}
5477
5478impl Default for DescriptorSetLayoutSupport {
5479    #[inline]
5480    fn default() -> Self {
5481        Self {
5482            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
5483            next: ptr::null_mut(),
5484            supported: Bool32::default(),
5485        }
5486    }
5487}
5488
5489unsafe impl Send for DescriptorSetLayoutSupport {}
5490unsafe impl Sync for DescriptorSetLayoutSupport {}
5491
5492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>
5493#[repr(C)]
5494#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5495pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
5496    pub s_type: StructureType,
5497    pub next: *const c_void,
5498    pub descriptor_set_count: u32,
5499    pub descriptor_counts: *const u32,
5500}
5501
5502impl Default for DescriptorSetVariableDescriptorCountAllocateInfo {
5503    #[inline]
5504    fn default() -> Self {
5505        Self {
5506            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
5507            next: ptr::null(),
5508            descriptor_set_count: u32::default(),
5509            descriptor_counts: ptr::null(),
5510        }
5511    }
5512}
5513
5514unsafe impl Send for DescriptorSetVariableDescriptorCountAllocateInfo {}
5515unsafe impl Sync for DescriptorSetVariableDescriptorCountAllocateInfo {}
5516
5517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>
5518#[repr(C)]
5519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5520pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
5521    pub s_type: StructureType,
5522    pub next: *mut c_void,
5523    pub max_variable_descriptor_count: u32,
5524}
5525
5526impl Default for DescriptorSetVariableDescriptorCountLayoutSupport {
5527    #[inline]
5528    fn default() -> Self {
5529        Self {
5530            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
5531            next: ptr::null_mut(),
5532            max_variable_descriptor_count: u32::default(),
5533        }
5534    }
5535}
5536
5537unsafe impl Send for DescriptorSetVariableDescriptorCountLayoutSupport {}
5538unsafe impl Sync for DescriptorSetVariableDescriptorCountLayoutSupport {}
5539
5540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html>
5541#[repr(C)]
5542#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5543pub struct DescriptorUpdateTemplateCreateInfo {
5544    pub s_type: StructureType,
5545    pub next: *const c_void,
5546    pub flags: DescriptorUpdateTemplateCreateFlags,
5547    pub descriptor_update_entry_count: u32,
5548    pub descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
5549    pub template_type: DescriptorUpdateTemplateType,
5550    pub descriptor_set_layout: DescriptorSetLayout,
5551    pub pipeline_bind_point: PipelineBindPoint,
5552    pub pipeline_layout: PipelineLayout,
5553    pub set: u32,
5554}
5555
5556impl Default for DescriptorUpdateTemplateCreateInfo {
5557    #[inline]
5558    fn default() -> Self {
5559        Self {
5560            s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
5561            next: ptr::null(),
5562            flags: DescriptorUpdateTemplateCreateFlags::default(),
5563            descriptor_update_entry_count: u32::default(),
5564            descriptor_update_entries: ptr::null(),
5565            template_type: DescriptorUpdateTemplateType::default(),
5566            descriptor_set_layout: DescriptorSetLayout::default(),
5567            pipeline_bind_point: PipelineBindPoint::default(),
5568            pipeline_layout: PipelineLayout::default(),
5569            set: u32::default(),
5570        }
5571    }
5572}
5573
5574unsafe impl Send for DescriptorUpdateTemplateCreateInfo {}
5575unsafe impl Sync for DescriptorUpdateTemplateCreateInfo {}
5576
5577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html>
5578#[repr(C)]
5579#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5580pub struct DescriptorUpdateTemplateEntry {
5581    pub dst_binding: u32,
5582    pub dst_array_element: u32,
5583    pub descriptor_count: u32,
5584    pub descriptor_type: DescriptorType,
5585    pub offset: usize,
5586    pub stride: usize,
5587}
5588
5589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html>
5590#[repr(C)]
5591#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5592pub struct DeviceAddressBindingCallbackDataEXT {
5593    pub s_type: StructureType,
5594    pub next: *mut c_void,
5595    pub flags: DeviceAddressBindingFlagsEXT,
5596    pub base_address: DeviceAddress,
5597    pub size: DeviceSize,
5598    pub binding_type: DeviceAddressBindingTypeEXT,
5599}
5600
5601impl Default for DeviceAddressBindingCallbackDataEXT {
5602    #[inline]
5603    fn default() -> Self {
5604        Self {
5605            s_type: StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT,
5606            next: ptr::null_mut(),
5607            flags: DeviceAddressBindingFlagsEXT::default(),
5608            base_address: DeviceAddress::default(),
5609            size: DeviceSize::default(),
5610            binding_type: DeviceAddressBindingTypeEXT::default(),
5611        }
5612    }
5613}
5614
5615unsafe impl Send for DeviceAddressBindingCallbackDataEXT {}
5616unsafe impl Sync for DeviceAddressBindingCallbackDataEXT {}
5617
5618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html>
5619#[repr(C)]
5620#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5621pub struct DeviceBufferMemoryRequirements {
5622    pub s_type: StructureType,
5623    pub next: *const c_void,
5624    pub create_info: *const BufferCreateInfo,
5625}
5626
5627impl Default for DeviceBufferMemoryRequirements {
5628    #[inline]
5629    fn default() -> Self {
5630        Self {
5631            s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS,
5632            next: ptr::null(),
5633            create_info: ptr::null(),
5634        }
5635    }
5636}
5637
5638unsafe impl Send for DeviceBufferMemoryRequirements {}
5639unsafe impl Sync for DeviceBufferMemoryRequirements {}
5640
5641/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html>
5642#[repr(C)]
5643#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5644pub struct DeviceCreateInfo {
5645    pub s_type: StructureType,
5646    pub next: *const c_void,
5647    pub flags: DeviceCreateFlags,
5648    pub queue_create_info_count: u32,
5649    pub queue_create_infos: *const DeviceQueueCreateInfo,
5650    pub enabled_layer_count: u32,
5651    pub enabled_layer_names: *const *const c_char,
5652    pub enabled_extension_count: u32,
5653    pub enabled_extension_names: *const *const c_char,
5654    pub enabled_features: *const PhysicalDeviceFeatures,
5655}
5656
5657impl Default for DeviceCreateInfo {
5658    #[inline]
5659    fn default() -> Self {
5660        Self {
5661            s_type: StructureType::DEVICE_CREATE_INFO,
5662            next: ptr::null(),
5663            flags: DeviceCreateFlags::default(),
5664            queue_create_info_count: u32::default(),
5665            queue_create_infos: ptr::null(),
5666            enabled_layer_count: u32::default(),
5667            enabled_layer_names: ptr::null(),
5668            enabled_extension_count: u32::default(),
5669            enabled_extension_names: ptr::null(),
5670            enabled_features: ptr::null(),
5671        }
5672    }
5673}
5674
5675unsafe impl Send for DeviceCreateInfo {}
5676unsafe impl Sync for DeviceCreateInfo {}
5677
5678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>
5679#[repr(C)]
5680#[derive(Copy, Clone)]
5681pub struct DeviceDeviceMemoryReportCreateInfoEXT {
5682    pub s_type: StructureType,
5683    pub next: *const c_void,
5684    pub flags: DeviceMemoryReportFlagsEXT,
5685    pub user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
5686    pub user_data: *mut c_void,
5687}
5688
5689impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
5690    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5691        f.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
5692            .field("s_type", &self.s_type)
5693            .field("next", &self.next)
5694            .field("flags", &self.flags)
5695            .field(
5696                "user_callback",
5697                &(self.user_callback.map(|f| f as *const u8)),
5698            )
5699            .field("user_data", &self.user_data)
5700            .finish()
5701    }
5702}
5703
5704impl Default for DeviceDeviceMemoryReportCreateInfoEXT {
5705    #[inline]
5706    fn default() -> Self {
5707        Self {
5708            s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
5709            next: ptr::null(),
5710            flags: DeviceMemoryReportFlagsEXT::default(),
5711            user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
5712            user_data: ptr::null_mut(),
5713        }
5714    }
5715}
5716
5717unsafe impl Send for DeviceDeviceMemoryReportCreateInfoEXT {}
5718unsafe impl Sync for DeviceDeviceMemoryReportCreateInfoEXT {}
5719
5720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>
5721#[repr(C)]
5722#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5723pub struct DeviceDiagnosticsConfigCreateInfoNV {
5724    pub s_type: StructureType,
5725    pub next: *const c_void,
5726    pub flags: DeviceDiagnosticsConfigFlagsNV,
5727}
5728
5729impl Default for DeviceDiagnosticsConfigCreateInfoNV {
5730    #[inline]
5731    fn default() -> Self {
5732        Self {
5733            s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
5734            next: ptr::null(),
5735            flags: DeviceDiagnosticsConfigFlagsNV::default(),
5736        }
5737    }
5738}
5739
5740unsafe impl Send for DeviceDiagnosticsConfigCreateInfoNV {}
5741unsafe impl Sync for DeviceDiagnosticsConfigCreateInfoNV {}
5742
5743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html>
5744#[repr(C)]
5745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5746pub struct DeviceEventInfoEXT {
5747    pub s_type: StructureType,
5748    pub next: *const c_void,
5749    pub device_event: DeviceEventTypeEXT,
5750}
5751
5752impl Default for DeviceEventInfoEXT {
5753    #[inline]
5754    fn default() -> Self {
5755        Self {
5756            s_type: StructureType::DEVICE_EVENT_INFO_EXT,
5757            next: ptr::null(),
5758            device_event: DeviceEventTypeEXT::default(),
5759        }
5760    }
5761}
5762
5763unsafe impl Send for DeviceEventInfoEXT {}
5764unsafe impl Sync for DeviceEventInfoEXT {}
5765
5766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoEXT.html>
5767#[repr(C)]
5768#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5769pub struct DeviceFaultAddressInfoEXT {
5770    pub address_type: DeviceFaultAddressTypeEXT,
5771    pub reported_address: DeviceAddress,
5772    pub address_precision: DeviceSize,
5773}
5774
5775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html>
5776#[repr(C)]
5777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5778pub struct DeviceFaultCountsEXT {
5779    pub s_type: StructureType,
5780    pub next: *mut c_void,
5781    pub address_info_count: u32,
5782    pub vendor_info_count: u32,
5783    pub vendor_binary_size: DeviceSize,
5784}
5785
5786impl Default for DeviceFaultCountsEXT {
5787    #[inline]
5788    fn default() -> Self {
5789        Self {
5790            s_type: StructureType::DEVICE_FAULT_COUNTS_EXT,
5791            next: ptr::null_mut(),
5792            address_info_count: u32::default(),
5793            vendor_info_count: u32::default(),
5794            vendor_binary_size: DeviceSize::default(),
5795        }
5796    }
5797}
5798
5799unsafe impl Send for DeviceFaultCountsEXT {}
5800unsafe impl Sync for DeviceFaultCountsEXT {}
5801
5802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html>
5803#[repr(C)]
5804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5805pub struct DeviceFaultInfoEXT {
5806    pub s_type: StructureType,
5807    pub next: *mut c_void,
5808    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5809    pub address_infos: *mut DeviceFaultAddressInfoEXT,
5810    pub vendor_infos: *mut DeviceFaultVendorInfoEXT,
5811    pub vendor_binary_data: *mut c_void,
5812}
5813
5814impl Default for DeviceFaultInfoEXT {
5815    #[inline]
5816    fn default() -> Self {
5817        Self {
5818            s_type: StructureType::DEVICE_FAULT_INFO_EXT,
5819            next: ptr::null_mut(),
5820            description: StringArray::default(),
5821            address_infos: ptr::null_mut(),
5822            vendor_infos: ptr::null_mut(),
5823            vendor_binary_data: ptr::null_mut(),
5824        }
5825    }
5826}
5827
5828unsafe impl Send for DeviceFaultInfoEXT {}
5829unsafe impl Sync for DeviceFaultInfoEXT {}
5830
5831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneEXT.html>
5832#[repr(C)]
5833#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5834pub struct DeviceFaultVendorBinaryHeaderVersionOneEXT {
5835    pub header_size: u32,
5836    pub header_version: DeviceFaultVendorBinaryHeaderVersionEXT,
5837    pub vendor_id: u32,
5838    pub device_id: u32,
5839    pub driver_version: u32,
5840    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
5841    pub application_name_offset: u32,
5842    pub application_version: u32,
5843    pub engine_name_offset: u32,
5844    pub engine_version: u32,
5845    pub api_version: u32,
5846}
5847
5848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoEXT.html>
5849#[repr(C)]
5850#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5851pub struct DeviceFaultVendorInfoEXT {
5852    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
5853    pub vendor_fault_code: u64,
5854    pub vendor_fault_data: u64,
5855}
5856
5857/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html>
5858#[repr(C)]
5859#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5860pub struct DeviceGroupBindSparseInfo {
5861    pub s_type: StructureType,
5862    pub next: *const c_void,
5863    pub resource_device_index: u32,
5864    pub memory_device_index: u32,
5865}
5866
5867impl Default for DeviceGroupBindSparseInfo {
5868    #[inline]
5869    fn default() -> Self {
5870        Self {
5871            s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
5872            next: ptr::null(),
5873            resource_device_index: u32::default(),
5874            memory_device_index: u32::default(),
5875        }
5876    }
5877}
5878
5879unsafe impl Send for DeviceGroupBindSparseInfo {}
5880unsafe impl Sync for DeviceGroupBindSparseInfo {}
5881
5882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html>
5883#[repr(C)]
5884#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5885pub struct DeviceGroupCommandBufferBeginInfo {
5886    pub s_type: StructureType,
5887    pub next: *const c_void,
5888    pub device_mask: u32,
5889}
5890
5891impl Default for DeviceGroupCommandBufferBeginInfo {
5892    #[inline]
5893    fn default() -> Self {
5894        Self {
5895            s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
5896            next: ptr::null(),
5897            device_mask: u32::default(),
5898        }
5899    }
5900}
5901
5902unsafe impl Send for DeviceGroupCommandBufferBeginInfo {}
5903unsafe impl Sync for DeviceGroupCommandBufferBeginInfo {}
5904
5905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html>
5906#[repr(C)]
5907#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5908pub struct DeviceGroupDeviceCreateInfo {
5909    pub s_type: StructureType,
5910    pub next: *const c_void,
5911    pub physical_device_count: u32,
5912    pub physical_devices: *const PhysicalDevice,
5913}
5914
5915impl Default for DeviceGroupDeviceCreateInfo {
5916    #[inline]
5917    fn default() -> Self {
5918        Self {
5919            s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
5920            next: ptr::null(),
5921            physical_device_count: u32::default(),
5922            physical_devices: ptr::null(),
5923        }
5924    }
5925}
5926
5927unsafe impl Send for DeviceGroupDeviceCreateInfo {}
5928unsafe impl Sync for DeviceGroupDeviceCreateInfo {}
5929
5930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>
5931#[repr(C)]
5932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5933pub struct DeviceGroupPresentCapabilitiesKHR {
5934    pub s_type: StructureType,
5935    pub next: *mut c_void,
5936    pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE],
5937    pub modes: DeviceGroupPresentModeFlagsKHR,
5938}
5939
5940impl Default for DeviceGroupPresentCapabilitiesKHR {
5941    #[inline]
5942    fn default() -> Self {
5943        Self {
5944            s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
5945            next: ptr::null_mut(),
5946            present_mask: [u32::default(); MAX_DEVICE_GROUP_SIZE],
5947            modes: DeviceGroupPresentModeFlagsKHR::default(),
5948        }
5949    }
5950}
5951
5952unsafe impl Send for DeviceGroupPresentCapabilitiesKHR {}
5953unsafe impl Sync for DeviceGroupPresentCapabilitiesKHR {}
5954
5955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html>
5956#[repr(C)]
5957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5958pub struct DeviceGroupPresentInfoKHR {
5959    pub s_type: StructureType,
5960    pub next: *const c_void,
5961    pub swapchain_count: u32,
5962    pub device_masks: *const u32,
5963    pub mode: DeviceGroupPresentModeFlagsKHR,
5964}
5965
5966impl Default for DeviceGroupPresentInfoKHR {
5967    #[inline]
5968    fn default() -> Self {
5969        Self {
5970            s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
5971            next: ptr::null(),
5972            swapchain_count: u32::default(),
5973            device_masks: ptr::null(),
5974            mode: DeviceGroupPresentModeFlagsKHR::default(),
5975        }
5976    }
5977}
5978
5979unsafe impl Send for DeviceGroupPresentInfoKHR {}
5980unsafe impl Sync for DeviceGroupPresentInfoKHR {}
5981
5982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html>
5983#[repr(C)]
5984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5985pub struct DeviceGroupRenderPassBeginInfo {
5986    pub s_type: StructureType,
5987    pub next: *const c_void,
5988    pub device_mask: u32,
5989    pub device_render_area_count: u32,
5990    pub device_render_areas: *const Rect2D,
5991}
5992
5993impl Default for DeviceGroupRenderPassBeginInfo {
5994    #[inline]
5995    fn default() -> Self {
5996        Self {
5997            s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
5998            next: ptr::null(),
5999            device_mask: u32::default(),
6000            device_render_area_count: u32::default(),
6001            device_render_areas: ptr::null(),
6002        }
6003    }
6004}
6005
6006unsafe impl Send for DeviceGroupRenderPassBeginInfo {}
6007unsafe impl Sync for DeviceGroupRenderPassBeginInfo {}
6008
6009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html>
6010#[repr(C)]
6011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6012pub struct DeviceGroupSubmitInfo {
6013    pub s_type: StructureType,
6014    pub next: *const c_void,
6015    pub wait_semaphore_count: u32,
6016    pub wait_semaphore_device_indices: *const u32,
6017    pub command_buffer_count: u32,
6018    pub command_buffer_device_masks: *const u32,
6019    pub signal_semaphore_count: u32,
6020    pub signal_semaphore_device_indices: *const u32,
6021}
6022
6023impl Default for DeviceGroupSubmitInfo {
6024    #[inline]
6025    fn default() -> Self {
6026        Self {
6027            s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
6028            next: ptr::null(),
6029            wait_semaphore_count: u32::default(),
6030            wait_semaphore_device_indices: ptr::null(),
6031            command_buffer_count: u32::default(),
6032            command_buffer_device_masks: ptr::null(),
6033            signal_semaphore_count: u32::default(),
6034            signal_semaphore_device_indices: ptr::null(),
6035        }
6036    }
6037}
6038
6039unsafe impl Send for DeviceGroupSubmitInfo {}
6040unsafe impl Sync for DeviceGroupSubmitInfo {}
6041
6042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>
6043#[repr(C)]
6044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6045pub struct DeviceGroupSwapchainCreateInfoKHR {
6046    pub s_type: StructureType,
6047    pub next: *const c_void,
6048    pub modes: DeviceGroupPresentModeFlagsKHR,
6049}
6050
6051impl Default for DeviceGroupSwapchainCreateInfoKHR {
6052    #[inline]
6053    fn default() -> Self {
6054        Self {
6055            s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
6056            next: ptr::null(),
6057            modes: DeviceGroupPresentModeFlagsKHR::default(),
6058        }
6059    }
6060}
6061
6062unsafe impl Send for DeviceGroupSwapchainCreateInfoKHR {}
6063unsafe impl Sync for DeviceGroupSwapchainCreateInfoKHR {}
6064
6065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html>
6066#[repr(C)]
6067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6068pub struct DeviceImageMemoryRequirements {
6069    pub s_type: StructureType,
6070    pub next: *const c_void,
6071    pub create_info: *const ImageCreateInfo,
6072    pub plane_aspect: ImageAspectFlags,
6073}
6074
6075impl Default for DeviceImageMemoryRequirements {
6076    #[inline]
6077    fn default() -> Self {
6078        Self {
6079            s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS,
6080            next: ptr::null(),
6081            create_info: ptr::null(),
6082            plane_aspect: ImageAspectFlags::default(),
6083        }
6084    }
6085}
6086
6087unsafe impl Send for DeviceImageMemoryRequirements {}
6088unsafe impl Sync for DeviceImageMemoryRequirements {}
6089
6090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html>
6091#[repr(C)]
6092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6093pub struct DeviceImageSubresourceInfo {
6094    pub s_type: StructureType,
6095    pub next: *const c_void,
6096    pub create_info: *const ImageCreateInfo,
6097    pub subresource: *const ImageSubresource2,
6098}
6099
6100impl Default for DeviceImageSubresourceInfo {
6101    #[inline]
6102    fn default() -> Self {
6103        Self {
6104            s_type: StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO,
6105            next: ptr::null(),
6106            create_info: ptr::null(),
6107            subresource: ptr::null(),
6108        }
6109    }
6110}
6111
6112unsafe impl Send for DeviceImageSubresourceInfo {}
6113unsafe impl Sync for DeviceImageSubresourceInfo {}
6114
6115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>
6116#[repr(C)]
6117#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6118pub struct DeviceMemoryOpaqueCaptureAddressInfo {
6119    pub s_type: StructureType,
6120    pub next: *const c_void,
6121    pub memory: DeviceMemory,
6122}
6123
6124impl Default for DeviceMemoryOpaqueCaptureAddressInfo {
6125    #[inline]
6126    fn default() -> Self {
6127        Self {
6128            s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
6129            next: ptr::null(),
6130            memory: DeviceMemory::default(),
6131        }
6132    }
6133}
6134
6135unsafe impl Send for DeviceMemoryOpaqueCaptureAddressInfo {}
6136unsafe impl Sync for DeviceMemoryOpaqueCaptureAddressInfo {}
6137
6138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>
6139#[repr(C)]
6140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6141pub struct DeviceMemoryOverallocationCreateInfoAMD {
6142    pub s_type: StructureType,
6143    pub next: *const c_void,
6144    pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
6145}
6146
6147impl Default for DeviceMemoryOverallocationCreateInfoAMD {
6148    #[inline]
6149    fn default() -> Self {
6150        Self {
6151            s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
6152            next: ptr::null(),
6153            overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
6154        }
6155    }
6156}
6157
6158unsafe impl Send for DeviceMemoryOverallocationCreateInfoAMD {}
6159unsafe impl Sync for DeviceMemoryOverallocationCreateInfoAMD {}
6160
6161/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html>
6162#[repr(C)]
6163#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6164pub struct DeviceMemoryReportCallbackDataEXT {
6165    pub s_type: StructureType,
6166    pub next: *mut c_void,
6167    pub flags: DeviceMemoryReportFlagsEXT,
6168    pub type_: DeviceMemoryReportEventTypeEXT,
6169    pub memory_object_id: u64,
6170    pub size: DeviceSize,
6171    pub object_type: ObjectType,
6172    pub object_handle: u64,
6173    pub heap_index: u32,
6174}
6175
6176impl Default for DeviceMemoryReportCallbackDataEXT {
6177    #[inline]
6178    fn default() -> Self {
6179        Self {
6180            s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
6181            next: ptr::null_mut(),
6182            flags: DeviceMemoryReportFlagsEXT::default(),
6183            type_: DeviceMemoryReportEventTypeEXT::default(),
6184            memory_object_id: u64::default(),
6185            size: DeviceSize::default(),
6186            object_type: ObjectType::default(),
6187            object_handle: u64::default(),
6188            heap_index: u32::default(),
6189        }
6190    }
6191}
6192
6193unsafe impl Send for DeviceMemoryReportCallbackDataEXT {}
6194unsafe impl Sync for DeviceMemoryReportCallbackDataEXT {}
6195
6196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html>
6197#[repr(C)]
6198#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6199pub struct DevicePipelineBinaryInternalCacheControlKHR {
6200    pub s_type: StructureType,
6201    pub next: *const c_void,
6202    pub disable_internal_cache: Bool32,
6203}
6204
6205impl Default for DevicePipelineBinaryInternalCacheControlKHR {
6206    #[inline]
6207    fn default() -> Self {
6208        Self {
6209            s_type: StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR,
6210            next: ptr::null(),
6211            disable_internal_cache: Bool32::default(),
6212        }
6213    }
6214}
6215
6216unsafe impl Send for DevicePipelineBinaryInternalCacheControlKHR {}
6217unsafe impl Sync for DevicePipelineBinaryInternalCacheControlKHR {}
6218
6219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html>
6220#[repr(C)]
6221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6222pub struct DevicePrivateDataCreateInfo {
6223    pub s_type: StructureType,
6224    pub next: *const c_void,
6225    pub private_data_slot_request_count: u32,
6226}
6227
6228impl Default for DevicePrivateDataCreateInfo {
6229    #[inline]
6230    fn default() -> Self {
6231        Self {
6232            s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO,
6233            next: ptr::null(),
6234            private_data_slot_request_count: u32::default(),
6235        }
6236    }
6237}
6238
6239unsafe impl Send for DevicePrivateDataCreateInfo {}
6240unsafe impl Sync for DevicePrivateDataCreateInfo {}
6241
6242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html>
6243#[repr(C)]
6244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6245pub struct DeviceQueueCreateInfo {
6246    pub s_type: StructureType,
6247    pub next: *const c_void,
6248    pub flags: DeviceQueueCreateFlags,
6249    pub queue_family_index: u32,
6250    pub queue_count: u32,
6251    pub queue_priorities: *const f32,
6252}
6253
6254impl Default for DeviceQueueCreateInfo {
6255    #[inline]
6256    fn default() -> Self {
6257        Self {
6258            s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
6259            next: ptr::null(),
6260            flags: DeviceQueueCreateFlags::default(),
6261            queue_family_index: u32::default(),
6262            queue_count: u32::default(),
6263            queue_priorities: ptr::null(),
6264        }
6265    }
6266}
6267
6268unsafe impl Send for DeviceQueueCreateInfo {}
6269unsafe impl Sync for DeviceQueueCreateInfo {}
6270
6271/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html>
6272#[repr(C)]
6273#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6274pub struct DeviceQueueGlobalPriorityCreateInfo {
6275    pub s_type: StructureType,
6276    pub next: *const c_void,
6277    pub global_priority: QueueGlobalPriority,
6278}
6279
6280impl Default for DeviceQueueGlobalPriorityCreateInfo {
6281    #[inline]
6282    fn default() -> Self {
6283        Self {
6284            s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,
6285            next: ptr::null(),
6286            global_priority: QueueGlobalPriority::default(),
6287        }
6288    }
6289}
6290
6291unsafe impl Send for DeviceQueueGlobalPriorityCreateInfo {}
6292unsafe impl Sync for DeviceQueueGlobalPriorityCreateInfo {}
6293
6294/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html>
6295#[repr(C)]
6296#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6297pub struct DeviceQueueInfo2 {
6298    pub s_type: StructureType,
6299    pub next: *const c_void,
6300    pub flags: DeviceQueueCreateFlags,
6301    pub queue_family_index: u32,
6302    pub queue_index: u32,
6303}
6304
6305impl Default for DeviceQueueInfo2 {
6306    #[inline]
6307    fn default() -> Self {
6308        Self {
6309            s_type: StructureType::DEVICE_QUEUE_INFO_2,
6310            next: ptr::null(),
6311            flags: DeviceQueueCreateFlags::default(),
6312            queue_family_index: u32::default(),
6313            queue_index: u32::default(),
6314        }
6315    }
6316}
6317
6318unsafe impl Send for DeviceQueueInfo2 {}
6319unsafe impl Sync for DeviceQueueInfo2 {}
6320
6321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html>
6322#[repr(C)]
6323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6324pub struct DeviceQueueShaderCoreControlCreateInfoARM {
6325    pub s_type: StructureType,
6326    pub next: *mut c_void,
6327    pub shader_core_count: u32,
6328}
6329
6330impl Default for DeviceQueueShaderCoreControlCreateInfoARM {
6331    #[inline]
6332    fn default() -> Self {
6333        Self {
6334            s_type: StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM,
6335            next: ptr::null_mut(),
6336            shader_core_count: u32::default(),
6337        }
6338    }
6339}
6340
6341unsafe impl Send for DeviceQueueShaderCoreControlCreateInfoARM {}
6342unsafe impl Sync for DeviceQueueShaderCoreControlCreateInfoARM {}
6343
6344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.html>
6345#[repr(C)]
6346#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6347pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6348    pub s_type: StructureType,
6349    pub next: *const c_void,
6350    pub semaphore_sci_sync_pool_request_count: u32,
6351}
6352
6353impl Default for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6354    #[inline]
6355    fn default() -> Self {
6356        Self {
6357            s_type: StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV,
6358            next: ptr::null(),
6359            semaphore_sci_sync_pool_request_count: u32::default(),
6360        }
6361    }
6362}
6363
6364unsafe impl Send for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6365unsafe impl Sync for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6366
6367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceTensorMemoryRequirementsARM.html>
6368#[repr(C)]
6369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6370pub struct DeviceTensorMemoryRequirementsARM {
6371    pub s_type: StructureType,
6372    pub next: *const c_void,
6373    pub create_info: *const TensorCreateInfoARM,
6374}
6375
6376impl Default for DeviceTensorMemoryRequirementsARM {
6377    #[inline]
6378    fn default() -> Self {
6379        Self {
6380            s_type: StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM,
6381            next: ptr::null(),
6382            create_info: ptr::null(),
6383        }
6384    }
6385}
6386
6387unsafe impl Send for DeviceTensorMemoryRequirementsARM {}
6388unsafe impl Sync for DeviceTensorMemoryRequirementsARM {}
6389
6390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html>
6391#[repr(C)]
6392#[derive(Copy, Clone)]
6393pub struct DirectDriverLoadingInfoLUNARG {
6394    pub s_type: StructureType,
6395    pub next: *mut c_void,
6396    pub flags: DirectDriverLoadingFlagsLUNARG,
6397    pub get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG,
6398}
6399
6400impl fmt::Debug for DirectDriverLoadingInfoLUNARG {
6401    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6402        f.debug_struct("DirectDriverLoadingInfoLUNARG")
6403            .field("s_type", &self.s_type)
6404            .field("next", &self.next)
6405            .field("flags", &self.flags)
6406            .field(
6407                "get_instance_proc_addr",
6408                &(self.get_instance_proc_addr.map(|f| f as *const u8)),
6409            )
6410            .finish()
6411    }
6412}
6413
6414impl Default for DirectDriverLoadingInfoLUNARG {
6415    #[inline]
6416    fn default() -> Self {
6417        Self {
6418            s_type: StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG,
6419            next: ptr::null_mut(),
6420            flags: DirectDriverLoadingFlagsLUNARG::default(),
6421            get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG::default(),
6422        }
6423    }
6424}
6425
6426unsafe impl Send for DirectDriverLoadingInfoLUNARG {}
6427unsafe impl Sync for DirectDriverLoadingInfoLUNARG {}
6428
6429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html>
6430#[repr(C)]
6431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6432pub struct DirectDriverLoadingListLUNARG {
6433    pub s_type: StructureType,
6434    pub next: *const c_void,
6435    pub mode: DirectDriverLoadingModeLUNARG,
6436    pub driver_count: u32,
6437    pub drivers: *const DirectDriverLoadingInfoLUNARG,
6438}
6439
6440impl Default for DirectDriverLoadingListLUNARG {
6441    #[inline]
6442    fn default() -> Self {
6443        Self {
6444            s_type: StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG,
6445            next: ptr::null(),
6446            mode: DirectDriverLoadingModeLUNARG::default(),
6447            driver_count: u32::default(),
6448            drivers: ptr::null(),
6449        }
6450    }
6451}
6452
6453unsafe impl Send for DirectDriverLoadingListLUNARG {}
6454unsafe impl Sync for DirectDriverLoadingListLUNARG {}
6455
6456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html>
6457#[repr(C)]
6458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6459pub struct DirectFBSurfaceCreateInfoEXT {
6460    pub s_type: StructureType,
6461    pub next: *const c_void,
6462    pub flags: DirectFBSurfaceCreateFlagsEXT,
6463    pub dfb: *mut IDirectFB,
6464    pub surface: *mut IDirectFBSurface,
6465}
6466
6467impl Default for DirectFBSurfaceCreateInfoEXT {
6468    #[inline]
6469    fn default() -> Self {
6470        Self {
6471            s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
6472            next: ptr::null(),
6473            flags: DirectFBSurfaceCreateFlagsEXT::default(),
6474            dfb: ptr::null_mut(),
6475            surface: ptr::null_mut(),
6476        }
6477    }
6478}
6479
6480unsafe impl Send for DirectFBSurfaceCreateInfoEXT {}
6481unsafe impl Sync for DirectFBSurfaceCreateInfoEXT {}
6482
6483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html>
6484#[repr(C)]
6485#[derive(Copy, Clone, Default, Debug)]
6486pub struct DispatchGraphCountInfoAMDX {
6487    pub count: u32,
6488    pub infos: DeviceOrHostAddressConstAMDX,
6489    pub stride: u64,
6490}
6491
6492/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html>
6493#[repr(C)]
6494#[derive(Copy, Clone, Default, Debug)]
6495pub struct DispatchGraphInfoAMDX {
6496    pub node_index: u32,
6497    pub payload_count: u32,
6498    pub payloads: DeviceOrHostAddressConstAMDX,
6499    pub payload_stride: u64,
6500}
6501
6502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html>
6503#[repr(C)]
6504#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6505pub struct DispatchIndirectCommand {
6506    pub x: u32,
6507    pub y: u32,
6508    pub z: u32,
6509}
6510
6511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchTileInfoQCOM.html>
6512#[repr(C)]
6513#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6514pub struct DispatchTileInfoQCOM {
6515    pub s_type: StructureType,
6516    pub next: *const c_void,
6517}
6518
6519impl Default for DispatchTileInfoQCOM {
6520    #[inline]
6521    fn default() -> Self {
6522        Self {
6523            s_type: StructureType::DISPATCH_TILE_INFO_QCOM,
6524            next: ptr::null(),
6525        }
6526    }
6527}
6528
6529unsafe impl Send for DispatchTileInfoQCOM {}
6530unsafe impl Sync for DispatchTileInfoQCOM {}
6531
6532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html>
6533#[repr(C)]
6534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6535pub struct DisplayEventInfoEXT {
6536    pub s_type: StructureType,
6537    pub next: *const c_void,
6538    pub display_event: DisplayEventTypeEXT,
6539}
6540
6541impl Default for DisplayEventInfoEXT {
6542    #[inline]
6543    fn default() -> Self {
6544        Self {
6545            s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
6546            next: ptr::null(),
6547            display_event: DisplayEventTypeEXT::default(),
6548        }
6549    }
6550}
6551
6552unsafe impl Send for DisplayEventInfoEXT {}
6553unsafe impl Sync for DisplayEventInfoEXT {}
6554
6555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html>
6556#[repr(C)]
6557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6558pub struct DisplayModeCreateInfoKHR {
6559    pub s_type: StructureType,
6560    pub next: *const c_void,
6561    pub flags: DisplayModeCreateFlagsKHR,
6562    pub parameters: DisplayModeParametersKHR,
6563}
6564
6565impl Default for DisplayModeCreateInfoKHR {
6566    #[inline]
6567    fn default() -> Self {
6568        Self {
6569            s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
6570            next: ptr::null(),
6571            flags: DisplayModeCreateFlagsKHR::default(),
6572            parameters: DisplayModeParametersKHR::default(),
6573        }
6574    }
6575}
6576
6577unsafe impl Send for DisplayModeCreateInfoKHR {}
6578unsafe impl Sync for DisplayModeCreateInfoKHR {}
6579
6580/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html>
6581#[repr(C)]
6582#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6583pub struct DisplayModeParametersKHR {
6584    pub visible_region: Extent2D,
6585    pub refresh_rate: u32,
6586}
6587
6588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html>
6589#[repr(C)]
6590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6591pub struct DisplayModeProperties2KHR {
6592    pub s_type: StructureType,
6593    pub next: *mut c_void,
6594    pub display_mode_properties: DisplayModePropertiesKHR,
6595}
6596
6597impl Default for DisplayModeProperties2KHR {
6598    #[inline]
6599    fn default() -> Self {
6600        Self {
6601            s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
6602            next: ptr::null_mut(),
6603            display_mode_properties: DisplayModePropertiesKHR::default(),
6604        }
6605    }
6606}
6607
6608unsafe impl Send for DisplayModeProperties2KHR {}
6609unsafe impl Sync for DisplayModeProperties2KHR {}
6610
6611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html>
6612#[repr(C)]
6613#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6614pub struct DisplayModePropertiesKHR {
6615    pub display_mode: DisplayModeKHR,
6616    pub parameters: DisplayModeParametersKHR,
6617}
6618
6619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html>
6620#[repr(C)]
6621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6622pub struct DisplayModeStereoPropertiesNV {
6623    pub s_type: StructureType,
6624    pub next: *const c_void,
6625    pub hdmi_3d_supported: Bool32,
6626}
6627
6628impl Default for DisplayModeStereoPropertiesNV {
6629    #[inline]
6630    fn default() -> Self {
6631        Self {
6632            s_type: StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV,
6633            next: ptr::null(),
6634            hdmi_3d_supported: Bool32::default(),
6635        }
6636    }
6637}
6638
6639unsafe impl Send for DisplayModeStereoPropertiesNV {}
6640unsafe impl Sync for DisplayModeStereoPropertiesNV {}
6641
6642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>
6643#[repr(C)]
6644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6645pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
6646    pub s_type: StructureType,
6647    pub next: *mut c_void,
6648    pub local_dimming_support: Bool32,
6649}
6650
6651impl Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
6652    #[inline]
6653    fn default() -> Self {
6654        Self {
6655            s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
6656            next: ptr::null_mut(),
6657            local_dimming_support: Bool32::default(),
6658        }
6659    }
6660}
6661
6662unsafe impl Send for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6663unsafe impl Sync for DisplayNativeHdrSurfaceCapabilitiesAMD {}
6664
6665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html>
6666#[repr(C)]
6667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6668pub struct DisplayPlaneCapabilities2KHR {
6669    pub s_type: StructureType,
6670    pub next: *mut c_void,
6671    pub capabilities: DisplayPlaneCapabilitiesKHR,
6672}
6673
6674impl Default for DisplayPlaneCapabilities2KHR {
6675    #[inline]
6676    fn default() -> Self {
6677        Self {
6678            s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
6679            next: ptr::null_mut(),
6680            capabilities: DisplayPlaneCapabilitiesKHR::default(),
6681        }
6682    }
6683}
6684
6685unsafe impl Send for DisplayPlaneCapabilities2KHR {}
6686unsafe impl Sync for DisplayPlaneCapabilities2KHR {}
6687
6688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html>
6689#[repr(C)]
6690#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6691pub struct DisplayPlaneCapabilitiesKHR {
6692    pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
6693    pub min_src_position: Offset2D,
6694    pub max_src_position: Offset2D,
6695    pub min_src_extent: Extent2D,
6696    pub max_src_extent: Extent2D,
6697    pub min_dst_position: Offset2D,
6698    pub max_dst_position: Offset2D,
6699    pub min_dst_extent: Extent2D,
6700    pub max_dst_extent: Extent2D,
6701}
6702
6703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html>
6704#[repr(C)]
6705#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6706pub struct DisplayPlaneInfo2KHR {
6707    pub s_type: StructureType,
6708    pub next: *const c_void,
6709    pub mode: DisplayModeKHR,
6710    pub plane_index: u32,
6711}
6712
6713impl Default for DisplayPlaneInfo2KHR {
6714    #[inline]
6715    fn default() -> Self {
6716        Self {
6717            s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
6718            next: ptr::null(),
6719            mode: DisplayModeKHR::default(),
6720            plane_index: u32::default(),
6721        }
6722    }
6723}
6724
6725unsafe impl Send for DisplayPlaneInfo2KHR {}
6726unsafe impl Sync for DisplayPlaneInfo2KHR {}
6727
6728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html>
6729#[repr(C)]
6730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6731pub struct DisplayPlaneProperties2KHR {
6732    pub s_type: StructureType,
6733    pub next: *mut c_void,
6734    pub display_plane_properties: DisplayPlanePropertiesKHR,
6735}
6736
6737impl Default for DisplayPlaneProperties2KHR {
6738    #[inline]
6739    fn default() -> Self {
6740        Self {
6741            s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
6742            next: ptr::null_mut(),
6743            display_plane_properties: DisplayPlanePropertiesKHR::default(),
6744        }
6745    }
6746}
6747
6748unsafe impl Send for DisplayPlaneProperties2KHR {}
6749unsafe impl Sync for DisplayPlaneProperties2KHR {}
6750
6751/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html>
6752#[repr(C)]
6753#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6754pub struct DisplayPlanePropertiesKHR {
6755    pub current_display: DisplayKHR,
6756    pub current_stack_index: u32,
6757}
6758
6759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html>
6760#[repr(C)]
6761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6762pub struct DisplayPowerInfoEXT {
6763    pub s_type: StructureType,
6764    pub next: *const c_void,
6765    pub power_state: DisplayPowerStateEXT,
6766}
6767
6768impl Default for DisplayPowerInfoEXT {
6769    #[inline]
6770    fn default() -> Self {
6771        Self {
6772            s_type: StructureType::DISPLAY_POWER_INFO_EXT,
6773            next: ptr::null(),
6774            power_state: DisplayPowerStateEXT::default(),
6775        }
6776    }
6777}
6778
6779unsafe impl Send for DisplayPowerInfoEXT {}
6780unsafe impl Sync for DisplayPowerInfoEXT {}
6781
6782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html>
6783#[repr(C)]
6784#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6785pub struct DisplayPresentInfoKHR {
6786    pub s_type: StructureType,
6787    pub next: *const c_void,
6788    pub src_rect: Rect2D,
6789    pub dst_rect: Rect2D,
6790    pub persistent: Bool32,
6791}
6792
6793impl Default for DisplayPresentInfoKHR {
6794    #[inline]
6795    fn default() -> Self {
6796        Self {
6797            s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
6798            next: ptr::null(),
6799            src_rect: Rect2D::default(),
6800            dst_rect: Rect2D::default(),
6801            persistent: Bool32::default(),
6802        }
6803    }
6804}
6805
6806unsafe impl Send for DisplayPresentInfoKHR {}
6807unsafe impl Sync for DisplayPresentInfoKHR {}
6808
6809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html>
6810#[repr(C)]
6811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6812pub struct DisplayProperties2KHR {
6813    pub s_type: StructureType,
6814    pub next: *mut c_void,
6815    pub display_properties: DisplayPropertiesKHR,
6816}
6817
6818impl Default for DisplayProperties2KHR {
6819    #[inline]
6820    fn default() -> Self {
6821        Self {
6822            s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
6823            next: ptr::null_mut(),
6824            display_properties: DisplayPropertiesKHR::default(),
6825        }
6826    }
6827}
6828
6829unsafe impl Send for DisplayProperties2KHR {}
6830unsafe impl Sync for DisplayProperties2KHR {}
6831
6832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html>
6833#[repr(C)]
6834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6835pub struct DisplayPropertiesKHR {
6836    pub display: DisplayKHR,
6837    pub display_name: *const c_char,
6838    pub physical_dimensions: Extent2D,
6839    pub physical_resolution: Extent2D,
6840    pub supported_transforms: SurfaceTransformFlagsKHR,
6841    pub plane_reorder_possible: Bool32,
6842    pub persistent_content: Bool32,
6843}
6844
6845impl Default for DisplayPropertiesKHR {
6846    #[inline]
6847    fn default() -> Self {
6848        Self {
6849            display: DisplayKHR::default(),
6850            display_name: ptr::null(),
6851            physical_dimensions: Extent2D::default(),
6852            physical_resolution: Extent2D::default(),
6853            supported_transforms: SurfaceTransformFlagsKHR::default(),
6854            plane_reorder_possible: Bool32::default(),
6855            persistent_content: Bool32::default(),
6856        }
6857    }
6858}
6859
6860unsafe impl Send for DisplayPropertiesKHR {}
6861unsafe impl Sync for DisplayPropertiesKHR {}
6862
6863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html>
6864#[repr(C)]
6865#[derive(Copy, Clone, Debug, PartialEq)]
6866pub struct DisplaySurfaceCreateInfoKHR {
6867    pub s_type: StructureType,
6868    pub next: *const c_void,
6869    pub flags: DisplaySurfaceCreateFlagsKHR,
6870    pub display_mode: DisplayModeKHR,
6871    pub plane_index: u32,
6872    pub plane_stack_index: u32,
6873    pub transform: SurfaceTransformFlagsKHR,
6874    pub global_alpha: f32,
6875    pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
6876    pub image_extent: Extent2D,
6877}
6878
6879impl Default for DisplaySurfaceCreateInfoKHR {
6880    #[inline]
6881    fn default() -> Self {
6882        Self {
6883            s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
6884            next: ptr::null(),
6885            flags: DisplaySurfaceCreateFlagsKHR::default(),
6886            display_mode: DisplayModeKHR::default(),
6887            plane_index: u32::default(),
6888            plane_stack_index: u32::default(),
6889            transform: SurfaceTransformFlagsKHR::default(),
6890            global_alpha: f32::default(),
6891            alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
6892            image_extent: Extent2D::default(),
6893        }
6894    }
6895}
6896
6897unsafe impl Send for DisplaySurfaceCreateInfoKHR {}
6898unsafe impl Sync for DisplaySurfaceCreateInfoKHR {}
6899
6900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html>
6901#[repr(C)]
6902#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6903pub struct DisplaySurfaceStereoCreateInfoNV {
6904    pub s_type: StructureType,
6905    pub next: *const c_void,
6906    pub stereo_type: DisplaySurfaceStereoTypeNV,
6907}
6908
6909impl Default for DisplaySurfaceStereoCreateInfoNV {
6910    #[inline]
6911    fn default() -> Self {
6912        Self {
6913            s_type: StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV,
6914            next: ptr::null(),
6915            stereo_type: DisplaySurfaceStereoTypeNV::default(),
6916        }
6917    }
6918}
6919
6920unsafe impl Send for DisplaySurfaceStereoCreateInfoNV {}
6921unsafe impl Sync for DisplaySurfaceStereoCreateInfoNV {}
6922
6923/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html>
6924#[repr(C)]
6925#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6926pub struct DrawIndexedIndirectCommand {
6927    pub index_count: u32,
6928    pub instance_count: u32,
6929    pub first_index: u32,
6930    pub vertex_offset: i32,
6931    pub first_instance: u32,
6932}
6933
6934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html>
6935#[repr(C)]
6936#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6937pub struct DrawIndirectCommand {
6938    pub vertex_count: u32,
6939    pub instance_count: u32,
6940    pub first_vertex: u32,
6941    pub first_instance: u32,
6942}
6943
6944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html>
6945#[repr(C)]
6946#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6947pub struct DrawIndirectCountIndirectCommandEXT {
6948    pub buffer_address: DeviceAddress,
6949    pub stride: u32,
6950    pub command_count: u32,
6951}
6952
6953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html>
6954#[repr(C)]
6955#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6956pub struct DrawMeshTasksIndirectCommandEXT {
6957    pub group_count_x: u32,
6958    pub group_count_y: u32,
6959    pub group_count_z: u32,
6960}
6961
6962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html>
6963#[repr(C)]
6964#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6965pub struct DrawMeshTasksIndirectCommandNV {
6966    pub task_count: u32,
6967    pub first_task: u32,
6968}
6969
6970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html>
6971#[repr(C)]
6972#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6973pub struct DrmFormatModifierProperties2EXT {
6974    pub drm_format_modifier: u64,
6975    pub drm_format_modifier_plane_count: u32,
6976    pub drm_format_modifier_tiling_features: FormatFeatureFlags2,
6977}
6978
6979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html>
6980#[repr(C)]
6981#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6982pub struct DrmFormatModifierPropertiesEXT {
6983    pub drm_format_modifier: u64,
6984    pub drm_format_modifier_plane_count: u32,
6985    pub drm_format_modifier_tiling_features: FormatFeatureFlags,
6986}
6987
6988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html>
6989#[repr(C)]
6990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6991pub struct DrmFormatModifierPropertiesList2EXT {
6992    pub s_type: StructureType,
6993    pub next: *mut c_void,
6994    pub drm_format_modifier_count: u32,
6995    pub drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
6996}
6997
6998impl Default for DrmFormatModifierPropertiesList2EXT {
6999    #[inline]
7000    fn default() -> Self {
7001        Self {
7002            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
7003            next: ptr::null_mut(),
7004            drm_format_modifier_count: u32::default(),
7005            drm_format_modifier_properties: ptr::null_mut(),
7006        }
7007    }
7008}
7009
7010unsafe impl Send for DrmFormatModifierPropertiesList2EXT {}
7011unsafe impl Sync for DrmFormatModifierPropertiesList2EXT {}
7012
7013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html>
7014#[repr(C)]
7015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7016pub struct DrmFormatModifierPropertiesListEXT {
7017    pub s_type: StructureType,
7018    pub next: *mut c_void,
7019    pub drm_format_modifier_count: u32,
7020    pub drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
7021}
7022
7023impl Default for DrmFormatModifierPropertiesListEXT {
7024    #[inline]
7025    fn default() -> Self {
7026        Self {
7027            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
7028            next: ptr::null_mut(),
7029            drm_format_modifier_count: u32::default(),
7030            drm_format_modifier_properties: ptr::null_mut(),
7031        }
7032    }
7033}
7034
7035unsafe impl Send for DrmFormatModifierPropertiesListEXT {}
7036unsafe impl Sync for DrmFormatModifierPropertiesListEXT {}
7037
7038/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateInfo.html>
7039#[repr(C)]
7040#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7041pub struct EventCreateInfo {
7042    pub s_type: StructureType,
7043    pub next: *const c_void,
7044    pub flags: EventCreateFlags,
7045}
7046
7047impl Default for EventCreateInfo {
7048    #[inline]
7049    fn default() -> Self {
7050        Self {
7051            s_type: StructureType::EVENT_CREATE_INFO,
7052            next: ptr::null(),
7053            flags: EventCreateFlags::default(),
7054        }
7055    }
7056}
7057
7058unsafe impl Send for EventCreateInfo {}
7059unsafe impl Sync for EventCreateInfo {}
7060
7061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html>
7062#[repr(C)]
7063#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7064pub struct ExecutionGraphPipelineCreateInfoAMDX {
7065    pub s_type: StructureType,
7066    pub next: *const c_void,
7067    pub flags: PipelineCreateFlags,
7068    pub stage_count: u32,
7069    pub stages: *const PipelineShaderStageCreateInfo,
7070    pub library_info: *const PipelineLibraryCreateInfoKHR,
7071    pub layout: PipelineLayout,
7072    pub base_pipeline_handle: Pipeline,
7073    pub base_pipeline_index: i32,
7074}
7075
7076impl Default for ExecutionGraphPipelineCreateInfoAMDX {
7077    #[inline]
7078    fn default() -> Self {
7079        Self {
7080            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX,
7081            next: ptr::null(),
7082            flags: PipelineCreateFlags::default(),
7083            stage_count: u32::default(),
7084            stages: ptr::null(),
7085            library_info: ptr::null(),
7086            layout: PipelineLayout::default(),
7087            base_pipeline_handle: Pipeline::default(),
7088            base_pipeline_index: i32::default(),
7089        }
7090    }
7091}
7092
7093unsafe impl Send for ExecutionGraphPipelineCreateInfoAMDX {}
7094unsafe impl Sync for ExecutionGraphPipelineCreateInfoAMDX {}
7095
7096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html>
7097#[repr(C)]
7098#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7099pub struct ExecutionGraphPipelineScratchSizeAMDX {
7100    pub s_type: StructureType,
7101    pub next: *mut c_void,
7102    pub min_size: DeviceSize,
7103    pub max_size: DeviceSize,
7104    pub size_granularity: DeviceSize,
7105}
7106
7107impl Default for ExecutionGraphPipelineScratchSizeAMDX {
7108    #[inline]
7109    fn default() -> Self {
7110        Self {
7111            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX,
7112            next: ptr::null_mut(),
7113            min_size: DeviceSize::default(),
7114            max_size: DeviceSize::default(),
7115            size_granularity: DeviceSize::default(),
7116        }
7117    }
7118}
7119
7120unsafe impl Send for ExecutionGraphPipelineScratchSizeAMDX {}
7121unsafe impl Sync for ExecutionGraphPipelineScratchSizeAMDX {}
7122
7123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html>
7124#[repr(C)]
7125#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7126pub struct ExportFenceCreateInfo {
7127    pub s_type: StructureType,
7128    pub next: *const c_void,
7129    pub handle_types: ExternalFenceHandleTypeFlags,
7130}
7131
7132impl Default for ExportFenceCreateInfo {
7133    #[inline]
7134    fn default() -> Self {
7135        Self {
7136            s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
7137            next: ptr::null(),
7138            handle_types: ExternalFenceHandleTypeFlags::default(),
7139        }
7140    }
7141}
7142
7143unsafe impl Send for ExportFenceCreateInfo {}
7144unsafe impl Sync for ExportFenceCreateInfo {}
7145
7146/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceSciSyncInfoNV.html>
7147#[repr(C)]
7148#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7149pub struct ExportFenceSciSyncInfoNV {
7150    pub s_type: StructureType,
7151    pub next: *const c_void,
7152    pub attributes: NvSciSyncAttrList,
7153}
7154
7155impl Default for ExportFenceSciSyncInfoNV {
7156    #[inline]
7157    fn default() -> Self {
7158        Self {
7159            s_type: StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV,
7160            next: ptr::null(),
7161            attributes: ptr::null_mut(),
7162        }
7163    }
7164}
7165
7166unsafe impl Send for ExportFenceSciSyncInfoNV {}
7167unsafe impl Sync for ExportFenceSciSyncInfoNV {}
7168
7169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html>
7170#[repr(C)]
7171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7172pub struct ExportFenceWin32HandleInfoKHR {
7173    pub s_type: StructureType,
7174    pub next: *const c_void,
7175    pub attributes: *const SECURITY_ATTRIBUTES,
7176    pub dw_access: DWORD,
7177    pub name: LPCWSTR,
7178}
7179
7180impl Default for ExportFenceWin32HandleInfoKHR {
7181    #[inline]
7182    fn default() -> Self {
7183        Self {
7184            s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
7185            next: ptr::null(),
7186            attributes: ptr::null(),
7187            dw_access: DWORD::default(),
7188            name: ptr::null_mut(),
7189        }
7190    }
7191}
7192
7193unsafe impl Send for ExportFenceWin32HandleInfoKHR {}
7194unsafe impl Sync for ExportFenceWin32HandleInfoKHR {}
7195
7196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html>
7197#[repr(C)]
7198#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7199pub struct ExportMemoryAllocateInfo {
7200    pub s_type: StructureType,
7201    pub next: *const c_void,
7202    pub handle_types: ExternalMemoryHandleTypeFlags,
7203}
7204
7205impl Default for ExportMemoryAllocateInfo {
7206    #[inline]
7207    fn default() -> Self {
7208        Self {
7209            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
7210            next: ptr::null(),
7211            handle_types: ExternalMemoryHandleTypeFlags::default(),
7212        }
7213    }
7214}
7215
7216unsafe impl Send for ExportMemoryAllocateInfo {}
7217unsafe impl Sync for ExportMemoryAllocateInfo {}
7218
7219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html>
7220#[repr(C)]
7221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7222pub struct ExportMemoryAllocateInfoNV {
7223    pub s_type: StructureType,
7224    pub next: *const c_void,
7225    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7226}
7227
7228impl Default for ExportMemoryAllocateInfoNV {
7229    #[inline]
7230    fn default() -> Self {
7231        Self {
7232            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
7233            next: ptr::null(),
7234            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7235        }
7236    }
7237}
7238
7239unsafe impl Send for ExportMemoryAllocateInfoNV {}
7240unsafe impl Sync for ExportMemoryAllocateInfoNV {}
7241
7242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemorySciBufInfoNV.html>
7243#[repr(C)]
7244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7245pub struct ExportMemorySciBufInfoNV {
7246    pub s_type: StructureType,
7247    pub next: *const c_void,
7248    pub attributes: NvSciBufAttrList,
7249}
7250
7251impl Default for ExportMemorySciBufInfoNV {
7252    #[inline]
7253    fn default() -> Self {
7254        Self {
7255            s_type: StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV,
7256            next: ptr::null(),
7257            attributes: ptr::null_mut(),
7258        }
7259    }
7260}
7261
7262unsafe impl Send for ExportMemorySciBufInfoNV {}
7263unsafe impl Sync for ExportMemorySciBufInfoNV {}
7264
7265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html>
7266#[repr(C)]
7267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7268pub struct ExportMemoryWin32HandleInfoKHR {
7269    pub s_type: StructureType,
7270    pub next: *const c_void,
7271    pub attributes: *const SECURITY_ATTRIBUTES,
7272    pub dw_access: DWORD,
7273    pub name: LPCWSTR,
7274}
7275
7276impl Default for ExportMemoryWin32HandleInfoKHR {
7277    #[inline]
7278    fn default() -> Self {
7279        Self {
7280            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
7281            next: ptr::null(),
7282            attributes: ptr::null(),
7283            dw_access: DWORD::default(),
7284            name: ptr::null_mut(),
7285        }
7286    }
7287}
7288
7289unsafe impl Send for ExportMemoryWin32HandleInfoKHR {}
7290unsafe impl Sync for ExportMemoryWin32HandleInfoKHR {}
7291
7292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html>
7293#[repr(C)]
7294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7295pub struct ExportMemoryWin32HandleInfoNV {
7296    pub s_type: StructureType,
7297    pub next: *const c_void,
7298    pub attributes: *const SECURITY_ATTRIBUTES,
7299    pub dw_access: DWORD,
7300}
7301
7302impl Default for ExportMemoryWin32HandleInfoNV {
7303    #[inline]
7304    fn default() -> Self {
7305        Self {
7306            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
7307            next: ptr::null(),
7308            attributes: ptr::null(),
7309            dw_access: DWORD::default(),
7310        }
7311    }
7312}
7313
7314unsafe impl Send for ExportMemoryWin32HandleInfoNV {}
7315unsafe impl Sync for ExportMemoryWin32HandleInfoNV {}
7316
7317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html>
7318#[repr(C)]
7319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7320pub struct ExportMetalBufferInfoEXT {
7321    pub s_type: StructureType,
7322    pub next: *const c_void,
7323    pub memory: DeviceMemory,
7324    pub mtl_buffer: MTLBuffer_id,
7325}
7326
7327impl Default for ExportMetalBufferInfoEXT {
7328    #[inline]
7329    fn default() -> Self {
7330        Self {
7331            s_type: StructureType::EXPORT_METAL_BUFFER_INFO_EXT,
7332            next: ptr::null(),
7333            memory: DeviceMemory::default(),
7334            mtl_buffer: ptr::null_mut(),
7335        }
7336    }
7337}
7338
7339unsafe impl Send for ExportMetalBufferInfoEXT {}
7340unsafe impl Sync for ExportMetalBufferInfoEXT {}
7341
7342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html>
7343#[repr(C)]
7344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7345pub struct ExportMetalCommandQueueInfoEXT {
7346    pub s_type: StructureType,
7347    pub next: *const c_void,
7348    pub queue: Queue,
7349    pub mtl_command_queue: MTLCommandQueue_id,
7350}
7351
7352impl Default for ExportMetalCommandQueueInfoEXT {
7353    #[inline]
7354    fn default() -> Self {
7355        Self {
7356            s_type: StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT,
7357            next: ptr::null(),
7358            queue: Queue::default(),
7359            mtl_command_queue: ptr::null_mut(),
7360        }
7361    }
7362}
7363
7364unsafe impl Send for ExportMetalCommandQueueInfoEXT {}
7365unsafe impl Sync for ExportMetalCommandQueueInfoEXT {}
7366
7367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html>
7368#[repr(C)]
7369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7370pub struct ExportMetalDeviceInfoEXT {
7371    pub s_type: StructureType,
7372    pub next: *const c_void,
7373    pub mtl_device: MTLDevice_id,
7374}
7375
7376impl Default for ExportMetalDeviceInfoEXT {
7377    #[inline]
7378    fn default() -> Self {
7379        Self {
7380            s_type: StructureType::EXPORT_METAL_DEVICE_INFO_EXT,
7381            next: ptr::null(),
7382            mtl_device: ptr::null_mut(),
7383        }
7384    }
7385}
7386
7387unsafe impl Send for ExportMetalDeviceInfoEXT {}
7388unsafe impl Sync for ExportMetalDeviceInfoEXT {}
7389
7390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html>
7391#[repr(C)]
7392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7393pub struct ExportMetalIOSurfaceInfoEXT {
7394    pub s_type: StructureType,
7395    pub next: *const c_void,
7396    pub image: Image,
7397    pub io_surface: IOSurfaceRef,
7398}
7399
7400impl Default for ExportMetalIOSurfaceInfoEXT {
7401    #[inline]
7402    fn default() -> Self {
7403        Self {
7404            s_type: StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT,
7405            next: ptr::null(),
7406            image: Image::default(),
7407            io_surface: ptr::null_mut(),
7408        }
7409    }
7410}
7411
7412unsafe impl Send for ExportMetalIOSurfaceInfoEXT {}
7413unsafe impl Sync for ExportMetalIOSurfaceInfoEXT {}
7414
7415/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html>
7416#[repr(C)]
7417#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7418pub struct ExportMetalObjectCreateInfoEXT {
7419    pub s_type: StructureType,
7420    pub next: *const c_void,
7421    pub export_object_type: ExportMetalObjectTypeFlagsEXT,
7422}
7423
7424impl Default for ExportMetalObjectCreateInfoEXT {
7425    #[inline]
7426    fn default() -> Self {
7427        Self {
7428            s_type: StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
7429            next: ptr::null(),
7430            export_object_type: ExportMetalObjectTypeFlagsEXT::default(),
7431        }
7432    }
7433}
7434
7435unsafe impl Send for ExportMetalObjectCreateInfoEXT {}
7436unsafe impl Sync for ExportMetalObjectCreateInfoEXT {}
7437
7438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html>
7439#[repr(C)]
7440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7441pub struct ExportMetalObjectsInfoEXT {
7442    pub s_type: StructureType,
7443    pub next: *const c_void,
7444}
7445
7446impl Default for ExportMetalObjectsInfoEXT {
7447    #[inline]
7448    fn default() -> Self {
7449        Self {
7450            s_type: StructureType::EXPORT_METAL_OBJECTS_INFO_EXT,
7451            next: ptr::null(),
7452        }
7453    }
7454}
7455
7456unsafe impl Send for ExportMetalObjectsInfoEXT {}
7457unsafe impl Sync for ExportMetalObjectsInfoEXT {}
7458
7459/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html>
7460#[repr(C)]
7461#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7462pub struct ExportMetalSharedEventInfoEXT {
7463    pub s_type: StructureType,
7464    pub next: *const c_void,
7465    pub semaphore: Semaphore,
7466    pub event: Event,
7467    pub mtl_shared_event: MTLSharedEvent_id,
7468}
7469
7470impl Default for ExportMetalSharedEventInfoEXT {
7471    #[inline]
7472    fn default() -> Self {
7473        Self {
7474            s_type: StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT,
7475            next: ptr::null(),
7476            semaphore: Semaphore::default(),
7477            event: Event::default(),
7478            mtl_shared_event: ptr::null_mut(),
7479        }
7480    }
7481}
7482
7483unsafe impl Send for ExportMetalSharedEventInfoEXT {}
7484unsafe impl Sync for ExportMetalSharedEventInfoEXT {}
7485
7486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html>
7487#[repr(C)]
7488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7489pub struct ExportMetalTextureInfoEXT {
7490    pub s_type: StructureType,
7491    pub next: *const c_void,
7492    pub image: Image,
7493    pub image_view: ImageView,
7494    pub buffer_view: BufferView,
7495    pub plane: ImageAspectFlags,
7496    pub mtl_texture: MTLTexture_id,
7497}
7498
7499impl Default for ExportMetalTextureInfoEXT {
7500    #[inline]
7501    fn default() -> Self {
7502        Self {
7503            s_type: StructureType::EXPORT_METAL_TEXTURE_INFO_EXT,
7504            next: ptr::null(),
7505            image: Image::default(),
7506            image_view: ImageView::default(),
7507            buffer_view: BufferView::default(),
7508            plane: ImageAspectFlags::default(),
7509            mtl_texture: ptr::null_mut(),
7510        }
7511    }
7512}
7513
7514unsafe impl Send for ExportMetalTextureInfoEXT {}
7515unsafe impl Sync for ExportMetalTextureInfoEXT {}
7516
7517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html>
7518#[repr(C)]
7519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7520pub struct ExportSemaphoreCreateInfo {
7521    pub s_type: StructureType,
7522    pub next: *const c_void,
7523    pub handle_types: ExternalSemaphoreHandleTypeFlags,
7524}
7525
7526impl Default for ExportSemaphoreCreateInfo {
7527    #[inline]
7528    fn default() -> Self {
7529        Self {
7530            s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
7531            next: ptr::null(),
7532            handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7533        }
7534    }
7535}
7536
7537unsafe impl Send for ExportSemaphoreCreateInfo {}
7538unsafe impl Sync for ExportSemaphoreCreateInfo {}
7539
7540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreSciSyncInfoNV.html>
7541#[repr(C)]
7542#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7543pub struct ExportSemaphoreSciSyncInfoNV {
7544    pub s_type: StructureType,
7545    pub next: *const c_void,
7546    pub attributes: NvSciSyncAttrList,
7547}
7548
7549impl Default for ExportSemaphoreSciSyncInfoNV {
7550    #[inline]
7551    fn default() -> Self {
7552        Self {
7553            s_type: StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
7554            next: ptr::null(),
7555            attributes: ptr::null_mut(),
7556        }
7557    }
7558}
7559
7560unsafe impl Send for ExportSemaphoreSciSyncInfoNV {}
7561unsafe impl Sync for ExportSemaphoreSciSyncInfoNV {}
7562
7563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>
7564#[repr(C)]
7565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7566pub struct ExportSemaphoreWin32HandleInfoKHR {
7567    pub s_type: StructureType,
7568    pub next: *const c_void,
7569    pub attributes: *const SECURITY_ATTRIBUTES,
7570    pub dw_access: DWORD,
7571    pub name: LPCWSTR,
7572}
7573
7574impl Default for ExportSemaphoreWin32HandleInfoKHR {
7575    #[inline]
7576    fn default() -> Self {
7577        Self {
7578            s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
7579            next: ptr::null(),
7580            attributes: ptr::null(),
7581            dw_access: DWORD::default(),
7582            name: ptr::null_mut(),
7583        }
7584    }
7585}
7586
7587unsafe impl Send for ExportSemaphoreWin32HandleInfoKHR {}
7588unsafe impl Sync for ExportSemaphoreWin32HandleInfoKHR {}
7589
7590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtensionProperties.html>
7591#[repr(C)]
7592#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7593pub struct ExtensionProperties {
7594    pub extension_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
7595    pub spec_version: u32,
7596}
7597
7598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent2D.html>
7599#[repr(C)]
7600#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7601pub struct Extent2D {
7602    pub width: u32,
7603    pub height: u32,
7604}
7605
7606/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent3D.html>
7607#[repr(C)]
7608#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7609pub struct Extent3D {
7610    pub width: u32,
7611    pub height: u32,
7612    pub depth: u32,
7613}
7614
7615/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferProperties.html>
7616#[repr(C)]
7617#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7618pub struct ExternalBufferProperties {
7619    pub s_type: StructureType,
7620    pub next: *mut c_void,
7621    pub external_memory_properties: ExternalMemoryProperties,
7622}
7623
7624impl Default for ExternalBufferProperties {
7625    #[inline]
7626    fn default() -> Self {
7627        Self {
7628            s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
7629            next: ptr::null_mut(),
7630            external_memory_properties: ExternalMemoryProperties::default(),
7631        }
7632    }
7633}
7634
7635unsafe impl Send for ExternalBufferProperties {}
7636unsafe impl Sync for ExternalBufferProperties {}
7637
7638/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueCreateInfoNV.html>
7639#[repr(C)]
7640#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7641pub struct ExternalComputeQueueCreateInfoNV {
7642    pub s_type: StructureType,
7643    pub next: *const c_void,
7644    pub preferred_queue: Queue,
7645}
7646
7647impl Default for ExternalComputeQueueCreateInfoNV {
7648    #[inline]
7649    fn default() -> Self {
7650        Self {
7651            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV,
7652            next: ptr::null(),
7653            preferred_queue: Queue::default(),
7654        }
7655    }
7656}
7657
7658unsafe impl Send for ExternalComputeQueueCreateInfoNV {}
7659unsafe impl Sync for ExternalComputeQueueCreateInfoNV {}
7660
7661/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDataParamsNV.html>
7662#[repr(C)]
7663#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7664pub struct ExternalComputeQueueDataParamsNV {
7665    pub s_type: StructureType,
7666    pub next: *const c_void,
7667    pub device_index: u32,
7668}
7669
7670impl Default for ExternalComputeQueueDataParamsNV {
7671    #[inline]
7672    fn default() -> Self {
7673        Self {
7674            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV,
7675            next: ptr::null(),
7676            device_index: u32::default(),
7677        }
7678    }
7679}
7680
7681unsafe impl Send for ExternalComputeQueueDataParamsNV {}
7682unsafe impl Sync for ExternalComputeQueueDataParamsNV {}
7683
7684/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDeviceCreateInfoNV.html>
7685#[repr(C)]
7686#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7687pub struct ExternalComputeQueueDeviceCreateInfoNV {
7688    pub s_type: StructureType,
7689    pub next: *const c_void,
7690    pub reserved_external_queues: u32,
7691}
7692
7693impl Default for ExternalComputeQueueDeviceCreateInfoNV {
7694    #[inline]
7695    fn default() -> Self {
7696        Self {
7697            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV,
7698            next: ptr::null(),
7699            reserved_external_queues: u32::default(),
7700        }
7701    }
7702}
7703
7704unsafe impl Send for ExternalComputeQueueDeviceCreateInfoNV {}
7705unsafe impl Sync for ExternalComputeQueueDeviceCreateInfoNV {}
7706
7707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceProperties.html>
7708#[repr(C)]
7709#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7710pub struct ExternalFenceProperties {
7711    pub s_type: StructureType,
7712    pub next: *mut c_void,
7713    pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
7714    pub compatible_handle_types: ExternalFenceHandleTypeFlags,
7715    pub external_fence_features: ExternalFenceFeatureFlags,
7716}
7717
7718impl Default for ExternalFenceProperties {
7719    #[inline]
7720    fn default() -> Self {
7721        Self {
7722            s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
7723            next: ptr::null_mut(),
7724            export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
7725            compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
7726            external_fence_features: ExternalFenceFeatureFlags::default(),
7727        }
7728    }
7729}
7730
7731unsafe impl Send for ExternalFenceProperties {}
7732unsafe impl Sync for ExternalFenceProperties {}
7733
7734/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html>
7735#[repr(C)]
7736#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7737pub struct ExternalFormatANDROID {
7738    pub s_type: StructureType,
7739    pub next: *mut c_void,
7740    pub external_format: u64,
7741}
7742
7743impl Default for ExternalFormatANDROID {
7744    #[inline]
7745    fn default() -> Self {
7746        Self {
7747            s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
7748            next: ptr::null_mut(),
7749            external_format: u64::default(),
7750        }
7751    }
7752}
7753
7754unsafe impl Send for ExternalFormatANDROID {}
7755unsafe impl Sync for ExternalFormatANDROID {}
7756
7757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatQNX.html>
7758#[repr(C)]
7759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7760pub struct ExternalFormatQNX {
7761    pub s_type: StructureType,
7762    pub next: *mut c_void,
7763    pub external_format: u64,
7764}
7765
7766impl Default for ExternalFormatQNX {
7767    #[inline]
7768    fn default() -> Self {
7769        Self {
7770            s_type: StructureType::EXTERNAL_FORMAT_QNX,
7771            next: ptr::null_mut(),
7772            external_format: u64::default(),
7773        }
7774    }
7775}
7776
7777unsafe impl Send for ExternalFormatQNX {}
7778unsafe impl Sync for ExternalFormatQNX {}
7779
7780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html>
7781#[repr(C)]
7782#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7783pub struct ExternalImageFormatProperties {
7784    pub s_type: StructureType,
7785    pub next: *mut c_void,
7786    pub external_memory_properties: ExternalMemoryProperties,
7787}
7788
7789impl Default for ExternalImageFormatProperties {
7790    #[inline]
7791    fn default() -> Self {
7792        Self {
7793            s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
7794            next: ptr::null_mut(),
7795            external_memory_properties: ExternalMemoryProperties::default(),
7796        }
7797    }
7798}
7799
7800unsafe impl Send for ExternalImageFormatProperties {}
7801unsafe impl Sync for ExternalImageFormatProperties {}
7802
7803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html>
7804#[repr(C)]
7805#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7806pub struct ExternalImageFormatPropertiesNV {
7807    pub image_format_properties: ImageFormatProperties,
7808    pub external_memory_features: ExternalMemoryFeatureFlagsNV,
7809    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
7810    pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
7811}
7812
7813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html>
7814#[repr(C)]
7815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7816pub struct ExternalMemoryAcquireUnmodifiedEXT {
7817    pub s_type: StructureType,
7818    pub next: *const c_void,
7819    pub acquire_unmodified_memory: Bool32,
7820}
7821
7822impl Default for ExternalMemoryAcquireUnmodifiedEXT {
7823    #[inline]
7824    fn default() -> Self {
7825        Self {
7826            s_type: StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT,
7827            next: ptr::null(),
7828            acquire_unmodified_memory: Bool32::default(),
7829        }
7830    }
7831}
7832
7833unsafe impl Send for ExternalMemoryAcquireUnmodifiedEXT {}
7834unsafe impl Sync for ExternalMemoryAcquireUnmodifiedEXT {}
7835
7836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html>
7837#[repr(C)]
7838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7839pub struct ExternalMemoryBufferCreateInfo {
7840    pub s_type: StructureType,
7841    pub next: *const c_void,
7842    pub handle_types: ExternalMemoryHandleTypeFlags,
7843}
7844
7845impl Default for ExternalMemoryBufferCreateInfo {
7846    #[inline]
7847    fn default() -> Self {
7848        Self {
7849            s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
7850            next: ptr::null(),
7851            handle_types: ExternalMemoryHandleTypeFlags::default(),
7852        }
7853    }
7854}
7855
7856unsafe impl Send for ExternalMemoryBufferCreateInfo {}
7857unsafe impl Sync for ExternalMemoryBufferCreateInfo {}
7858
7859/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html>
7860#[repr(C)]
7861#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7862pub struct ExternalMemoryImageCreateInfo {
7863    pub s_type: StructureType,
7864    pub next: *const c_void,
7865    pub handle_types: ExternalMemoryHandleTypeFlags,
7866}
7867
7868impl Default for ExternalMemoryImageCreateInfo {
7869    #[inline]
7870    fn default() -> Self {
7871        Self {
7872            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
7873            next: ptr::null(),
7874            handle_types: ExternalMemoryHandleTypeFlags::default(),
7875        }
7876    }
7877}
7878
7879unsafe impl Send for ExternalMemoryImageCreateInfo {}
7880unsafe impl Sync for ExternalMemoryImageCreateInfo {}
7881
7882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html>
7883#[repr(C)]
7884#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7885pub struct ExternalMemoryImageCreateInfoNV {
7886    pub s_type: StructureType,
7887    pub next: *const c_void,
7888    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7889}
7890
7891impl Default for ExternalMemoryImageCreateInfoNV {
7892    #[inline]
7893    fn default() -> Self {
7894        Self {
7895            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
7896            next: ptr::null(),
7897            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7898        }
7899    }
7900}
7901
7902unsafe impl Send for ExternalMemoryImageCreateInfoNV {}
7903unsafe impl Sync for ExternalMemoryImageCreateInfoNV {}
7904
7905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html>
7906#[repr(C)]
7907#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7908pub struct ExternalMemoryProperties {
7909    pub external_memory_features: ExternalMemoryFeatureFlags,
7910    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
7911    pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
7912}
7913
7914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryTensorCreateInfoARM.html>
7915#[repr(C)]
7916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7917pub struct ExternalMemoryTensorCreateInfoARM {
7918    pub s_type: StructureType,
7919    pub next: *const c_void,
7920    pub handle_types: ExternalMemoryHandleTypeFlags,
7921}
7922
7923impl Default for ExternalMemoryTensorCreateInfoARM {
7924    #[inline]
7925    fn default() -> Self {
7926        Self {
7927            s_type: StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM,
7928            next: ptr::null(),
7929            handle_types: ExternalMemoryHandleTypeFlags::default(),
7930        }
7931    }
7932}
7933
7934unsafe impl Send for ExternalMemoryTensorCreateInfoARM {}
7935unsafe impl Sync for ExternalMemoryTensorCreateInfoARM {}
7936
7937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html>
7938#[repr(C)]
7939#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7940pub struct ExternalSemaphoreProperties {
7941    pub s_type: StructureType,
7942    pub next: *mut c_void,
7943    pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
7944    pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
7945    pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
7946}
7947
7948impl Default for ExternalSemaphoreProperties {
7949    #[inline]
7950    fn default() -> Self {
7951        Self {
7952            s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
7953            next: ptr::null_mut(),
7954            export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7955            compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7956            external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
7957        }
7958    }
7959}
7960
7961unsafe impl Send for ExternalSemaphoreProperties {}
7962unsafe impl Sync for ExternalSemaphoreProperties {}
7963
7964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalTensorPropertiesARM.html>
7965#[repr(C)]
7966#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7967pub struct ExternalTensorPropertiesARM {
7968    pub s_type: StructureType,
7969    pub next: *const c_void,
7970    pub external_memory_properties: ExternalMemoryProperties,
7971}
7972
7973impl Default for ExternalTensorPropertiesARM {
7974    #[inline]
7975    fn default() -> Self {
7976        Self {
7977            s_type: StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM,
7978            next: ptr::null(),
7979            external_memory_properties: ExternalMemoryProperties::default(),
7980        }
7981    }
7982}
7983
7984unsafe impl Send for ExternalTensorPropertiesARM {}
7985unsafe impl Sync for ExternalTensorPropertiesARM {}
7986
7987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateInfo.html>
7988#[repr(C)]
7989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7990pub struct FenceCreateInfo {
7991    pub s_type: StructureType,
7992    pub next: *const c_void,
7993    pub flags: FenceCreateFlags,
7994}
7995
7996impl Default for FenceCreateInfo {
7997    #[inline]
7998    fn default() -> Self {
7999        Self {
8000            s_type: StructureType::FENCE_CREATE_INFO,
8001            next: ptr::null(),
8002            flags: FenceCreateFlags::default(),
8003        }
8004    }
8005}
8006
8007unsafe impl Send for FenceCreateInfo {}
8008unsafe impl Sync for FenceCreateInfo {}
8009
8010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html>
8011#[repr(C)]
8012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8013pub struct FenceGetFdInfoKHR {
8014    pub s_type: StructureType,
8015    pub next: *const c_void,
8016    pub fence: Fence,
8017    pub handle_type: ExternalFenceHandleTypeFlags,
8018}
8019
8020impl Default for FenceGetFdInfoKHR {
8021    #[inline]
8022    fn default() -> Self {
8023        Self {
8024            s_type: StructureType::FENCE_GET_FD_INFO_KHR,
8025            next: ptr::null(),
8026            fence: Fence::default(),
8027            handle_type: ExternalFenceHandleTypeFlags::default(),
8028        }
8029    }
8030}
8031
8032unsafe impl Send for FenceGetFdInfoKHR {}
8033unsafe impl Sync for FenceGetFdInfoKHR {}
8034
8035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetSciSyncInfoNV.html>
8036#[repr(C)]
8037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8038pub struct FenceGetSciSyncInfoNV {
8039    pub s_type: StructureType,
8040    pub next: *const c_void,
8041    pub fence: Fence,
8042    pub handle_type: ExternalFenceHandleTypeFlags,
8043}
8044
8045impl Default for FenceGetSciSyncInfoNV {
8046    #[inline]
8047    fn default() -> Self {
8048        Self {
8049            s_type: StructureType::FENCE_GET_SCI_SYNC_INFO_NV,
8050            next: ptr::null(),
8051            fence: Fence::default(),
8052            handle_type: ExternalFenceHandleTypeFlags::default(),
8053        }
8054    }
8055}
8056
8057unsafe impl Send for FenceGetSciSyncInfoNV {}
8058unsafe impl Sync for FenceGetSciSyncInfoNV {}
8059
8060/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html>
8061#[repr(C)]
8062#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8063pub struct FenceGetWin32HandleInfoKHR {
8064    pub s_type: StructureType,
8065    pub next: *const c_void,
8066    pub fence: Fence,
8067    pub handle_type: ExternalFenceHandleTypeFlags,
8068}
8069
8070impl Default for FenceGetWin32HandleInfoKHR {
8071    #[inline]
8072    fn default() -> Self {
8073        Self {
8074            s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
8075            next: ptr::null(),
8076            fence: Fence::default(),
8077            handle_type: ExternalFenceHandleTypeFlags::default(),
8078        }
8079    }
8080}
8081
8082unsafe impl Send for FenceGetWin32HandleInfoKHR {}
8083unsafe impl Sync for FenceGetWin32HandleInfoKHR {}
8084
8085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>
8086#[repr(C)]
8087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8088pub struct FilterCubicImageViewImageFormatPropertiesEXT {
8089    pub s_type: StructureType,
8090    pub next: *mut c_void,
8091    pub filter_cubic: Bool32,
8092    pub filter_cubic_minmax: Bool32,
8093}
8094
8095impl Default for FilterCubicImageViewImageFormatPropertiesEXT {
8096    #[inline]
8097    fn default() -> Self {
8098        Self {
8099            s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
8100            next: ptr::null_mut(),
8101            filter_cubic: Bool32::default(),
8102            filter_cubic_minmax: Bool32::default(),
8103        }
8104    }
8105}
8106
8107unsafe impl Send for FilterCubicImageViewImageFormatPropertiesEXT {}
8108unsafe impl Sync for FilterCubicImageViewImageFormatPropertiesEXT {}
8109
8110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties.html>
8111#[repr(C)]
8112#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8113pub struct FormatProperties {
8114    pub linear_tiling_features: FormatFeatureFlags,
8115    pub optimal_tiling_features: FormatFeatureFlags,
8116    pub buffer_features: FormatFeatureFlags,
8117}
8118
8119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2.html>
8120#[repr(C)]
8121#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8122pub struct FormatProperties2 {
8123    pub s_type: StructureType,
8124    pub next: *mut c_void,
8125    pub format_properties: FormatProperties,
8126}
8127
8128impl Default for FormatProperties2 {
8129    #[inline]
8130    fn default() -> Self {
8131        Self {
8132            s_type: StructureType::FORMAT_PROPERTIES_2,
8133            next: ptr::null_mut(),
8134            format_properties: FormatProperties::default(),
8135        }
8136    }
8137}
8138
8139unsafe impl Send for FormatProperties2 {}
8140unsafe impl Sync for FormatProperties2 {}
8141
8142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3.html>
8143#[repr(C)]
8144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8145pub struct FormatProperties3 {
8146    pub s_type: StructureType,
8147    pub next: *mut c_void,
8148    pub linear_tiling_features: FormatFeatureFlags2,
8149    pub optimal_tiling_features: FormatFeatureFlags2,
8150    pub buffer_features: FormatFeatureFlags2,
8151}
8152
8153impl Default for FormatProperties3 {
8154    #[inline]
8155    fn default() -> Self {
8156        Self {
8157            s_type: StructureType::FORMAT_PROPERTIES_3,
8158            next: ptr::null_mut(),
8159            linear_tiling_features: FormatFeatureFlags2::default(),
8160            optimal_tiling_features: FormatFeatureFlags2::default(),
8161            buffer_features: FormatFeatureFlags2::default(),
8162        }
8163    }
8164}
8165
8166unsafe impl Send for FormatProperties3 {}
8167unsafe impl Sync for FormatProperties3 {}
8168
8169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>
8170#[repr(C)]
8171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8172pub struct FragmentShadingRateAttachmentInfoKHR {
8173    pub s_type: StructureType,
8174    pub next: *const c_void,
8175    pub fragment_shading_rate_attachment: *const AttachmentReference2,
8176    pub shading_rate_attachment_texel_size: Extent2D,
8177}
8178
8179impl Default for FragmentShadingRateAttachmentInfoKHR {
8180    #[inline]
8181    fn default() -> Self {
8182        Self {
8183            s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
8184            next: ptr::null(),
8185            fragment_shading_rate_attachment: ptr::null(),
8186            shading_rate_attachment_texel_size: Extent2D::default(),
8187        }
8188    }
8189}
8190
8191unsafe impl Send for FragmentShadingRateAttachmentInfoKHR {}
8192unsafe impl Sync for FragmentShadingRateAttachmentInfoKHR {}
8193
8194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html>
8195#[repr(C)]
8196#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8197pub struct FrameBoundaryEXT {
8198    pub s_type: StructureType,
8199    pub next: *const c_void,
8200    pub flags: FrameBoundaryFlagsEXT,
8201    pub frame_id: u64,
8202    pub image_count: u32,
8203    pub images: *const Image,
8204    pub buffer_count: u32,
8205    pub buffers: *const Buffer,
8206    pub tag_name: u64,
8207    pub tag_size: usize,
8208    pub tag: *const c_void,
8209}
8210
8211impl Default for FrameBoundaryEXT {
8212    #[inline]
8213    fn default() -> Self {
8214        Self {
8215            s_type: StructureType::FRAME_BOUNDARY_EXT,
8216            next: ptr::null(),
8217            flags: FrameBoundaryFlagsEXT::default(),
8218            frame_id: u64::default(),
8219            image_count: u32::default(),
8220            images: ptr::null(),
8221            buffer_count: u32::default(),
8222            buffers: ptr::null(),
8223            tag_name: u64::default(),
8224            tag_size: usize::default(),
8225            tag: ptr::null(),
8226        }
8227    }
8228}
8229
8230unsafe impl Send for FrameBoundaryEXT {}
8231unsafe impl Sync for FrameBoundaryEXT {}
8232
8233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryTensorsARM.html>
8234#[repr(C)]
8235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8236pub struct FrameBoundaryTensorsARM {
8237    pub s_type: StructureType,
8238    pub next: *const c_void,
8239    pub tensor_count: u32,
8240    pub tensors: *const TensorARM,
8241}
8242
8243impl Default for FrameBoundaryTensorsARM {
8244    #[inline]
8245    fn default() -> Self {
8246        Self {
8247            s_type: StructureType::FRAME_BOUNDARY_TENSORS_ARM,
8248            next: ptr::null(),
8249            tensor_count: u32::default(),
8250            tensors: ptr::null(),
8251        }
8252    }
8253}
8254
8255unsafe impl Send for FrameBoundaryTensorsARM {}
8256unsafe impl Sync for FrameBoundaryTensorsARM {}
8257
8258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html>
8259#[repr(C)]
8260#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8261pub struct FramebufferAttachmentImageInfo {
8262    pub s_type: StructureType,
8263    pub next: *const c_void,
8264    pub flags: ImageCreateFlags,
8265    pub usage: ImageUsageFlags,
8266    pub width: u32,
8267    pub height: u32,
8268    pub layer_count: u32,
8269    pub view_format_count: u32,
8270    pub view_formats: *const Format,
8271}
8272
8273impl Default for FramebufferAttachmentImageInfo {
8274    #[inline]
8275    fn default() -> Self {
8276        Self {
8277            s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
8278            next: ptr::null(),
8279            flags: ImageCreateFlags::default(),
8280            usage: ImageUsageFlags::default(),
8281            width: u32::default(),
8282            height: u32::default(),
8283            layer_count: u32::default(),
8284            view_format_count: u32::default(),
8285            view_formats: ptr::null(),
8286        }
8287    }
8288}
8289
8290unsafe impl Send for FramebufferAttachmentImageInfo {}
8291unsafe impl Sync for FramebufferAttachmentImageInfo {}
8292
8293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html>
8294#[repr(C)]
8295#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8296pub struct FramebufferAttachmentsCreateInfo {
8297    pub s_type: StructureType,
8298    pub next: *const c_void,
8299    pub attachment_image_info_count: u32,
8300    pub attachment_image_infos: *const FramebufferAttachmentImageInfo,
8301}
8302
8303impl Default for FramebufferAttachmentsCreateInfo {
8304    #[inline]
8305    fn default() -> Self {
8306        Self {
8307            s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
8308            next: ptr::null(),
8309            attachment_image_info_count: u32::default(),
8310            attachment_image_infos: ptr::null(),
8311        }
8312    }
8313}
8314
8315unsafe impl Send for FramebufferAttachmentsCreateInfo {}
8316unsafe impl Sync for FramebufferAttachmentsCreateInfo {}
8317
8318/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html>
8319#[repr(C)]
8320#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8321pub struct FramebufferCreateInfo {
8322    pub s_type: StructureType,
8323    pub next: *const c_void,
8324    pub flags: FramebufferCreateFlags,
8325    pub render_pass: RenderPass,
8326    pub attachment_count: u32,
8327    pub attachments: *const ImageView,
8328    pub width: u32,
8329    pub height: u32,
8330    pub layers: u32,
8331}
8332
8333impl Default for FramebufferCreateInfo {
8334    #[inline]
8335    fn default() -> Self {
8336        Self {
8337            s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
8338            next: ptr::null(),
8339            flags: FramebufferCreateFlags::default(),
8340            render_pass: RenderPass::default(),
8341            attachment_count: u32::default(),
8342            attachments: ptr::null(),
8343            width: u32::default(),
8344            height: u32::default(),
8345            layers: u32::default(),
8346        }
8347    }
8348}
8349
8350unsafe impl Send for FramebufferCreateInfo {}
8351unsafe impl Sync for FramebufferCreateInfo {}
8352
8353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html>
8354#[repr(C)]
8355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8356pub struct FramebufferMixedSamplesCombinationNV {
8357    pub s_type: StructureType,
8358    pub next: *mut c_void,
8359    pub coverage_reduction_mode: CoverageReductionModeNV,
8360    pub rasterization_samples: SampleCountFlags,
8361    pub depth_stencil_samples: SampleCountFlags,
8362    pub color_samples: SampleCountFlags,
8363}
8364
8365impl Default for FramebufferMixedSamplesCombinationNV {
8366    #[inline]
8367    fn default() -> Self {
8368        Self {
8369            s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
8370            next: ptr::null_mut(),
8371            coverage_reduction_mode: CoverageReductionModeNV::default(),
8372            rasterization_samples: SampleCountFlags::default(),
8373            depth_stencil_samples: SampleCountFlags::default(),
8374            color_samples: SampleCountFlags::default(),
8375        }
8376    }
8377}
8378
8379unsafe impl Send for FramebufferMixedSamplesCombinationNV {}
8380unsafe impl Sync for FramebufferMixedSamplesCombinationNV {}
8381
8382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html>
8383#[repr(C)]
8384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8385pub struct GeneratedCommandsInfoEXT {
8386    pub s_type: StructureType,
8387    pub next: *const c_void,
8388    pub shader_stages: ShaderStageFlags,
8389    pub indirect_execution_set: IndirectExecutionSetEXT,
8390    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8391    pub indirect_address: DeviceAddress,
8392    pub indirect_address_size: DeviceSize,
8393    pub preprocess_address: DeviceAddress,
8394    pub preprocess_size: DeviceSize,
8395    pub max_sequence_count: u32,
8396    pub sequence_count_address: DeviceAddress,
8397    pub max_draw_count: u32,
8398}
8399
8400impl Default for GeneratedCommandsInfoEXT {
8401    #[inline]
8402    fn default() -> Self {
8403        Self {
8404            s_type: StructureType::GENERATED_COMMANDS_INFO_EXT,
8405            next: ptr::null(),
8406            shader_stages: ShaderStageFlags::default(),
8407            indirect_execution_set: IndirectExecutionSetEXT::default(),
8408            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8409            indirect_address: DeviceAddress::default(),
8410            indirect_address_size: DeviceSize::default(),
8411            preprocess_address: DeviceAddress::default(),
8412            preprocess_size: DeviceSize::default(),
8413            max_sequence_count: u32::default(),
8414            sequence_count_address: DeviceAddress::default(),
8415            max_draw_count: u32::default(),
8416        }
8417    }
8418}
8419
8420unsafe impl Send for GeneratedCommandsInfoEXT {}
8421unsafe impl Sync for GeneratedCommandsInfoEXT {}
8422
8423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html>
8424#[repr(C)]
8425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8426pub struct GeneratedCommandsInfoNV {
8427    pub s_type: StructureType,
8428    pub next: *const c_void,
8429    pub pipeline_bind_point: PipelineBindPoint,
8430    pub pipeline: Pipeline,
8431    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8432    pub stream_count: u32,
8433    pub streams: *const IndirectCommandsStreamNV,
8434    pub sequences_count: u32,
8435    pub preprocess_buffer: Buffer,
8436    pub preprocess_offset: DeviceSize,
8437    pub preprocess_size: DeviceSize,
8438    pub sequences_count_buffer: Buffer,
8439    pub sequences_count_offset: DeviceSize,
8440    pub sequences_index_buffer: Buffer,
8441    pub sequences_index_offset: DeviceSize,
8442}
8443
8444impl Default for GeneratedCommandsInfoNV {
8445    #[inline]
8446    fn default() -> Self {
8447        Self {
8448            s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
8449            next: ptr::null(),
8450            pipeline_bind_point: PipelineBindPoint::default(),
8451            pipeline: Pipeline::default(),
8452            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8453            stream_count: u32::default(),
8454            streams: ptr::null(),
8455            sequences_count: u32::default(),
8456            preprocess_buffer: Buffer::default(),
8457            preprocess_offset: DeviceSize::default(),
8458            preprocess_size: DeviceSize::default(),
8459            sequences_count_buffer: Buffer::default(),
8460            sequences_count_offset: DeviceSize::default(),
8461            sequences_index_buffer: Buffer::default(),
8462            sequences_index_offset: DeviceSize::default(),
8463        }
8464    }
8465}
8466
8467unsafe impl Send for GeneratedCommandsInfoNV {}
8468unsafe impl Sync for GeneratedCommandsInfoNV {}
8469
8470/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html>
8471#[repr(C)]
8472#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8473pub struct GeneratedCommandsMemoryRequirementsInfoEXT {
8474    pub s_type: StructureType,
8475    pub next: *const c_void,
8476    pub indirect_execution_set: IndirectExecutionSetEXT,
8477    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8478    pub max_sequence_count: u32,
8479    pub max_draw_count: u32,
8480}
8481
8482impl Default for GeneratedCommandsMemoryRequirementsInfoEXT {
8483    #[inline]
8484    fn default() -> Self {
8485        Self {
8486            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT,
8487            next: ptr::null(),
8488            indirect_execution_set: IndirectExecutionSetEXT::default(),
8489            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8490            max_sequence_count: u32::default(),
8491            max_draw_count: u32::default(),
8492        }
8493    }
8494}
8495
8496unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoEXT {}
8497unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoEXT {}
8498
8499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>
8500#[repr(C)]
8501#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8502pub struct GeneratedCommandsMemoryRequirementsInfoNV {
8503    pub s_type: StructureType,
8504    pub next: *const c_void,
8505    pub pipeline_bind_point: PipelineBindPoint,
8506    pub pipeline: Pipeline,
8507    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8508    pub max_sequences_count: u32,
8509}
8510
8511impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
8512    #[inline]
8513    fn default() -> Self {
8514        Self {
8515            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
8516            next: ptr::null(),
8517            pipeline_bind_point: PipelineBindPoint::default(),
8518            pipeline: Pipeline::default(),
8519            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8520            max_sequences_count: u32::default(),
8521        }
8522    }
8523}
8524
8525unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoNV {}
8526unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoNV {}
8527
8528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html>
8529#[repr(C)]
8530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8531pub struct GeneratedCommandsPipelineInfoEXT {
8532    pub s_type: StructureType,
8533    pub next: *mut c_void,
8534    pub pipeline: Pipeline,
8535}
8536
8537impl Default for GeneratedCommandsPipelineInfoEXT {
8538    #[inline]
8539    fn default() -> Self {
8540        Self {
8541            s_type: StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT,
8542            next: ptr::null_mut(),
8543            pipeline: Pipeline::default(),
8544        }
8545    }
8546}
8547
8548unsafe impl Send for GeneratedCommandsPipelineInfoEXT {}
8549unsafe impl Sync for GeneratedCommandsPipelineInfoEXT {}
8550
8551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html>
8552#[repr(C)]
8553#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8554pub struct GeneratedCommandsShaderInfoEXT {
8555    pub s_type: StructureType,
8556    pub next: *mut c_void,
8557    pub shader_count: u32,
8558    pub shaders: *const ShaderEXT,
8559}
8560
8561impl Default for GeneratedCommandsShaderInfoEXT {
8562    #[inline]
8563    fn default() -> Self {
8564        Self {
8565            s_type: StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT,
8566            next: ptr::null_mut(),
8567            shader_count: u32::default(),
8568            shaders: ptr::null(),
8569        }
8570    }
8571}
8572
8573unsafe impl Send for GeneratedCommandsShaderInfoEXT {}
8574unsafe impl Sync for GeneratedCommandsShaderInfoEXT {}
8575
8576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryAABBNV.html>
8577#[repr(C)]
8578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8579pub struct GeometryAABBNV {
8580    pub s_type: StructureType,
8581    pub next: *const c_void,
8582    pub aabb_data: Buffer,
8583    pub num_aab_bs: u32,
8584    pub stride: u32,
8585    pub offset: DeviceSize,
8586}
8587
8588impl Default for GeometryAABBNV {
8589    #[inline]
8590    fn default() -> Self {
8591        Self {
8592            s_type: StructureType::GEOMETRY_AABB_NV,
8593            next: ptr::null(),
8594            aabb_data: Buffer::default(),
8595            num_aab_bs: u32::default(),
8596            stride: u32::default(),
8597            offset: DeviceSize::default(),
8598        }
8599    }
8600}
8601
8602unsafe impl Send for GeometryAABBNV {}
8603unsafe impl Sync for GeometryAABBNV {}
8604
8605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryDataNV.html>
8606#[repr(C)]
8607#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8608pub struct GeometryDataNV {
8609    pub triangles: GeometryTrianglesNV,
8610    pub aabbs: GeometryAABBNV,
8611}
8612
8613/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryNV.html>
8614#[repr(C)]
8615#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8616pub struct GeometryNV {
8617    pub s_type: StructureType,
8618    pub next: *const c_void,
8619    pub geometry_type: GeometryTypeKHR,
8620    pub geometry: GeometryDataNV,
8621    pub flags: GeometryFlagsKHR,
8622}
8623
8624impl Default for GeometryNV {
8625    #[inline]
8626    fn default() -> Self {
8627        Self {
8628            s_type: StructureType::GEOMETRY_NV,
8629            next: ptr::null(),
8630            geometry_type: GeometryTypeKHR::default(),
8631            geometry: GeometryDataNV::default(),
8632            flags: GeometryFlagsKHR::default(),
8633        }
8634    }
8635}
8636
8637unsafe impl Send for GeometryNV {}
8638unsafe impl Sync for GeometryNV {}
8639
8640/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html>
8641#[repr(C)]
8642#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8643pub struct GeometryTrianglesNV {
8644    pub s_type: StructureType,
8645    pub next: *const c_void,
8646    pub vertex_data: Buffer,
8647    pub vertex_offset: DeviceSize,
8648    pub vertex_count: u32,
8649    pub vertex_stride: DeviceSize,
8650    pub vertex_format: Format,
8651    pub index_data: Buffer,
8652    pub index_offset: DeviceSize,
8653    pub index_count: u32,
8654    pub index_type: IndexType,
8655    pub transform_data: Buffer,
8656    pub transform_offset: DeviceSize,
8657}
8658
8659impl Default for GeometryTrianglesNV {
8660    #[inline]
8661    fn default() -> Self {
8662        Self {
8663            s_type: StructureType::GEOMETRY_TRIANGLES_NV,
8664            next: ptr::null(),
8665            vertex_data: Buffer::default(),
8666            vertex_offset: DeviceSize::default(),
8667            vertex_count: u32::default(),
8668            vertex_stride: DeviceSize::default(),
8669            vertex_format: Format::default(),
8670            index_data: Buffer::default(),
8671            index_offset: DeviceSize::default(),
8672            index_count: u32::default(),
8673            index_type: IndexType::default(),
8674            transform_data: Buffer::default(),
8675            transform_offset: DeviceSize::default(),
8676        }
8677    }
8678}
8679
8680unsafe impl Send for GeometryTrianglesNV {}
8681unsafe impl Sync for GeometryTrianglesNV {}
8682
8683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html>
8684#[repr(C)]
8685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8686pub struct GetLatencyMarkerInfoNV {
8687    pub s_type: StructureType,
8688    pub next: *const c_void,
8689    pub timing_count: u32,
8690    pub timings: *mut LatencyTimingsFrameReportNV,
8691}
8692
8693impl Default for GetLatencyMarkerInfoNV {
8694    #[inline]
8695    fn default() -> Self {
8696        Self {
8697            s_type: StructureType::GET_LATENCY_MARKER_INFO_NV,
8698            next: ptr::null(),
8699            timing_count: u32::default(),
8700            timings: ptr::null_mut(),
8701        }
8702    }
8703}
8704
8705unsafe impl Send for GetLatencyMarkerInfoNV {}
8706unsafe impl Sync for GetLatencyMarkerInfoNV {}
8707
8708/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html>
8709#[repr(C)]
8710#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8711pub struct GraphicsPipelineCreateInfo {
8712    pub s_type: StructureType,
8713    pub next: *const c_void,
8714    pub flags: PipelineCreateFlags,
8715    pub stage_count: u32,
8716    pub stages: *const PipelineShaderStageCreateInfo,
8717    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8718    pub input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
8719    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8720    pub viewport_state: *const PipelineViewportStateCreateInfo,
8721    pub rasterization_state: *const PipelineRasterizationStateCreateInfo,
8722    pub multisample_state: *const PipelineMultisampleStateCreateInfo,
8723    pub depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
8724    pub color_blend_state: *const PipelineColorBlendStateCreateInfo,
8725    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
8726    pub layout: PipelineLayout,
8727    pub render_pass: RenderPass,
8728    pub subpass: u32,
8729    pub base_pipeline_handle: Pipeline,
8730    pub base_pipeline_index: i32,
8731}
8732
8733impl Default for GraphicsPipelineCreateInfo {
8734    #[inline]
8735    fn default() -> Self {
8736        Self {
8737            s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
8738            next: ptr::null(),
8739            flags: PipelineCreateFlags::default(),
8740            stage_count: u32::default(),
8741            stages: ptr::null(),
8742            vertex_input_state: ptr::null(),
8743            input_assembly_state: ptr::null(),
8744            tessellation_state: ptr::null(),
8745            viewport_state: ptr::null(),
8746            rasterization_state: ptr::null(),
8747            multisample_state: ptr::null(),
8748            depth_stencil_state: ptr::null(),
8749            color_blend_state: ptr::null(),
8750            dynamic_state: ptr::null(),
8751            layout: PipelineLayout::default(),
8752            render_pass: RenderPass::default(),
8753            subpass: u32::default(),
8754            base_pipeline_handle: Pipeline::default(),
8755            base_pipeline_index: i32::default(),
8756        }
8757    }
8758}
8759
8760unsafe impl Send for GraphicsPipelineCreateInfo {}
8761unsafe impl Sync for GraphicsPipelineCreateInfo {}
8762
8763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html>
8764#[repr(C)]
8765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8766pub struct GraphicsPipelineLibraryCreateInfoEXT {
8767    pub s_type: StructureType,
8768    pub next: *const c_void,
8769    pub flags: GraphicsPipelineLibraryFlagsEXT,
8770}
8771
8772impl Default for GraphicsPipelineLibraryCreateInfoEXT {
8773    #[inline]
8774    fn default() -> Self {
8775        Self {
8776            s_type: StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,
8777            next: ptr::null(),
8778            flags: GraphicsPipelineLibraryFlagsEXT::default(),
8779        }
8780    }
8781}
8782
8783unsafe impl Send for GraphicsPipelineLibraryCreateInfoEXT {}
8784unsafe impl Sync for GraphicsPipelineLibraryCreateInfoEXT {}
8785
8786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>
8787#[repr(C)]
8788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8789pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
8790    pub s_type: StructureType,
8791    pub next: *const c_void,
8792    pub group_count: u32,
8793    pub groups: *const GraphicsShaderGroupCreateInfoNV,
8794    pub pipeline_count: u32,
8795    pub pipelines: *const Pipeline,
8796}
8797
8798impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
8799    #[inline]
8800    fn default() -> Self {
8801        Self {
8802            s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
8803            next: ptr::null(),
8804            group_count: u32::default(),
8805            groups: ptr::null(),
8806            pipeline_count: u32::default(),
8807            pipelines: ptr::null(),
8808        }
8809    }
8810}
8811
8812unsafe impl Send for GraphicsPipelineShaderGroupsCreateInfoNV {}
8813unsafe impl Sync for GraphicsPipelineShaderGroupsCreateInfoNV {}
8814
8815/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html>
8816#[repr(C)]
8817#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8818pub struct GraphicsShaderGroupCreateInfoNV {
8819    pub s_type: StructureType,
8820    pub next: *const c_void,
8821    pub stage_count: u32,
8822    pub stages: *const PipelineShaderStageCreateInfo,
8823    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
8824    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
8825}
8826
8827impl Default for GraphicsShaderGroupCreateInfoNV {
8828    #[inline]
8829    fn default() -> Self {
8830        Self {
8831            s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
8832            next: ptr::null(),
8833            stage_count: u32::default(),
8834            stages: ptr::null(),
8835            vertex_input_state: ptr::null(),
8836            tessellation_state: ptr::null(),
8837        }
8838    }
8839}
8840
8841unsafe impl Send for GraphicsShaderGroupCreateInfoNV {}
8842unsafe impl Sync for GraphicsShaderGroupCreateInfoNV {}
8843
8844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html>
8845#[repr(C)]
8846#[derive(Copy, Clone, Debug, PartialEq)]
8847pub struct HdrMetadataEXT {
8848    pub s_type: StructureType,
8849    pub next: *const c_void,
8850    pub display_primary_red: XYColorEXT,
8851    pub display_primary_green: XYColorEXT,
8852    pub display_primary_blue: XYColorEXT,
8853    pub white_point: XYColorEXT,
8854    pub max_luminance: f32,
8855    pub min_luminance: f32,
8856    pub max_content_light_level: f32,
8857    pub max_frame_average_light_level: f32,
8858}
8859
8860impl Default for HdrMetadataEXT {
8861    #[inline]
8862    fn default() -> Self {
8863        Self {
8864            s_type: StructureType::HDR_METADATA_EXT,
8865            next: ptr::null(),
8866            display_primary_red: XYColorEXT::default(),
8867            display_primary_green: XYColorEXT::default(),
8868            display_primary_blue: XYColorEXT::default(),
8869            white_point: XYColorEXT::default(),
8870            max_luminance: f32::default(),
8871            min_luminance: f32::default(),
8872            max_content_light_level: f32::default(),
8873            max_frame_average_light_level: f32::default(),
8874        }
8875    }
8876}
8877
8878unsafe impl Send for HdrMetadataEXT {}
8879unsafe impl Sync for HdrMetadataEXT {}
8880
8881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html>
8882#[repr(C)]
8883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8884pub struct HdrVividDynamicMetadataHUAWEI {
8885    pub s_type: StructureType,
8886    pub next: *const c_void,
8887    pub dynamic_metadata_size: usize,
8888    pub dynamic_metadata: *const c_void,
8889}
8890
8891impl Default for HdrVividDynamicMetadataHUAWEI {
8892    #[inline]
8893    fn default() -> Self {
8894        Self {
8895            s_type: StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI,
8896            next: ptr::null(),
8897            dynamic_metadata_size: usize::default(),
8898            dynamic_metadata: ptr::null(),
8899        }
8900    }
8901}
8902
8903unsafe impl Send for HdrVividDynamicMetadataHUAWEI {}
8904unsafe impl Sync for HdrVividDynamicMetadataHUAWEI {}
8905
8906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html>
8907#[repr(C)]
8908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8909pub struct HeadlessSurfaceCreateInfoEXT {
8910    pub s_type: StructureType,
8911    pub next: *const c_void,
8912    pub flags: HeadlessSurfaceCreateFlagsEXT,
8913}
8914
8915impl Default for HeadlessSurfaceCreateInfoEXT {
8916    #[inline]
8917    fn default() -> Self {
8918        Self {
8919            s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
8920            next: ptr::null(),
8921            flags: HeadlessSurfaceCreateFlagsEXT::default(),
8922        }
8923    }
8924}
8925
8926unsafe impl Send for HeadlessSurfaceCreateInfoEXT {}
8927unsafe impl Sync for HeadlessSurfaceCreateInfoEXT {}
8928
8929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html>
8930#[repr(C)]
8931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8932pub struct HostImageCopyDevicePerformanceQuery {
8933    pub s_type: StructureType,
8934    pub next: *mut c_void,
8935    pub optimal_device_access: Bool32,
8936    pub identical_memory_layout: Bool32,
8937}
8938
8939impl Default for HostImageCopyDevicePerformanceQuery {
8940    #[inline]
8941    fn default() -> Self {
8942        Self {
8943            s_type: StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,
8944            next: ptr::null_mut(),
8945            optimal_device_access: Bool32::default(),
8946            identical_memory_layout: Bool32::default(),
8947        }
8948    }
8949}
8950
8951unsafe impl Send for HostImageCopyDevicePerformanceQuery {}
8952unsafe impl Sync for HostImageCopyDevicePerformanceQuery {}
8953
8954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html>
8955#[repr(C)]
8956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8957pub struct HostImageLayoutTransitionInfo {
8958    pub s_type: StructureType,
8959    pub next: *const c_void,
8960    pub image: Image,
8961    pub old_layout: ImageLayout,
8962    pub new_layout: ImageLayout,
8963    pub subresource_range: ImageSubresourceRange,
8964}
8965
8966impl Default for HostImageLayoutTransitionInfo {
8967    #[inline]
8968    fn default() -> Self {
8969        Self {
8970            s_type: StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO,
8971            next: ptr::null(),
8972            image: Image::default(),
8973            old_layout: ImageLayout::default(),
8974            new_layout: ImageLayout::default(),
8975            subresource_range: ImageSubresourceRange::default(),
8976        }
8977    }
8978}
8979
8980unsafe impl Send for HostImageLayoutTransitionInfo {}
8981unsafe impl Sync for HostImageLayoutTransitionInfo {}
8982
8983/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html>
8984#[repr(C)]
8985#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8986pub struct IOSSurfaceCreateInfoMVK {
8987    pub s_type: StructureType,
8988    pub next: *const c_void,
8989    pub flags: IOSSurfaceCreateFlagsMVK,
8990    pub view: *const c_void,
8991}
8992
8993impl Default for IOSSurfaceCreateInfoMVK {
8994    #[inline]
8995    fn default() -> Self {
8996        Self {
8997            s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
8998            next: ptr::null(),
8999            flags: IOSSurfaceCreateFlagsMVK::default(),
9000            view: ptr::null(),
9001        }
9002    }
9003}
9004
9005unsafe impl Send for IOSSurfaceCreateInfoMVK {}
9006unsafe impl Sync for IOSSurfaceCreateInfoMVK {}
9007
9008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html>
9009#[repr(C)]
9010#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9011pub struct ImageAlignmentControlCreateInfoMESA {
9012    pub s_type: StructureType,
9013    pub next: *const c_void,
9014    pub maximum_requested_alignment: u32,
9015}
9016
9017impl Default for ImageAlignmentControlCreateInfoMESA {
9018    #[inline]
9019    fn default() -> Self {
9020        Self {
9021            s_type: StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA,
9022            next: ptr::null(),
9023            maximum_requested_alignment: u32::default(),
9024        }
9025    }
9026}
9027
9028unsafe impl Send for ImageAlignmentControlCreateInfoMESA {}
9029unsafe impl Sync for ImageAlignmentControlCreateInfoMESA {}
9030
9031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit.html>
9032#[repr(C)]
9033#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9034pub struct ImageBlit {
9035    pub src_subresource: ImageSubresourceLayers,
9036    pub src_offsets: [Offset3D; 2],
9037    pub dst_subresource: ImageSubresourceLayers,
9038    pub dst_offsets: [Offset3D; 2],
9039}
9040
9041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2.html>
9042#[repr(C)]
9043#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9044pub struct ImageBlit2 {
9045    pub s_type: StructureType,
9046    pub next: *const c_void,
9047    pub src_subresource: ImageSubresourceLayers,
9048    pub src_offsets: [Offset3D; 2],
9049    pub dst_subresource: ImageSubresourceLayers,
9050    pub dst_offsets: [Offset3D; 2],
9051}
9052
9053impl Default for ImageBlit2 {
9054    #[inline]
9055    fn default() -> Self {
9056        Self {
9057            s_type: StructureType::IMAGE_BLIT_2,
9058            next: ptr::null(),
9059            src_subresource: ImageSubresourceLayers::default(),
9060            src_offsets: [Offset3D::default(); 2],
9061            dst_subresource: ImageSubresourceLayers::default(),
9062            dst_offsets: [Offset3D::default(); 2],
9063        }
9064    }
9065}
9066
9067unsafe impl Send for ImageBlit2 {}
9068unsafe impl Sync for ImageBlit2 {}
9069
9070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html>
9071#[repr(C)]
9072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9073pub struct ImageCaptureDescriptorDataInfoEXT {
9074    pub s_type: StructureType,
9075    pub next: *const c_void,
9076    pub image: Image,
9077}
9078
9079impl Default for ImageCaptureDescriptorDataInfoEXT {
9080    #[inline]
9081    fn default() -> Self {
9082        Self {
9083            s_type: StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9084            next: ptr::null(),
9085            image: Image::default(),
9086        }
9087    }
9088}
9089
9090unsafe impl Send for ImageCaptureDescriptorDataInfoEXT {}
9091unsafe impl Sync for ImageCaptureDescriptorDataInfoEXT {}
9092
9093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html>
9094#[repr(C)]
9095#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9096pub struct ImageCompressionControlEXT {
9097    pub s_type: StructureType,
9098    pub next: *const c_void,
9099    pub flags: ImageCompressionFlagsEXT,
9100    pub compression_control_plane_count: u32,
9101    pub fixed_rate_flags: *mut ImageCompressionFixedRateFlagsEXT,
9102}
9103
9104impl Default for ImageCompressionControlEXT {
9105    #[inline]
9106    fn default() -> Self {
9107        Self {
9108            s_type: StructureType::IMAGE_COMPRESSION_CONTROL_EXT,
9109            next: ptr::null(),
9110            flags: ImageCompressionFlagsEXT::default(),
9111            compression_control_plane_count: u32::default(),
9112            fixed_rate_flags: ptr::null_mut(),
9113        }
9114    }
9115}
9116
9117unsafe impl Send for ImageCompressionControlEXT {}
9118unsafe impl Sync for ImageCompressionControlEXT {}
9119
9120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html>
9121#[repr(C)]
9122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9123pub struct ImageCompressionPropertiesEXT {
9124    pub s_type: StructureType,
9125    pub next: *mut c_void,
9126    pub image_compression_flags: ImageCompressionFlagsEXT,
9127    pub image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT,
9128}
9129
9130impl Default for ImageCompressionPropertiesEXT {
9131    #[inline]
9132    fn default() -> Self {
9133        Self {
9134            s_type: StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT,
9135            next: ptr::null_mut(),
9136            image_compression_flags: ImageCompressionFlagsEXT::default(),
9137            image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT::default(),
9138        }
9139    }
9140}
9141
9142unsafe impl Send for ImageCompressionPropertiesEXT {}
9143unsafe impl Sync for ImageCompressionPropertiesEXT {}
9144
9145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html>
9146#[repr(C)]
9147#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9148pub struct ImageConstraintsInfoFUCHSIA {
9149    pub s_type: StructureType,
9150    pub next: *const c_void,
9151    pub format_constraints_count: u32,
9152    pub format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
9153    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
9154    pub flags: ImageConstraintsInfoFlagsFUCHSIA,
9155}
9156
9157impl Default for ImageConstraintsInfoFUCHSIA {
9158    #[inline]
9159    fn default() -> Self {
9160        Self {
9161            s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
9162            next: ptr::null(),
9163            format_constraints_count: u32::default(),
9164            format_constraints: ptr::null(),
9165            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
9166            flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
9167        }
9168    }
9169}
9170
9171unsafe impl Send for ImageConstraintsInfoFUCHSIA {}
9172unsafe impl Sync for ImageConstraintsInfoFUCHSIA {}
9173
9174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy.html>
9175#[repr(C)]
9176#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9177pub struct ImageCopy {
9178    pub src_subresource: ImageSubresourceLayers,
9179    pub src_offset: Offset3D,
9180    pub dst_subresource: ImageSubresourceLayers,
9181    pub dst_offset: Offset3D,
9182    pub extent: Extent3D,
9183}
9184
9185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2.html>
9186#[repr(C)]
9187#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9188pub struct ImageCopy2 {
9189    pub s_type: StructureType,
9190    pub next: *const c_void,
9191    pub src_subresource: ImageSubresourceLayers,
9192    pub src_offset: Offset3D,
9193    pub dst_subresource: ImageSubresourceLayers,
9194    pub dst_offset: Offset3D,
9195    pub extent: Extent3D,
9196}
9197
9198impl Default for ImageCopy2 {
9199    #[inline]
9200    fn default() -> Self {
9201        Self {
9202            s_type: StructureType::IMAGE_COPY_2,
9203            next: ptr::null(),
9204            src_subresource: ImageSubresourceLayers::default(),
9205            src_offset: Offset3D::default(),
9206            dst_subresource: ImageSubresourceLayers::default(),
9207            dst_offset: Offset3D::default(),
9208            extent: Extent3D::default(),
9209        }
9210    }
9211}
9212
9213unsafe impl Send for ImageCopy2 {}
9214unsafe impl Sync for ImageCopy2 {}
9215
9216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateInfo.html>
9217#[repr(C)]
9218#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9219pub struct ImageCreateInfo {
9220    pub s_type: StructureType,
9221    pub next: *const c_void,
9222    pub flags: ImageCreateFlags,
9223    pub image_type: ImageType,
9224    pub format: Format,
9225    pub extent: Extent3D,
9226    pub mip_levels: u32,
9227    pub array_layers: u32,
9228    pub samples: SampleCountFlags,
9229    pub tiling: ImageTiling,
9230    pub usage: ImageUsageFlags,
9231    pub sharing_mode: SharingMode,
9232    pub queue_family_index_count: u32,
9233    pub queue_family_indices: *const u32,
9234    pub initial_layout: ImageLayout,
9235}
9236
9237impl Default for ImageCreateInfo {
9238    #[inline]
9239    fn default() -> Self {
9240        Self {
9241            s_type: StructureType::IMAGE_CREATE_INFO,
9242            next: ptr::null(),
9243            flags: ImageCreateFlags::default(),
9244            image_type: ImageType::default(),
9245            format: Format::default(),
9246            extent: Extent3D::default(),
9247            mip_levels: u32::default(),
9248            array_layers: u32::default(),
9249            samples: SampleCountFlags::default(),
9250            tiling: ImageTiling::default(),
9251            usage: ImageUsageFlags::default(),
9252            sharing_mode: SharingMode::default(),
9253            queue_family_index_count: u32::default(),
9254            queue_family_indices: ptr::null(),
9255            initial_layout: ImageLayout::default(),
9256        }
9257    }
9258}
9259
9260unsafe impl Send for ImageCreateInfo {}
9261unsafe impl Sync for ImageCreateInfo {}
9262
9263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>
9264#[repr(C)]
9265#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9266pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
9267    pub s_type: StructureType,
9268    pub next: *const c_void,
9269    pub drm_format_modifier: u64,
9270    pub drm_format_modifier_plane_count: u32,
9271    pub plane_layouts: *const SubresourceLayout,
9272}
9273
9274impl Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
9275    #[inline]
9276    fn default() -> Self {
9277        Self {
9278            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
9279            next: ptr::null(),
9280            drm_format_modifier: u64::default(),
9281            drm_format_modifier_plane_count: u32::default(),
9282            plane_layouts: ptr::null(),
9283        }
9284    }
9285}
9286
9287unsafe impl Send for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9288unsafe impl Sync for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9289
9290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>
9291#[repr(C)]
9292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9293pub struct ImageDrmFormatModifierListCreateInfoEXT {
9294    pub s_type: StructureType,
9295    pub next: *const c_void,
9296    pub drm_format_modifier_count: u32,
9297    pub drm_format_modifiers: *const u64,
9298}
9299
9300impl Default for ImageDrmFormatModifierListCreateInfoEXT {
9301    #[inline]
9302    fn default() -> Self {
9303        Self {
9304            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
9305            next: ptr::null(),
9306            drm_format_modifier_count: u32::default(),
9307            drm_format_modifiers: ptr::null(),
9308        }
9309    }
9310}
9311
9312unsafe impl Send for ImageDrmFormatModifierListCreateInfoEXT {}
9313unsafe impl Sync for ImageDrmFormatModifierListCreateInfoEXT {}
9314
9315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html>
9316#[repr(C)]
9317#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9318pub struct ImageDrmFormatModifierPropertiesEXT {
9319    pub s_type: StructureType,
9320    pub next: *mut c_void,
9321    pub drm_format_modifier: u64,
9322}
9323
9324impl Default for ImageDrmFormatModifierPropertiesEXT {
9325    #[inline]
9326    fn default() -> Self {
9327        Self {
9328            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
9329            next: ptr::null_mut(),
9330            drm_format_modifier: u64::default(),
9331        }
9332    }
9333}
9334
9335unsafe impl Send for ImageDrmFormatModifierPropertiesEXT {}
9336unsafe impl Sync for ImageDrmFormatModifierPropertiesEXT {}
9337
9338/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>
9339#[repr(C)]
9340#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9341pub struct ImageFormatConstraintsInfoFUCHSIA {
9342    pub s_type: StructureType,
9343    pub next: *const c_void,
9344    pub image_create_info: ImageCreateInfo,
9345    pub required_format_features: FormatFeatureFlags,
9346    pub flags: ImageFormatConstraintsFlagsFUCHSIA,
9347    pub sysmem_pixel_format: u64,
9348    pub color_space_count: u32,
9349    pub color_spaces: *const SysmemColorSpaceFUCHSIA,
9350}
9351
9352impl Default for ImageFormatConstraintsInfoFUCHSIA {
9353    #[inline]
9354    fn default() -> Self {
9355        Self {
9356            s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
9357            next: ptr::null(),
9358            image_create_info: ImageCreateInfo::default(),
9359            required_format_features: FormatFeatureFlags::default(),
9360            flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
9361            sysmem_pixel_format: u64::default(),
9362            color_space_count: u32::default(),
9363            color_spaces: ptr::null(),
9364        }
9365    }
9366}
9367
9368unsafe impl Send for ImageFormatConstraintsInfoFUCHSIA {}
9369unsafe impl Sync for ImageFormatConstraintsInfoFUCHSIA {}
9370
9371/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html>
9372#[repr(C)]
9373#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9374pub struct ImageFormatListCreateInfo {
9375    pub s_type: StructureType,
9376    pub next: *const c_void,
9377    pub view_format_count: u32,
9378    pub view_formats: *const Format,
9379}
9380
9381impl Default for ImageFormatListCreateInfo {
9382    #[inline]
9383    fn default() -> Self {
9384        Self {
9385            s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
9386            next: ptr::null(),
9387            view_format_count: u32::default(),
9388            view_formats: ptr::null(),
9389        }
9390    }
9391}
9392
9393unsafe impl Send for ImageFormatListCreateInfo {}
9394unsafe impl Sync for ImageFormatListCreateInfo {}
9395
9396/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties.html>
9397#[repr(C)]
9398#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9399pub struct ImageFormatProperties {
9400    pub max_extent: Extent3D,
9401    pub max_mip_levels: u32,
9402    pub max_array_layers: u32,
9403    pub sample_counts: SampleCountFlags,
9404    pub max_resource_size: DeviceSize,
9405}
9406
9407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2.html>
9408#[repr(C)]
9409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9410pub struct ImageFormatProperties2 {
9411    pub s_type: StructureType,
9412    pub next: *mut c_void,
9413    pub image_format_properties: ImageFormatProperties,
9414}
9415
9416impl Default for ImageFormatProperties2 {
9417    #[inline]
9418    fn default() -> Self {
9419        Self {
9420            s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
9421            next: ptr::null_mut(),
9422            image_format_properties: ImageFormatProperties::default(),
9423        }
9424    }
9425}
9426
9427unsafe impl Send for ImageFormatProperties2 {}
9428unsafe impl Sync for ImageFormatProperties2 {}
9429
9430/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html>
9431#[repr(C)]
9432#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9433pub struct ImageMemoryBarrier {
9434    pub s_type: StructureType,
9435    pub next: *const c_void,
9436    pub src_access_mask: AccessFlags,
9437    pub dst_access_mask: AccessFlags,
9438    pub old_layout: ImageLayout,
9439    pub new_layout: ImageLayout,
9440    pub src_queue_family_index: u32,
9441    pub dst_queue_family_index: u32,
9442    pub image: Image,
9443    pub subresource_range: ImageSubresourceRange,
9444}
9445
9446impl Default for ImageMemoryBarrier {
9447    #[inline]
9448    fn default() -> Self {
9449        Self {
9450            s_type: StructureType::IMAGE_MEMORY_BARRIER,
9451            next: ptr::null(),
9452            src_access_mask: AccessFlags::default(),
9453            dst_access_mask: AccessFlags::default(),
9454            old_layout: ImageLayout::default(),
9455            new_layout: ImageLayout::default(),
9456            src_queue_family_index: u32::default(),
9457            dst_queue_family_index: u32::default(),
9458            image: Image::default(),
9459            subresource_range: ImageSubresourceRange::default(),
9460        }
9461    }
9462}
9463
9464unsafe impl Send for ImageMemoryBarrier {}
9465unsafe impl Sync for ImageMemoryBarrier {}
9466
9467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html>
9468#[repr(C)]
9469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9470pub struct ImageMemoryBarrier2 {
9471    pub s_type: StructureType,
9472    pub next: *const c_void,
9473    pub src_stage_mask: PipelineStageFlags2,
9474    pub src_access_mask: AccessFlags2,
9475    pub dst_stage_mask: PipelineStageFlags2,
9476    pub dst_access_mask: AccessFlags2,
9477    pub old_layout: ImageLayout,
9478    pub new_layout: ImageLayout,
9479    pub src_queue_family_index: u32,
9480    pub dst_queue_family_index: u32,
9481    pub image: Image,
9482    pub subresource_range: ImageSubresourceRange,
9483}
9484
9485impl Default for ImageMemoryBarrier2 {
9486    #[inline]
9487    fn default() -> Self {
9488        Self {
9489            s_type: StructureType::IMAGE_MEMORY_BARRIER_2,
9490            next: ptr::null(),
9491            src_stage_mask: PipelineStageFlags2::default(),
9492            src_access_mask: AccessFlags2::default(),
9493            dst_stage_mask: PipelineStageFlags2::default(),
9494            dst_access_mask: AccessFlags2::default(),
9495            old_layout: ImageLayout::default(),
9496            new_layout: ImageLayout::default(),
9497            src_queue_family_index: u32::default(),
9498            dst_queue_family_index: u32::default(),
9499            image: Image::default(),
9500            subresource_range: ImageSubresourceRange::default(),
9501        }
9502    }
9503}
9504
9505unsafe impl Send for ImageMemoryBarrier2 {}
9506unsafe impl Sync for ImageMemoryBarrier2 {}
9507
9508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html>
9509#[repr(C)]
9510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9511pub struct ImageMemoryRequirementsInfo2 {
9512    pub s_type: StructureType,
9513    pub next: *const c_void,
9514    pub image: Image,
9515}
9516
9517impl Default for ImageMemoryRequirementsInfo2 {
9518    #[inline]
9519    fn default() -> Self {
9520        Self {
9521            s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
9522            next: ptr::null(),
9523            image: Image::default(),
9524        }
9525    }
9526}
9527
9528unsafe impl Send for ImageMemoryRequirementsInfo2 {}
9529unsafe impl Sync for ImageMemoryRequirementsInfo2 {}
9530
9531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>
9532#[repr(C)]
9533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9534pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
9535    pub s_type: StructureType,
9536    pub next: *const c_void,
9537    pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
9538    pub image_pipe_handle: zx_handle_t,
9539}
9540
9541impl Default for ImagePipeSurfaceCreateInfoFUCHSIA {
9542    #[inline]
9543    fn default() -> Self {
9544        Self {
9545            s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
9546            next: ptr::null(),
9547            flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
9548            image_pipe_handle: zx_handle_t::default(),
9549        }
9550    }
9551}
9552
9553unsafe impl Send for ImagePipeSurfaceCreateInfoFUCHSIA {}
9554unsafe impl Sync for ImagePipeSurfaceCreateInfoFUCHSIA {}
9555
9556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html>
9557#[repr(C)]
9558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9559pub struct ImagePlaneMemoryRequirementsInfo {
9560    pub s_type: StructureType,
9561    pub next: *const c_void,
9562    pub plane_aspect: ImageAspectFlags,
9563}
9564
9565impl Default for ImagePlaneMemoryRequirementsInfo {
9566    #[inline]
9567    fn default() -> Self {
9568        Self {
9569            s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
9570            next: ptr::null(),
9571            plane_aspect: ImageAspectFlags::default(),
9572        }
9573    }
9574}
9575
9576unsafe impl Send for ImagePlaneMemoryRequirementsInfo {}
9577unsafe impl Sync for ImagePlaneMemoryRequirementsInfo {}
9578
9579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve.html>
9580#[repr(C)]
9581#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9582pub struct ImageResolve {
9583    pub src_subresource: ImageSubresourceLayers,
9584    pub src_offset: Offset3D,
9585    pub dst_subresource: ImageSubresourceLayers,
9586    pub dst_offset: Offset3D,
9587    pub extent: Extent3D,
9588}
9589
9590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2.html>
9591#[repr(C)]
9592#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9593pub struct ImageResolve2 {
9594    pub s_type: StructureType,
9595    pub next: *const c_void,
9596    pub src_subresource: ImageSubresourceLayers,
9597    pub src_offset: Offset3D,
9598    pub dst_subresource: ImageSubresourceLayers,
9599    pub dst_offset: Offset3D,
9600    pub extent: Extent3D,
9601}
9602
9603impl Default for ImageResolve2 {
9604    #[inline]
9605    fn default() -> Self {
9606        Self {
9607            s_type: StructureType::IMAGE_RESOLVE_2,
9608            next: ptr::null(),
9609            src_subresource: ImageSubresourceLayers::default(),
9610            src_offset: Offset3D::default(),
9611            dst_subresource: ImageSubresourceLayers::default(),
9612            dst_offset: Offset3D::default(),
9613            extent: Extent3D::default(),
9614        }
9615    }
9616}
9617
9618unsafe impl Send for ImageResolve2 {}
9619unsafe impl Sync for ImageResolve2 {}
9620
9621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html>
9622#[repr(C)]
9623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9624pub struct ImageSparseMemoryRequirementsInfo2 {
9625    pub s_type: StructureType,
9626    pub next: *const c_void,
9627    pub image: Image,
9628}
9629
9630impl Default for ImageSparseMemoryRequirementsInfo2 {
9631    #[inline]
9632    fn default() -> Self {
9633        Self {
9634            s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
9635            next: ptr::null(),
9636            image: Image::default(),
9637        }
9638    }
9639}
9640
9641unsafe impl Send for ImageSparseMemoryRequirementsInfo2 {}
9642unsafe impl Sync for ImageSparseMemoryRequirementsInfo2 {}
9643
9644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html>
9645#[repr(C)]
9646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9647pub struct ImageStencilUsageCreateInfo {
9648    pub s_type: StructureType,
9649    pub next: *const c_void,
9650    pub stencil_usage: ImageUsageFlags,
9651}
9652
9653impl Default for ImageStencilUsageCreateInfo {
9654    #[inline]
9655    fn default() -> Self {
9656        Self {
9657            s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
9658            next: ptr::null(),
9659            stencil_usage: ImageUsageFlags::default(),
9660        }
9661    }
9662}
9663
9664unsafe impl Send for ImageStencilUsageCreateInfo {}
9665unsafe impl Sync for ImageStencilUsageCreateInfo {}
9666
9667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource.html>
9668#[repr(C)]
9669#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9670pub struct ImageSubresource {
9671    pub aspect_mask: ImageAspectFlags,
9672    pub mip_level: u32,
9673    pub array_layer: u32,
9674}
9675
9676/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2.html>
9677#[repr(C)]
9678#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9679pub struct ImageSubresource2 {
9680    pub s_type: StructureType,
9681    pub next: *mut c_void,
9682    pub image_subresource: ImageSubresource,
9683}
9684
9685impl Default for ImageSubresource2 {
9686    #[inline]
9687    fn default() -> Self {
9688        Self {
9689            s_type: StructureType::IMAGE_SUBRESOURCE_2,
9690            next: ptr::null_mut(),
9691            image_subresource: ImageSubresource::default(),
9692        }
9693    }
9694}
9695
9696unsafe impl Send for ImageSubresource2 {}
9697unsafe impl Sync for ImageSubresource2 {}
9698
9699/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html>
9700#[repr(C)]
9701#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9702pub struct ImageSubresourceLayers {
9703    pub aspect_mask: ImageAspectFlags,
9704    pub mip_level: u32,
9705    pub base_array_layer: u32,
9706    pub layer_count: u32,
9707}
9708
9709/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceRange.html>
9710#[repr(C)]
9711#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9712pub struct ImageSubresourceRange {
9713    pub aspect_mask: ImageAspectFlags,
9714    pub base_mip_level: u32,
9715    pub level_count: u32,
9716    pub base_array_layer: u32,
9717    pub layer_count: u32,
9718}
9719
9720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html>
9721#[repr(C)]
9722#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9723pub struct ImageSwapchainCreateInfoKHR {
9724    pub s_type: StructureType,
9725    pub next: *const c_void,
9726    pub swapchain: SwapchainKHR,
9727}
9728
9729impl Default for ImageSwapchainCreateInfoKHR {
9730    #[inline]
9731    fn default() -> Self {
9732        Self {
9733            s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
9734            next: ptr::null(),
9735            swapchain: SwapchainKHR::default(),
9736        }
9737    }
9738}
9739
9740unsafe impl Send for ImageSwapchainCreateInfoKHR {}
9741unsafe impl Sync for ImageSwapchainCreateInfoKHR {}
9742
9743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html>
9744#[repr(C)]
9745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9746pub struct ImageToMemoryCopy {
9747    pub s_type: StructureType,
9748    pub next: *const c_void,
9749    pub host_pointer: *mut c_void,
9750    pub memory_row_length: u32,
9751    pub memory_image_height: u32,
9752    pub image_subresource: ImageSubresourceLayers,
9753    pub image_offset: Offset3D,
9754    pub image_extent: Extent3D,
9755}
9756
9757impl Default for ImageToMemoryCopy {
9758    #[inline]
9759    fn default() -> Self {
9760        Self {
9761            s_type: StructureType::IMAGE_TO_MEMORY_COPY,
9762            next: ptr::null(),
9763            host_pointer: ptr::null_mut(),
9764            memory_row_length: u32::default(),
9765            memory_image_height: u32::default(),
9766            image_subresource: ImageSubresourceLayers::default(),
9767            image_offset: Offset3D::default(),
9768            image_extent: Extent3D::default(),
9769        }
9770    }
9771}
9772
9773unsafe impl Send for ImageToMemoryCopy {}
9774unsafe impl Sync for ImageToMemoryCopy {}
9775
9776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html>
9777#[repr(C)]
9778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9779pub struct ImageViewASTCDecodeModeEXT {
9780    pub s_type: StructureType,
9781    pub next: *const c_void,
9782    pub decode_mode: Format,
9783}
9784
9785impl Default for ImageViewASTCDecodeModeEXT {
9786    #[inline]
9787    fn default() -> Self {
9788        Self {
9789            s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
9790            next: ptr::null(),
9791            decode_mode: Format::default(),
9792        }
9793    }
9794}
9795
9796unsafe impl Send for ImageViewASTCDecodeModeEXT {}
9797unsafe impl Sync for ImageViewASTCDecodeModeEXT {}
9798
9799/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html>
9800#[repr(C)]
9801#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9802pub struct ImageViewAddressPropertiesNVX {
9803    pub s_type: StructureType,
9804    pub next: *mut c_void,
9805    pub device_address: DeviceAddress,
9806    pub size: DeviceSize,
9807}
9808
9809impl Default for ImageViewAddressPropertiesNVX {
9810    #[inline]
9811    fn default() -> Self {
9812        Self {
9813            s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
9814            next: ptr::null_mut(),
9815            device_address: DeviceAddress::default(),
9816            size: DeviceSize::default(),
9817        }
9818    }
9819}
9820
9821unsafe impl Send for ImageViewAddressPropertiesNVX {}
9822unsafe impl Sync for ImageViewAddressPropertiesNVX {}
9823
9824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html>
9825#[repr(C)]
9826#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9827pub struct ImageViewCaptureDescriptorDataInfoEXT {
9828    pub s_type: StructureType,
9829    pub next: *const c_void,
9830    pub image_view: ImageView,
9831}
9832
9833impl Default for ImageViewCaptureDescriptorDataInfoEXT {
9834    #[inline]
9835    fn default() -> Self {
9836        Self {
9837            s_type: StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9838            next: ptr::null(),
9839            image_view: ImageView::default(),
9840        }
9841    }
9842}
9843
9844unsafe impl Send for ImageViewCaptureDescriptorDataInfoEXT {}
9845unsafe impl Sync for ImageViewCaptureDescriptorDataInfoEXT {}
9846
9847/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html>
9848#[repr(C)]
9849#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9850pub struct ImageViewCreateInfo {
9851    pub s_type: StructureType,
9852    pub next: *const c_void,
9853    pub flags: ImageViewCreateFlags,
9854    pub image: Image,
9855    pub view_type: ImageViewType,
9856    pub format: Format,
9857    pub components: ComponentMapping,
9858    pub subresource_range: ImageSubresourceRange,
9859}
9860
9861impl Default for ImageViewCreateInfo {
9862    #[inline]
9863    fn default() -> Self {
9864        Self {
9865            s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
9866            next: ptr::null(),
9867            flags: ImageViewCreateFlags::default(),
9868            image: Image::default(),
9869            view_type: ImageViewType::default(),
9870            format: Format::default(),
9871            components: ComponentMapping::default(),
9872            subresource_range: ImageSubresourceRange::default(),
9873        }
9874    }
9875}
9876
9877unsafe impl Send for ImageViewCreateInfo {}
9878unsafe impl Sync for ImageViewCreateInfo {}
9879
9880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html>
9881#[repr(C)]
9882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9883pub struct ImageViewHandleInfoNVX {
9884    pub s_type: StructureType,
9885    pub next: *const c_void,
9886    pub image_view: ImageView,
9887    pub descriptor_type: DescriptorType,
9888    pub sampler: Sampler,
9889}
9890
9891impl Default for ImageViewHandleInfoNVX {
9892    #[inline]
9893    fn default() -> Self {
9894        Self {
9895            s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
9896            next: ptr::null(),
9897            image_view: ImageView::default(),
9898            descriptor_type: DescriptorType::default(),
9899            sampler: Sampler::default(),
9900        }
9901    }
9902}
9903
9904unsafe impl Send for ImageViewHandleInfoNVX {}
9905unsafe impl Sync for ImageViewHandleInfoNVX {}
9906
9907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html>
9908#[repr(C)]
9909#[derive(Copy, Clone, Debug, PartialEq)]
9910pub struct ImageViewMinLodCreateInfoEXT {
9911    pub s_type: StructureType,
9912    pub next: *const c_void,
9913    pub min_lod: f32,
9914}
9915
9916impl Default for ImageViewMinLodCreateInfoEXT {
9917    #[inline]
9918    fn default() -> Self {
9919        Self {
9920            s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
9921            next: ptr::null(),
9922            min_lod: f32::default(),
9923        }
9924    }
9925}
9926
9927unsafe impl Send for ImageViewMinLodCreateInfoEXT {}
9928unsafe impl Sync for ImageViewMinLodCreateInfoEXT {}
9929
9930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html>
9931#[repr(C)]
9932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9933pub struct ImageViewSampleWeightCreateInfoQCOM {
9934    pub s_type: StructureType,
9935    pub next: *const c_void,
9936    pub filter_center: Offset2D,
9937    pub filter_size: Extent2D,
9938    pub num_phases: u32,
9939}
9940
9941impl Default for ImageViewSampleWeightCreateInfoQCOM {
9942    #[inline]
9943    fn default() -> Self {
9944        Self {
9945            s_type: StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM,
9946            next: ptr::null(),
9947            filter_center: Offset2D::default(),
9948            filter_size: Extent2D::default(),
9949            num_phases: u32::default(),
9950        }
9951    }
9952}
9953
9954unsafe impl Send for ImageViewSampleWeightCreateInfoQCOM {}
9955unsafe impl Sync for ImageViewSampleWeightCreateInfoQCOM {}
9956
9957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html>
9958#[repr(C)]
9959#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9960pub struct ImageViewSlicedCreateInfoEXT {
9961    pub s_type: StructureType,
9962    pub next: *const c_void,
9963    pub slice_offset: u32,
9964    pub slice_count: u32,
9965}
9966
9967impl Default for ImageViewSlicedCreateInfoEXT {
9968    #[inline]
9969    fn default() -> Self {
9970        Self {
9971            s_type: StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT,
9972            next: ptr::null(),
9973            slice_offset: u32::default(),
9974            slice_count: u32::default(),
9975        }
9976    }
9977}
9978
9979unsafe impl Send for ImageViewSlicedCreateInfoEXT {}
9980unsafe impl Sync for ImageViewSlicedCreateInfoEXT {}
9981
9982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html>
9983#[repr(C)]
9984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9985pub struct ImageViewUsageCreateInfo {
9986    pub s_type: StructureType,
9987    pub next: *const c_void,
9988    pub usage: ImageUsageFlags,
9989}
9990
9991impl Default for ImageViewUsageCreateInfo {
9992    #[inline]
9993    fn default() -> Self {
9994        Self {
9995            s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
9996            next: ptr::null(),
9997            usage: ImageUsageFlags::default(),
9998        }
9999    }
10000}
10001
10002unsafe impl Send for ImageViewUsageCreateInfo {}
10003unsafe impl Sync for ImageViewUsageCreateInfo {}
10004
10005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>
10006#[repr(C)]
10007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10008pub struct ImportAndroidHardwareBufferInfoANDROID {
10009    pub s_type: StructureType,
10010    pub next: *const c_void,
10011    pub buffer: *mut AHardwareBuffer,
10012}
10013
10014impl Default for ImportAndroidHardwareBufferInfoANDROID {
10015    #[inline]
10016    fn default() -> Self {
10017        Self {
10018            s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
10019            next: ptr::null(),
10020            buffer: ptr::null_mut(),
10021        }
10022    }
10023}
10024
10025unsafe impl Send for ImportAndroidHardwareBufferInfoANDROID {}
10026unsafe impl Sync for ImportAndroidHardwareBufferInfoANDROID {}
10027
10028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html>
10029#[repr(C)]
10030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10031pub struct ImportFenceFdInfoKHR {
10032    pub s_type: StructureType,
10033    pub next: *const c_void,
10034    pub fence: Fence,
10035    pub flags: FenceImportFlags,
10036    pub handle_type: ExternalFenceHandleTypeFlags,
10037    pub fd: c_int,
10038}
10039
10040impl Default for ImportFenceFdInfoKHR {
10041    #[inline]
10042    fn default() -> Self {
10043        Self {
10044            s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
10045            next: ptr::null(),
10046            fence: Fence::default(),
10047            flags: FenceImportFlags::default(),
10048            handle_type: ExternalFenceHandleTypeFlags::default(),
10049            fd: c_int::default(),
10050        }
10051    }
10052}
10053
10054unsafe impl Send for ImportFenceFdInfoKHR {}
10055unsafe impl Sync for ImportFenceFdInfoKHR {}
10056
10057/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceSciSyncInfoNV.html>
10058#[repr(C)]
10059#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10060pub struct ImportFenceSciSyncInfoNV {
10061    pub s_type: StructureType,
10062    pub next: *const c_void,
10063    pub fence: Fence,
10064    pub handle_type: ExternalFenceHandleTypeFlags,
10065    pub handle: *mut c_void,
10066}
10067
10068impl Default for ImportFenceSciSyncInfoNV {
10069    #[inline]
10070    fn default() -> Self {
10071        Self {
10072            s_type: StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV,
10073            next: ptr::null(),
10074            fence: Fence::default(),
10075            handle_type: ExternalFenceHandleTypeFlags::default(),
10076            handle: ptr::null_mut(),
10077        }
10078    }
10079}
10080
10081unsafe impl Send for ImportFenceSciSyncInfoNV {}
10082unsafe impl Sync for ImportFenceSciSyncInfoNV {}
10083
10084/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html>
10085#[repr(C)]
10086#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10087pub struct ImportFenceWin32HandleInfoKHR {
10088    pub s_type: StructureType,
10089    pub next: *const c_void,
10090    pub fence: Fence,
10091    pub flags: FenceImportFlags,
10092    pub handle_type: ExternalFenceHandleTypeFlags,
10093    pub handle: HANDLE,
10094    pub name: LPCWSTR,
10095}
10096
10097impl Default for ImportFenceWin32HandleInfoKHR {
10098    #[inline]
10099    fn default() -> Self {
10100        Self {
10101            s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
10102            next: ptr::null(),
10103            fence: Fence::default(),
10104            flags: FenceImportFlags::default(),
10105            handle_type: ExternalFenceHandleTypeFlags::default(),
10106            handle: ptr::null_mut(),
10107            name: ptr::null_mut(),
10108        }
10109    }
10110}
10111
10112unsafe impl Send for ImportFenceWin32HandleInfoKHR {}
10113unsafe impl Sync for ImportFenceWin32HandleInfoKHR {}
10114
10115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>
10116#[repr(C)]
10117#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10118pub struct ImportMemoryBufferCollectionFUCHSIA {
10119    pub s_type: StructureType,
10120    pub next: *const c_void,
10121    pub collection: BufferCollectionFUCHSIA,
10122    pub index: u32,
10123}
10124
10125impl Default for ImportMemoryBufferCollectionFUCHSIA {
10126    #[inline]
10127    fn default() -> Self {
10128        Self {
10129            s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
10130            next: ptr::null(),
10131            collection: BufferCollectionFUCHSIA::default(),
10132            index: u32::default(),
10133        }
10134    }
10135}
10136
10137unsafe impl Send for ImportMemoryBufferCollectionFUCHSIA {}
10138unsafe impl Sync for ImportMemoryBufferCollectionFUCHSIA {}
10139
10140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html>
10141#[repr(C)]
10142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10143pub struct ImportMemoryFdInfoKHR {
10144    pub s_type: StructureType,
10145    pub next: *const c_void,
10146    pub handle_type: ExternalMemoryHandleTypeFlags,
10147    pub fd: c_int,
10148}
10149
10150impl Default for ImportMemoryFdInfoKHR {
10151    #[inline]
10152    fn default() -> Self {
10153        Self {
10154            s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
10155            next: ptr::null(),
10156            handle_type: ExternalMemoryHandleTypeFlags::default(),
10157            fd: c_int::default(),
10158        }
10159    }
10160}
10161
10162unsafe impl Send for ImportMemoryFdInfoKHR {}
10163unsafe impl Sync for ImportMemoryFdInfoKHR {}
10164
10165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html>
10166#[repr(C)]
10167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10168pub struct ImportMemoryHostPointerInfoEXT {
10169    pub s_type: StructureType,
10170    pub next: *const c_void,
10171    pub handle_type: ExternalMemoryHandleTypeFlags,
10172    pub host_pointer: *mut c_void,
10173}
10174
10175impl Default for ImportMemoryHostPointerInfoEXT {
10176    #[inline]
10177    fn default() -> Self {
10178        Self {
10179            s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
10180            next: ptr::null(),
10181            handle_type: ExternalMemoryHandleTypeFlags::default(),
10182            host_pointer: ptr::null_mut(),
10183        }
10184    }
10185}
10186
10187unsafe impl Send for ImportMemoryHostPointerInfoEXT {}
10188unsafe impl Sync for ImportMemoryHostPointerInfoEXT {}
10189
10190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html>
10191#[repr(C)]
10192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10193pub struct ImportMemoryMetalHandleInfoEXT {
10194    pub s_type: StructureType,
10195    pub next: *const c_void,
10196    pub handle_type: ExternalMemoryHandleTypeFlags,
10197    pub handle: *mut c_void,
10198}
10199
10200impl Default for ImportMemoryMetalHandleInfoEXT {
10201    #[inline]
10202    fn default() -> Self {
10203        Self {
10204            s_type: StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT,
10205            next: ptr::null(),
10206            handle_type: ExternalMemoryHandleTypeFlags::default(),
10207            handle: ptr::null_mut(),
10208        }
10209    }
10210}
10211
10212unsafe impl Send for ImportMemoryMetalHandleInfoEXT {}
10213unsafe impl Sync for ImportMemoryMetalHandleInfoEXT {}
10214
10215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemorySciBufInfoNV.html>
10216#[repr(C)]
10217#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10218pub struct ImportMemorySciBufInfoNV {
10219    pub s_type: StructureType,
10220    pub next: *const c_void,
10221    pub handle_type: ExternalMemoryHandleTypeFlags,
10222    pub handle: NvSciBufObj,
10223}
10224
10225impl Default for ImportMemorySciBufInfoNV {
10226    #[inline]
10227    fn default() -> Self {
10228        Self {
10229            s_type: StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV,
10230            next: ptr::null(),
10231            handle_type: ExternalMemoryHandleTypeFlags::default(),
10232            handle: ptr::null_mut(),
10233        }
10234    }
10235}
10236
10237unsafe impl Send for ImportMemorySciBufInfoNV {}
10238unsafe impl Sync for ImportMemorySciBufInfoNV {}
10239
10240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html>
10241#[repr(C)]
10242#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10243pub struct ImportMemoryWin32HandleInfoKHR {
10244    pub s_type: StructureType,
10245    pub next: *const c_void,
10246    pub handle_type: ExternalMemoryHandleTypeFlags,
10247    pub handle: HANDLE,
10248    pub name: LPCWSTR,
10249}
10250
10251impl Default for ImportMemoryWin32HandleInfoKHR {
10252    #[inline]
10253    fn default() -> Self {
10254        Self {
10255            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
10256            next: ptr::null(),
10257            handle_type: ExternalMemoryHandleTypeFlags::default(),
10258            handle: ptr::null_mut(),
10259            name: ptr::null_mut(),
10260        }
10261    }
10262}
10263
10264unsafe impl Send for ImportMemoryWin32HandleInfoKHR {}
10265unsafe impl Sync for ImportMemoryWin32HandleInfoKHR {}
10266
10267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html>
10268#[repr(C)]
10269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10270pub struct ImportMemoryWin32HandleInfoNV {
10271    pub s_type: StructureType,
10272    pub next: *const c_void,
10273    pub handle_type: ExternalMemoryHandleTypeFlagsNV,
10274    pub handle: HANDLE,
10275}
10276
10277impl Default for ImportMemoryWin32HandleInfoNV {
10278    #[inline]
10279    fn default() -> Self {
10280        Self {
10281            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
10282            next: ptr::null(),
10283            handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
10284            handle: ptr::null_mut(),
10285        }
10286    }
10287}
10288
10289unsafe impl Send for ImportMemoryWin32HandleInfoNV {}
10290unsafe impl Sync for ImportMemoryWin32HandleInfoNV {}
10291
10292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>
10293#[repr(C)]
10294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10295pub struct ImportMemoryZirconHandleInfoFUCHSIA {
10296    pub s_type: StructureType,
10297    pub next: *const c_void,
10298    pub handle_type: ExternalMemoryHandleTypeFlags,
10299    pub handle: zx_handle_t,
10300}
10301
10302impl Default for ImportMemoryZirconHandleInfoFUCHSIA {
10303    #[inline]
10304    fn default() -> Self {
10305        Self {
10306            s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
10307            next: ptr::null(),
10308            handle_type: ExternalMemoryHandleTypeFlags::default(),
10309            handle: zx_handle_t::default(),
10310        }
10311    }
10312}
10313
10314unsafe impl Send for ImportMemoryZirconHandleInfoFUCHSIA {}
10315unsafe impl Sync for ImportMemoryZirconHandleInfoFUCHSIA {}
10316
10317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html>
10318#[repr(C)]
10319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10320pub struct ImportMetalBufferInfoEXT {
10321    pub s_type: StructureType,
10322    pub next: *const c_void,
10323    pub mtl_buffer: MTLBuffer_id,
10324}
10325
10326impl Default for ImportMetalBufferInfoEXT {
10327    #[inline]
10328    fn default() -> Self {
10329        Self {
10330            s_type: StructureType::IMPORT_METAL_BUFFER_INFO_EXT,
10331            next: ptr::null(),
10332            mtl_buffer: ptr::null_mut(),
10333        }
10334    }
10335}
10336
10337unsafe impl Send for ImportMetalBufferInfoEXT {}
10338unsafe impl Sync for ImportMetalBufferInfoEXT {}
10339
10340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html>
10341#[repr(C)]
10342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10343pub struct ImportMetalIOSurfaceInfoEXT {
10344    pub s_type: StructureType,
10345    pub next: *const c_void,
10346    pub io_surface: IOSurfaceRef,
10347}
10348
10349impl Default for ImportMetalIOSurfaceInfoEXT {
10350    #[inline]
10351    fn default() -> Self {
10352        Self {
10353            s_type: StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT,
10354            next: ptr::null(),
10355            io_surface: ptr::null_mut(),
10356        }
10357    }
10358}
10359
10360unsafe impl Send for ImportMetalIOSurfaceInfoEXT {}
10361unsafe impl Sync for ImportMetalIOSurfaceInfoEXT {}
10362
10363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html>
10364#[repr(C)]
10365#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10366pub struct ImportMetalSharedEventInfoEXT {
10367    pub s_type: StructureType,
10368    pub next: *const c_void,
10369    pub mtl_shared_event: MTLSharedEvent_id,
10370}
10371
10372impl Default for ImportMetalSharedEventInfoEXT {
10373    #[inline]
10374    fn default() -> Self {
10375        Self {
10376            s_type: StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT,
10377            next: ptr::null(),
10378            mtl_shared_event: ptr::null_mut(),
10379        }
10380    }
10381}
10382
10383unsafe impl Send for ImportMetalSharedEventInfoEXT {}
10384unsafe impl Sync for ImportMetalSharedEventInfoEXT {}
10385
10386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html>
10387#[repr(C)]
10388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10389pub struct ImportMetalTextureInfoEXT {
10390    pub s_type: StructureType,
10391    pub next: *const c_void,
10392    pub plane: ImageAspectFlags,
10393    pub mtl_texture: MTLTexture_id,
10394}
10395
10396impl Default for ImportMetalTextureInfoEXT {
10397    #[inline]
10398    fn default() -> Self {
10399        Self {
10400            s_type: StructureType::IMPORT_METAL_TEXTURE_INFO_EXT,
10401            next: ptr::null(),
10402            plane: ImageAspectFlags::default(),
10403            mtl_texture: ptr::null_mut(),
10404        }
10405    }
10406}
10407
10408unsafe impl Send for ImportMetalTextureInfoEXT {}
10409unsafe impl Sync for ImportMetalTextureInfoEXT {}
10410
10411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html>
10412#[repr(C)]
10413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10414pub struct ImportScreenBufferInfoQNX {
10415    pub s_type: StructureType,
10416    pub next: *const c_void,
10417    pub buffer: *mut _screen_buffer,
10418}
10419
10420impl Default for ImportScreenBufferInfoQNX {
10421    #[inline]
10422    fn default() -> Self {
10423        Self {
10424            s_type: StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX,
10425            next: ptr::null(),
10426            buffer: ptr::null_mut(),
10427        }
10428    }
10429}
10430
10431unsafe impl Send for ImportScreenBufferInfoQNX {}
10432unsafe impl Sync for ImportScreenBufferInfoQNX {}
10433
10434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html>
10435#[repr(C)]
10436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10437pub struct ImportSemaphoreFdInfoKHR {
10438    pub s_type: StructureType,
10439    pub next: *const c_void,
10440    pub semaphore: Semaphore,
10441    pub flags: SemaphoreImportFlags,
10442    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10443    pub fd: c_int,
10444}
10445
10446impl Default for ImportSemaphoreFdInfoKHR {
10447    #[inline]
10448    fn default() -> Self {
10449        Self {
10450            s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
10451            next: ptr::null(),
10452            semaphore: Semaphore::default(),
10453            flags: SemaphoreImportFlags::default(),
10454            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10455            fd: c_int::default(),
10456        }
10457    }
10458}
10459
10460unsafe impl Send for ImportSemaphoreFdInfoKHR {}
10461unsafe impl Sync for ImportSemaphoreFdInfoKHR {}
10462
10463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreSciSyncInfoNV.html>
10464#[repr(C)]
10465#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10466pub struct ImportSemaphoreSciSyncInfoNV {
10467    pub s_type: StructureType,
10468    pub next: *const c_void,
10469    pub semaphore: Semaphore,
10470    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10471    pub handle: *mut c_void,
10472}
10473
10474impl Default for ImportSemaphoreSciSyncInfoNV {
10475    #[inline]
10476    fn default() -> Self {
10477        Self {
10478            s_type: StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
10479            next: ptr::null(),
10480            semaphore: Semaphore::default(),
10481            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10482            handle: ptr::null_mut(),
10483        }
10484    }
10485}
10486
10487unsafe impl Send for ImportSemaphoreSciSyncInfoNV {}
10488unsafe impl Sync for ImportSemaphoreSciSyncInfoNV {}
10489
10490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>
10491#[repr(C)]
10492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10493pub struct ImportSemaphoreWin32HandleInfoKHR {
10494    pub s_type: StructureType,
10495    pub next: *const c_void,
10496    pub semaphore: Semaphore,
10497    pub flags: SemaphoreImportFlags,
10498    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10499    pub handle: HANDLE,
10500    pub name: LPCWSTR,
10501}
10502
10503impl Default for ImportSemaphoreWin32HandleInfoKHR {
10504    #[inline]
10505    fn default() -> Self {
10506        Self {
10507            s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
10508            next: ptr::null(),
10509            semaphore: Semaphore::default(),
10510            flags: SemaphoreImportFlags::default(),
10511            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10512            handle: ptr::null_mut(),
10513            name: ptr::null_mut(),
10514        }
10515    }
10516}
10517
10518unsafe impl Send for ImportSemaphoreWin32HandleInfoKHR {}
10519unsafe impl Sync for ImportSemaphoreWin32HandleInfoKHR {}
10520
10521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>
10522#[repr(C)]
10523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10524pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
10525    pub s_type: StructureType,
10526    pub next: *const c_void,
10527    pub semaphore: Semaphore,
10528    pub flags: SemaphoreImportFlags,
10529    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10530    pub zircon_handle: zx_handle_t,
10531}
10532
10533impl Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
10534    #[inline]
10535    fn default() -> Self {
10536        Self {
10537            s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
10538            next: ptr::null(),
10539            semaphore: Semaphore::default(),
10540            flags: SemaphoreImportFlags::default(),
10541            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10542            zircon_handle: zx_handle_t::default(),
10543        }
10544    }
10545}
10546
10547unsafe impl Send for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10548unsafe impl Sync for ImportSemaphoreZirconHandleInfoFUCHSIA {}
10549
10550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html>
10551#[repr(C)]
10552#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10553pub struct IndirectCommandsExecutionSetTokenEXT {
10554    pub type_: IndirectExecutionSetInfoTypeEXT,
10555    pub shader_stages: ShaderStageFlags,
10556}
10557
10558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html>
10559#[repr(C)]
10560#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10561pub struct IndirectCommandsIndexBufferTokenEXT {
10562    pub mode: IndirectCommandsInputModeFlagsEXT,
10563}
10564
10565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html>
10566#[repr(C)]
10567#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10568pub struct IndirectCommandsLayoutCreateInfoEXT {
10569    pub s_type: StructureType,
10570    pub next: *const c_void,
10571    pub flags: IndirectCommandsLayoutUsageFlagsEXT,
10572    pub shader_stages: ShaderStageFlags,
10573    pub indirect_stride: u32,
10574    pub pipeline_layout: PipelineLayout,
10575    pub token_count: u32,
10576    pub tokens: *const IndirectCommandsLayoutTokenEXT,
10577}
10578
10579impl Default for IndirectCommandsLayoutCreateInfoEXT {
10580    #[inline]
10581    fn default() -> Self {
10582        Self {
10583            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT,
10584            next: ptr::null(),
10585            flags: IndirectCommandsLayoutUsageFlagsEXT::default(),
10586            shader_stages: ShaderStageFlags::default(),
10587            indirect_stride: u32::default(),
10588            pipeline_layout: PipelineLayout::default(),
10589            token_count: u32::default(),
10590            tokens: ptr::null(),
10591        }
10592    }
10593}
10594
10595unsafe impl Send for IndirectCommandsLayoutCreateInfoEXT {}
10596unsafe impl Sync for IndirectCommandsLayoutCreateInfoEXT {}
10597
10598/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>
10599#[repr(C)]
10600#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10601pub struct IndirectCommandsLayoutCreateInfoNV {
10602    pub s_type: StructureType,
10603    pub next: *const c_void,
10604    pub flags: IndirectCommandsLayoutUsageFlagsNV,
10605    pub pipeline_bind_point: PipelineBindPoint,
10606    pub token_count: u32,
10607    pub tokens: *const IndirectCommandsLayoutTokenNV,
10608    pub stream_count: u32,
10609    pub stream_strides: *const u32,
10610}
10611
10612impl Default for IndirectCommandsLayoutCreateInfoNV {
10613    #[inline]
10614    fn default() -> Self {
10615        Self {
10616            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
10617            next: ptr::null(),
10618            flags: IndirectCommandsLayoutUsageFlagsNV::default(),
10619            pipeline_bind_point: PipelineBindPoint::default(),
10620            token_count: u32::default(),
10621            tokens: ptr::null(),
10622            stream_count: u32::default(),
10623            stream_strides: ptr::null(),
10624        }
10625    }
10626}
10627
10628unsafe impl Send for IndirectCommandsLayoutCreateInfoNV {}
10629unsafe impl Sync for IndirectCommandsLayoutCreateInfoNV {}
10630
10631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html>
10632#[repr(C)]
10633#[derive(Copy, Clone, Debug)]
10634pub struct IndirectCommandsLayoutTokenEXT {
10635    pub s_type: StructureType,
10636    pub next: *const c_void,
10637    pub type_: IndirectCommandsTokenTypeEXT,
10638    pub data: IndirectCommandsTokenDataEXT,
10639    pub offset: u32,
10640}
10641
10642impl Default for IndirectCommandsLayoutTokenEXT {
10643    #[inline]
10644    fn default() -> Self {
10645        Self {
10646            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT,
10647            next: ptr::null(),
10648            type_: IndirectCommandsTokenTypeEXT::default(),
10649            data: IndirectCommandsTokenDataEXT::default(),
10650            offset: u32::default(),
10651        }
10652    }
10653}
10654
10655unsafe impl Send for IndirectCommandsLayoutTokenEXT {}
10656unsafe impl Sync for IndirectCommandsLayoutTokenEXT {}
10657
10658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html>
10659#[repr(C)]
10660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10661pub struct IndirectCommandsLayoutTokenNV {
10662    pub s_type: StructureType,
10663    pub next: *const c_void,
10664    pub token_type: IndirectCommandsTokenTypeNV,
10665    pub stream: u32,
10666    pub offset: u32,
10667    pub vertex_binding_unit: u32,
10668    pub vertex_dynamic_stride: Bool32,
10669    pub pushconstant_pipeline_layout: PipelineLayout,
10670    pub pushconstant_shader_stage_flags: ShaderStageFlags,
10671    pub pushconstant_offset: u32,
10672    pub pushconstant_size: u32,
10673    pub indirect_state_flags: IndirectStateFlagsNV,
10674    pub index_type_count: u32,
10675    pub index_types: *const IndexType,
10676    pub index_type_values: *const u32,
10677}
10678
10679impl Default for IndirectCommandsLayoutTokenNV {
10680    #[inline]
10681    fn default() -> Self {
10682        Self {
10683            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
10684            next: ptr::null(),
10685            token_type: IndirectCommandsTokenTypeNV::default(),
10686            stream: u32::default(),
10687            offset: u32::default(),
10688            vertex_binding_unit: u32::default(),
10689            vertex_dynamic_stride: Bool32::default(),
10690            pushconstant_pipeline_layout: PipelineLayout::default(),
10691            pushconstant_shader_stage_flags: ShaderStageFlags::default(),
10692            pushconstant_offset: u32::default(),
10693            pushconstant_size: u32::default(),
10694            indirect_state_flags: IndirectStateFlagsNV::default(),
10695            index_type_count: u32::default(),
10696            index_types: ptr::null(),
10697            index_type_values: ptr::null(),
10698        }
10699    }
10700}
10701
10702unsafe impl Send for IndirectCommandsLayoutTokenNV {}
10703unsafe impl Sync for IndirectCommandsLayoutTokenNV {}
10704
10705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html>
10706#[repr(C)]
10707#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10708pub struct IndirectCommandsPushConstantTokenEXT {
10709    pub update_range: PushConstantRange,
10710}
10711
10712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html>
10713#[repr(C)]
10714#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10715pub struct IndirectCommandsStreamNV {
10716    pub buffer: Buffer,
10717    pub offset: DeviceSize,
10718}
10719
10720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html>
10721#[repr(C)]
10722#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10723pub struct IndirectCommandsVertexBufferTokenEXT {
10724    pub vertex_binding_unit: u32,
10725}
10726
10727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html>
10728#[repr(C)]
10729#[derive(Copy, Clone, Debug)]
10730pub struct IndirectExecutionSetCreateInfoEXT {
10731    pub s_type: StructureType,
10732    pub next: *const c_void,
10733    pub type_: IndirectExecutionSetInfoTypeEXT,
10734    pub info: IndirectExecutionSetInfoEXT,
10735}
10736
10737impl Default for IndirectExecutionSetCreateInfoEXT {
10738    #[inline]
10739    fn default() -> Self {
10740        Self {
10741            s_type: StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT,
10742            next: ptr::null(),
10743            type_: IndirectExecutionSetInfoTypeEXT::default(),
10744            info: IndirectExecutionSetInfoEXT::default(),
10745        }
10746    }
10747}
10748
10749unsafe impl Send for IndirectExecutionSetCreateInfoEXT {}
10750unsafe impl Sync for IndirectExecutionSetCreateInfoEXT {}
10751
10752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html>
10753#[repr(C)]
10754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10755pub struct IndirectExecutionSetPipelineInfoEXT {
10756    pub s_type: StructureType,
10757    pub next: *const c_void,
10758    pub initial_pipeline: Pipeline,
10759    pub max_pipeline_count: u32,
10760}
10761
10762impl Default for IndirectExecutionSetPipelineInfoEXT {
10763    #[inline]
10764    fn default() -> Self {
10765        Self {
10766            s_type: StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT,
10767            next: ptr::null(),
10768            initial_pipeline: Pipeline::default(),
10769            max_pipeline_count: u32::default(),
10770        }
10771    }
10772}
10773
10774unsafe impl Send for IndirectExecutionSetPipelineInfoEXT {}
10775unsafe impl Sync for IndirectExecutionSetPipelineInfoEXT {}
10776
10777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html>
10778#[repr(C)]
10779#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10780pub struct IndirectExecutionSetShaderInfoEXT {
10781    pub s_type: StructureType,
10782    pub next: *const c_void,
10783    pub shader_count: u32,
10784    pub initial_shaders: *const ShaderEXT,
10785    pub set_layout_infos: *const IndirectExecutionSetShaderLayoutInfoEXT,
10786    pub max_shader_count: u32,
10787    pub push_constant_range_count: u32,
10788    pub push_constant_ranges: *const PushConstantRange,
10789}
10790
10791impl Default for IndirectExecutionSetShaderInfoEXT {
10792    #[inline]
10793    fn default() -> Self {
10794        Self {
10795            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT,
10796            next: ptr::null(),
10797            shader_count: u32::default(),
10798            initial_shaders: ptr::null(),
10799            set_layout_infos: ptr::null(),
10800            max_shader_count: u32::default(),
10801            push_constant_range_count: u32::default(),
10802            push_constant_ranges: ptr::null(),
10803        }
10804    }
10805}
10806
10807unsafe impl Send for IndirectExecutionSetShaderInfoEXT {}
10808unsafe impl Sync for IndirectExecutionSetShaderInfoEXT {}
10809
10810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html>
10811#[repr(C)]
10812#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10813pub struct IndirectExecutionSetShaderLayoutInfoEXT {
10814    pub s_type: StructureType,
10815    pub next: *const c_void,
10816    pub set_layout_count: u32,
10817    pub set_layouts: *const DescriptorSetLayout,
10818}
10819
10820impl Default for IndirectExecutionSetShaderLayoutInfoEXT {
10821    #[inline]
10822    fn default() -> Self {
10823        Self {
10824            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT,
10825            next: ptr::null(),
10826            set_layout_count: u32::default(),
10827            set_layouts: ptr::null(),
10828        }
10829    }
10830}
10831
10832unsafe impl Send for IndirectExecutionSetShaderLayoutInfoEXT {}
10833unsafe impl Sync for IndirectExecutionSetShaderLayoutInfoEXT {}
10834
10835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html>
10836#[repr(C)]
10837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10838pub struct InitializePerformanceApiInfoINTEL {
10839    pub s_type: StructureType,
10840    pub next: *const c_void,
10841    pub user_data: *mut c_void,
10842}
10843
10844impl Default for InitializePerformanceApiInfoINTEL {
10845    #[inline]
10846    fn default() -> Self {
10847        Self {
10848            s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
10849            next: ptr::null(),
10850            user_data: ptr::null_mut(),
10851        }
10852    }
10853}
10854
10855unsafe impl Send for InitializePerformanceApiInfoINTEL {}
10856unsafe impl Sync for InitializePerformanceApiInfoINTEL {}
10857
10858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html>
10859#[repr(C)]
10860#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10861pub struct InputAttachmentAspectReference {
10862    pub subpass: u32,
10863    pub input_attachment_index: u32,
10864    pub aspect_mask: ImageAspectFlags,
10865}
10866
10867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html>
10868#[repr(C)]
10869#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10870pub struct InstanceCreateInfo {
10871    pub s_type: StructureType,
10872    pub next: *const c_void,
10873    pub flags: InstanceCreateFlags,
10874    pub application_info: *const ApplicationInfo,
10875    pub enabled_layer_count: u32,
10876    pub enabled_layer_names: *const *const c_char,
10877    pub enabled_extension_count: u32,
10878    pub enabled_extension_names: *const *const c_char,
10879}
10880
10881impl Default for InstanceCreateInfo {
10882    #[inline]
10883    fn default() -> Self {
10884        Self {
10885            s_type: StructureType::INSTANCE_CREATE_INFO,
10886            next: ptr::null(),
10887            flags: InstanceCreateFlags::default(),
10888            application_info: ptr::null(),
10889            enabled_layer_count: u32::default(),
10890            enabled_layer_names: ptr::null(),
10891            enabled_extension_count: u32::default(),
10892            enabled_extension_names: ptr::null(),
10893        }
10894    }
10895}
10896
10897unsafe impl Send for InstanceCreateInfo {}
10898unsafe impl Sync for InstanceCreateInfo {}
10899
10900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html>
10901#[repr(C)]
10902#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10903pub struct LatencySleepInfoNV {
10904    pub s_type: StructureType,
10905    pub next: *const c_void,
10906    pub signal_semaphore: Semaphore,
10907    pub value: u64,
10908}
10909
10910impl Default for LatencySleepInfoNV {
10911    #[inline]
10912    fn default() -> Self {
10913        Self {
10914            s_type: StructureType::LATENCY_SLEEP_INFO_NV,
10915            next: ptr::null(),
10916            signal_semaphore: Semaphore::default(),
10917            value: u64::default(),
10918        }
10919    }
10920}
10921
10922unsafe impl Send for LatencySleepInfoNV {}
10923unsafe impl Sync for LatencySleepInfoNV {}
10924
10925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html>
10926#[repr(C)]
10927#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10928pub struct LatencySleepModeInfoNV {
10929    pub s_type: StructureType,
10930    pub next: *const c_void,
10931    pub low_latency_mode: Bool32,
10932    pub low_latency_boost: Bool32,
10933    pub minimum_interval_us: u32,
10934}
10935
10936impl Default for LatencySleepModeInfoNV {
10937    #[inline]
10938    fn default() -> Self {
10939        Self {
10940            s_type: StructureType::LATENCY_SLEEP_MODE_INFO_NV,
10941            next: ptr::null(),
10942            low_latency_mode: Bool32::default(),
10943            low_latency_boost: Bool32::default(),
10944            minimum_interval_us: u32::default(),
10945        }
10946    }
10947}
10948
10949unsafe impl Send for LatencySleepModeInfoNV {}
10950unsafe impl Sync for LatencySleepModeInfoNV {}
10951
10952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html>
10953#[repr(C)]
10954#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10955pub struct LatencySubmissionPresentIdNV {
10956    pub s_type: StructureType,
10957    pub next: *const c_void,
10958    pub present_id: u64,
10959}
10960
10961impl Default for LatencySubmissionPresentIdNV {
10962    #[inline]
10963    fn default() -> Self {
10964        Self {
10965            s_type: StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV,
10966            next: ptr::null(),
10967            present_id: u64::default(),
10968        }
10969    }
10970}
10971
10972unsafe impl Send for LatencySubmissionPresentIdNV {}
10973unsafe impl Sync for LatencySubmissionPresentIdNV {}
10974
10975/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html>
10976#[repr(C)]
10977#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10978pub struct LatencySurfaceCapabilitiesNV {
10979    pub s_type: StructureType,
10980    pub next: *const c_void,
10981    pub present_mode_count: u32,
10982    pub present_modes: *mut PresentModeKHR,
10983}
10984
10985impl Default for LatencySurfaceCapabilitiesNV {
10986    #[inline]
10987    fn default() -> Self {
10988        Self {
10989            s_type: StructureType::LATENCY_SURFACE_CAPABILITIES_NV,
10990            next: ptr::null(),
10991            present_mode_count: u32::default(),
10992            present_modes: ptr::null_mut(),
10993        }
10994    }
10995}
10996
10997unsafe impl Send for LatencySurfaceCapabilitiesNV {}
10998unsafe impl Sync for LatencySurfaceCapabilitiesNV {}
10999
11000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html>
11001#[repr(C)]
11002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11003pub struct LatencyTimingsFrameReportNV {
11004    pub s_type: StructureType,
11005    pub next: *const c_void,
11006    pub present_id: u64,
11007    pub input_sample_time_us: u64,
11008    pub sim_start_time_us: u64,
11009    pub sim_end_time_us: u64,
11010    pub render_submit_start_time_us: u64,
11011    pub render_submit_end_time_us: u64,
11012    pub present_start_time_us: u64,
11013    pub present_end_time_us: u64,
11014    pub driver_start_time_us: u64,
11015    pub driver_end_time_us: u64,
11016    pub os_render_queue_start_time_us: u64,
11017    pub os_render_queue_end_time_us: u64,
11018    pub gpu_render_start_time_us: u64,
11019    pub gpu_render_end_time_us: u64,
11020}
11021
11022impl Default for LatencyTimingsFrameReportNV {
11023    #[inline]
11024    fn default() -> Self {
11025        Self {
11026            s_type: StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV,
11027            next: ptr::null(),
11028            present_id: u64::default(),
11029            input_sample_time_us: u64::default(),
11030            sim_start_time_us: u64::default(),
11031            sim_end_time_us: u64::default(),
11032            render_submit_start_time_us: u64::default(),
11033            render_submit_end_time_us: u64::default(),
11034            present_start_time_us: u64::default(),
11035            present_end_time_us: u64::default(),
11036            driver_start_time_us: u64::default(),
11037            driver_end_time_us: u64::default(),
11038            os_render_queue_start_time_us: u64::default(),
11039            os_render_queue_end_time_us: u64::default(),
11040            gpu_render_start_time_us: u64::default(),
11041            gpu_render_end_time_us: u64::default(),
11042        }
11043    }
11044}
11045
11046unsafe impl Send for LatencyTimingsFrameReportNV {}
11047unsafe impl Sync for LatencyTimingsFrameReportNV {}
11048
11049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerProperties.html>
11050#[repr(C)]
11051#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11052pub struct LayerProperties {
11053    pub layer_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
11054    pub spec_version: u32,
11055    pub implementation_version: u32,
11056    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
11057}
11058
11059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingEXT.html>
11060#[repr(C)]
11061#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11062pub struct LayerSettingEXT {
11063    pub layer_name: *const c_char,
11064    pub setting_name: *const c_char,
11065    pub type_: LayerSettingTypeEXT,
11066    pub value_count: u32,
11067    pub values: *const c_void,
11068}
11069
11070impl Default for LayerSettingEXT {
11071    #[inline]
11072    fn default() -> Self {
11073        Self {
11074            layer_name: ptr::null(),
11075            setting_name: ptr::null(),
11076            type_: LayerSettingTypeEXT::default(),
11077            value_count: u32::default(),
11078            values: ptr::null(),
11079        }
11080    }
11081}
11082
11083unsafe impl Send for LayerSettingEXT {}
11084unsafe impl Sync for LayerSettingEXT {}
11085
11086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html>
11087#[repr(C)]
11088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11089pub struct LayerSettingsCreateInfoEXT {
11090    pub s_type: StructureType,
11091    pub next: *const c_void,
11092    pub setting_count: u32,
11093    pub settings: *const LayerSettingEXT,
11094}
11095
11096impl Default for LayerSettingsCreateInfoEXT {
11097    #[inline]
11098    fn default() -> Self {
11099        Self {
11100            s_type: StructureType::LAYER_SETTINGS_CREATE_INFO_EXT,
11101            next: ptr::null(),
11102            setting_count: u32::default(),
11103            settings: ptr::null(),
11104        }
11105    }
11106}
11107
11108unsafe impl Send for LayerSettingsCreateInfoEXT {}
11109unsafe impl Sync for LayerSettingsCreateInfoEXT {}
11110
11111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html>
11112#[repr(C)]
11113#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11114pub struct MacOSSurfaceCreateInfoMVK {
11115    pub s_type: StructureType,
11116    pub next: *const c_void,
11117    pub flags: MacOSSurfaceCreateFlagsMVK,
11118    pub view: *const c_void,
11119}
11120
11121impl Default for MacOSSurfaceCreateInfoMVK {
11122    #[inline]
11123    fn default() -> Self {
11124        Self {
11125            s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
11126            next: ptr::null(),
11127            flags: MacOSSurfaceCreateFlagsMVK::default(),
11128            view: ptr::null(),
11129        }
11130    }
11131}
11132
11133unsafe impl Send for MacOSSurfaceCreateInfoMVK {}
11134unsafe impl Sync for MacOSSurfaceCreateInfoMVK {}
11135
11136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMappedMemoryRange.html>
11137#[repr(C)]
11138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11139pub struct MappedMemoryRange {
11140    pub s_type: StructureType,
11141    pub next: *const c_void,
11142    pub memory: DeviceMemory,
11143    pub offset: DeviceSize,
11144    pub size: DeviceSize,
11145}
11146
11147impl Default for MappedMemoryRange {
11148    #[inline]
11149    fn default() -> Self {
11150        Self {
11151            s_type: StructureType::MAPPED_MEMORY_RANGE,
11152            next: ptr::null(),
11153            memory: DeviceMemory::default(),
11154            offset: DeviceSize::default(),
11155            size: DeviceSize::default(),
11156        }
11157    }
11158}
11159
11160unsafe impl Send for MappedMemoryRange {}
11161unsafe impl Sync for MappedMemoryRange {}
11162
11163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html>
11164#[repr(C)]
11165#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11166pub struct MemoryAllocateFlagsInfo {
11167    pub s_type: StructureType,
11168    pub next: *const c_void,
11169    pub flags: MemoryAllocateFlags,
11170    pub device_mask: u32,
11171}
11172
11173impl Default for MemoryAllocateFlagsInfo {
11174    #[inline]
11175    fn default() -> Self {
11176        Self {
11177            s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
11178            next: ptr::null(),
11179            flags: MemoryAllocateFlags::default(),
11180            device_mask: u32::default(),
11181        }
11182    }
11183}
11184
11185unsafe impl Send for MemoryAllocateFlagsInfo {}
11186unsafe impl Sync for MemoryAllocateFlagsInfo {}
11187
11188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html>
11189#[repr(C)]
11190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11191pub struct MemoryAllocateInfo {
11192    pub s_type: StructureType,
11193    pub next: *const c_void,
11194    pub allocation_size: DeviceSize,
11195    pub memory_type_index: u32,
11196}
11197
11198impl Default for MemoryAllocateInfo {
11199    #[inline]
11200    fn default() -> Self {
11201        Self {
11202            s_type: StructureType::MEMORY_ALLOCATE_INFO,
11203            next: ptr::null(),
11204            allocation_size: DeviceSize::default(),
11205            memory_type_index: u32::default(),
11206        }
11207    }
11208}
11209
11210unsafe impl Send for MemoryAllocateInfo {}
11211unsafe impl Sync for MemoryAllocateInfo {}
11212
11213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier.html>
11214#[repr(C)]
11215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11216pub struct MemoryBarrier {
11217    pub s_type: StructureType,
11218    pub next: *const c_void,
11219    pub src_access_mask: AccessFlags,
11220    pub dst_access_mask: AccessFlags,
11221}
11222
11223impl Default for MemoryBarrier {
11224    #[inline]
11225    fn default() -> Self {
11226        Self {
11227            s_type: StructureType::MEMORY_BARRIER,
11228            next: ptr::null(),
11229            src_access_mask: AccessFlags::default(),
11230            dst_access_mask: AccessFlags::default(),
11231        }
11232    }
11233}
11234
11235unsafe impl Send for MemoryBarrier {}
11236unsafe impl Sync for MemoryBarrier {}
11237
11238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2.html>
11239#[repr(C)]
11240#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11241pub struct MemoryBarrier2 {
11242    pub s_type: StructureType,
11243    pub next: *const c_void,
11244    pub src_stage_mask: PipelineStageFlags2,
11245    pub src_access_mask: AccessFlags2,
11246    pub dst_stage_mask: PipelineStageFlags2,
11247    pub dst_access_mask: AccessFlags2,
11248}
11249
11250impl Default for MemoryBarrier2 {
11251    #[inline]
11252    fn default() -> Self {
11253        Self {
11254            s_type: StructureType::MEMORY_BARRIER_2,
11255            next: ptr::null(),
11256            src_stage_mask: PipelineStageFlags2::default(),
11257            src_access_mask: AccessFlags2::default(),
11258            dst_stage_mask: PipelineStageFlags2::default(),
11259            dst_access_mask: AccessFlags2::default(),
11260        }
11261    }
11262}
11263
11264unsafe impl Send for MemoryBarrier2 {}
11265unsafe impl Sync for MemoryBarrier2 {}
11266
11267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html>
11268#[repr(C)]
11269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11270pub struct MemoryBarrierAccessFlags3KHR {
11271    pub s_type: StructureType,
11272    pub next: *const c_void,
11273    pub src_access_mask3: AccessFlags3KHR,
11274    pub dst_access_mask3: AccessFlags3KHR,
11275}
11276
11277impl Default for MemoryBarrierAccessFlags3KHR {
11278    #[inline]
11279    fn default() -> Self {
11280        Self {
11281            s_type: StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR,
11282            next: ptr::null(),
11283            src_access_mask3: AccessFlags3KHR::default(),
11284            dst_access_mask3: AccessFlags3KHR::default(),
11285        }
11286    }
11287}
11288
11289unsafe impl Send for MemoryBarrierAccessFlags3KHR {}
11290unsafe impl Sync for MemoryBarrierAccessFlags3KHR {}
11291
11292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html>
11293#[repr(C)]
11294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11295pub struct MemoryDedicatedAllocateInfo {
11296    pub s_type: StructureType,
11297    pub next: *const c_void,
11298    pub image: Image,
11299    pub buffer: Buffer,
11300}
11301
11302impl Default for MemoryDedicatedAllocateInfo {
11303    #[inline]
11304    fn default() -> Self {
11305        Self {
11306            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
11307            next: ptr::null(),
11308            image: Image::default(),
11309            buffer: Buffer::default(),
11310        }
11311    }
11312}
11313
11314unsafe impl Send for MemoryDedicatedAllocateInfo {}
11315unsafe impl Sync for MemoryDedicatedAllocateInfo {}
11316
11317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoTensorARM.html>
11318#[repr(C)]
11319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11320pub struct MemoryDedicatedAllocateInfoTensorARM {
11321    pub s_type: StructureType,
11322    pub next: *const c_void,
11323    pub tensor: TensorARM,
11324}
11325
11326impl Default for MemoryDedicatedAllocateInfoTensorARM {
11327    #[inline]
11328    fn default() -> Self {
11329        Self {
11330            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM,
11331            next: ptr::null(),
11332            tensor: TensorARM::default(),
11333        }
11334    }
11335}
11336
11337unsafe impl Send for MemoryDedicatedAllocateInfoTensorARM {}
11338unsafe impl Sync for MemoryDedicatedAllocateInfoTensorARM {}
11339
11340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html>
11341#[repr(C)]
11342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11343pub struct MemoryDedicatedRequirements {
11344    pub s_type: StructureType,
11345    pub next: *mut c_void,
11346    pub prefers_dedicated_allocation: Bool32,
11347    pub requires_dedicated_allocation: Bool32,
11348}
11349
11350impl Default for MemoryDedicatedRequirements {
11351    #[inline]
11352    fn default() -> Self {
11353        Self {
11354            s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
11355            next: ptr::null_mut(),
11356            prefers_dedicated_allocation: Bool32::default(),
11357            requires_dedicated_allocation: Bool32::default(),
11358        }
11359    }
11360}
11361
11362unsafe impl Send for MemoryDedicatedRequirements {}
11363unsafe impl Sync for MemoryDedicatedRequirements {}
11364
11365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html>
11366#[repr(C)]
11367#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11368pub struct MemoryFdPropertiesKHR {
11369    pub s_type: StructureType,
11370    pub next: *mut c_void,
11371    pub memory_type_bits: u32,
11372}
11373
11374impl Default for MemoryFdPropertiesKHR {
11375    #[inline]
11376    fn default() -> Self {
11377        Self {
11378            s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
11379            next: ptr::null_mut(),
11380            memory_type_bits: u32::default(),
11381        }
11382    }
11383}
11384
11385unsafe impl Send for MemoryFdPropertiesKHR {}
11386unsafe impl Sync for MemoryFdPropertiesKHR {}
11387
11388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>
11389#[repr(C)]
11390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11391pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
11392    pub s_type: StructureType,
11393    pub next: *const c_void,
11394    pub memory: DeviceMemory,
11395}
11396
11397impl Default for MemoryGetAndroidHardwareBufferInfoANDROID {
11398    #[inline]
11399    fn default() -> Self {
11400        Self {
11401            s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
11402            next: ptr::null(),
11403            memory: DeviceMemory::default(),
11404        }
11405    }
11406}
11407
11408unsafe impl Send for MemoryGetAndroidHardwareBufferInfoANDROID {}
11409unsafe impl Sync for MemoryGetAndroidHardwareBufferInfoANDROID {}
11410
11411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html>
11412#[repr(C)]
11413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11414pub struct MemoryGetFdInfoKHR {
11415    pub s_type: StructureType,
11416    pub next: *const c_void,
11417    pub memory: DeviceMemory,
11418    pub handle_type: ExternalMemoryHandleTypeFlags,
11419}
11420
11421impl Default for MemoryGetFdInfoKHR {
11422    #[inline]
11423    fn default() -> Self {
11424        Self {
11425            s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
11426            next: ptr::null(),
11427            memory: DeviceMemory::default(),
11428            handle_type: ExternalMemoryHandleTypeFlags::default(),
11429        }
11430    }
11431}
11432
11433unsafe impl Send for MemoryGetFdInfoKHR {}
11434unsafe impl Sync for MemoryGetFdInfoKHR {}
11435
11436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html>
11437#[repr(C)]
11438#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11439pub struct MemoryGetMetalHandleInfoEXT {
11440    pub s_type: StructureType,
11441    pub next: *const c_void,
11442    pub memory: DeviceMemory,
11443    pub handle_type: ExternalMemoryHandleTypeFlags,
11444}
11445
11446impl Default for MemoryGetMetalHandleInfoEXT {
11447    #[inline]
11448    fn default() -> Self {
11449        Self {
11450            s_type: StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT,
11451            next: ptr::null(),
11452            memory: DeviceMemory::default(),
11453            handle_type: ExternalMemoryHandleTypeFlags::default(),
11454        }
11455    }
11456}
11457
11458unsafe impl Send for MemoryGetMetalHandleInfoEXT {}
11459unsafe impl Sync for MemoryGetMetalHandleInfoEXT {}
11460
11461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html>
11462#[repr(C)]
11463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11464pub struct MemoryGetRemoteAddressInfoNV {
11465    pub s_type: StructureType,
11466    pub next: *const c_void,
11467    pub memory: DeviceMemory,
11468    pub handle_type: ExternalMemoryHandleTypeFlags,
11469}
11470
11471impl Default for MemoryGetRemoteAddressInfoNV {
11472    #[inline]
11473    fn default() -> Self {
11474        Self {
11475            s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
11476            next: ptr::null(),
11477            memory: DeviceMemory::default(),
11478            handle_type: ExternalMemoryHandleTypeFlags::default(),
11479        }
11480    }
11481}
11482
11483unsafe impl Send for MemoryGetRemoteAddressInfoNV {}
11484unsafe impl Sync for MemoryGetRemoteAddressInfoNV {}
11485
11486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetSciBufInfoNV.html>
11487#[repr(C)]
11488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11489pub struct MemoryGetSciBufInfoNV {
11490    pub s_type: StructureType,
11491    pub next: *const c_void,
11492    pub memory: DeviceMemory,
11493    pub handle_type: ExternalMemoryHandleTypeFlags,
11494}
11495
11496impl Default for MemoryGetSciBufInfoNV {
11497    #[inline]
11498    fn default() -> Self {
11499        Self {
11500            s_type: StructureType::MEMORY_GET_SCI_BUF_INFO_NV,
11501            next: ptr::null(),
11502            memory: DeviceMemory::default(),
11503            handle_type: ExternalMemoryHandleTypeFlags::default(),
11504        }
11505    }
11506}
11507
11508unsafe impl Send for MemoryGetSciBufInfoNV {}
11509unsafe impl Sync for MemoryGetSciBufInfoNV {}
11510
11511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html>
11512#[repr(C)]
11513#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11514pub struct MemoryGetWin32HandleInfoKHR {
11515    pub s_type: StructureType,
11516    pub next: *const c_void,
11517    pub memory: DeviceMemory,
11518    pub handle_type: ExternalMemoryHandleTypeFlags,
11519}
11520
11521impl Default for MemoryGetWin32HandleInfoKHR {
11522    #[inline]
11523    fn default() -> Self {
11524        Self {
11525            s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
11526            next: ptr::null(),
11527            memory: DeviceMemory::default(),
11528            handle_type: ExternalMemoryHandleTypeFlags::default(),
11529        }
11530    }
11531}
11532
11533unsafe impl Send for MemoryGetWin32HandleInfoKHR {}
11534unsafe impl Sync for MemoryGetWin32HandleInfoKHR {}
11535
11536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>
11537#[repr(C)]
11538#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11539pub struct MemoryGetZirconHandleInfoFUCHSIA {
11540    pub s_type: StructureType,
11541    pub next: *const c_void,
11542    pub memory: DeviceMemory,
11543    pub handle_type: ExternalMemoryHandleTypeFlags,
11544}
11545
11546impl Default for MemoryGetZirconHandleInfoFUCHSIA {
11547    #[inline]
11548    fn default() -> Self {
11549        Self {
11550            s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
11551            next: ptr::null(),
11552            memory: DeviceMemory::default(),
11553            handle_type: ExternalMemoryHandleTypeFlags::default(),
11554        }
11555    }
11556}
11557
11558unsafe impl Send for MemoryGetZirconHandleInfoFUCHSIA {}
11559unsafe impl Sync for MemoryGetZirconHandleInfoFUCHSIA {}
11560
11561/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeap.html>
11562#[repr(C)]
11563#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11564pub struct MemoryHeap {
11565    pub size: DeviceSize,
11566    pub flags: MemoryHeapFlags,
11567}
11568
11569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html>
11570#[repr(C)]
11571#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11572pub struct MemoryHostPointerPropertiesEXT {
11573    pub s_type: StructureType,
11574    pub next: *mut c_void,
11575    pub memory_type_bits: u32,
11576}
11577
11578impl Default for MemoryHostPointerPropertiesEXT {
11579    #[inline]
11580    fn default() -> Self {
11581        Self {
11582            s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
11583            next: ptr::null_mut(),
11584            memory_type_bits: u32::default(),
11585        }
11586    }
11587}
11588
11589unsafe impl Send for MemoryHostPointerPropertiesEXT {}
11590unsafe impl Sync for MemoryHostPointerPropertiesEXT {}
11591
11592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfo.html>
11593#[repr(C)]
11594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11595pub struct MemoryMapInfo {
11596    pub s_type: StructureType,
11597    pub next: *const c_void,
11598    pub flags: MemoryMapFlags,
11599    pub memory: DeviceMemory,
11600    pub offset: DeviceSize,
11601    pub size: DeviceSize,
11602}
11603
11604impl Default for MemoryMapInfo {
11605    #[inline]
11606    fn default() -> Self {
11607        Self {
11608            s_type: StructureType::MEMORY_MAP_INFO,
11609            next: ptr::null(),
11610            flags: MemoryMapFlags::default(),
11611            memory: DeviceMemory::default(),
11612            offset: DeviceSize::default(),
11613            size: DeviceSize::default(),
11614        }
11615    }
11616}
11617
11618unsafe impl Send for MemoryMapInfo {}
11619unsafe impl Sync for MemoryMapInfo {}
11620
11621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html>
11622#[repr(C)]
11623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11624pub struct MemoryMapPlacedInfoEXT {
11625    pub s_type: StructureType,
11626    pub next: *const c_void,
11627    pub placed_address: *mut c_void,
11628}
11629
11630impl Default for MemoryMapPlacedInfoEXT {
11631    #[inline]
11632    fn default() -> Self {
11633        Self {
11634            s_type: StructureType::MEMORY_MAP_PLACED_INFO_EXT,
11635            next: ptr::null(),
11636            placed_address: ptr::null_mut(),
11637        }
11638    }
11639}
11640
11641unsafe impl Send for MemoryMapPlacedInfoEXT {}
11642unsafe impl Sync for MemoryMapPlacedInfoEXT {}
11643
11644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html>
11645#[repr(C)]
11646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11647pub struct MemoryMetalHandlePropertiesEXT {
11648    pub s_type: StructureType,
11649    pub next: *mut c_void,
11650    pub memory_type_bits: u32,
11651}
11652
11653impl Default for MemoryMetalHandlePropertiesEXT {
11654    #[inline]
11655    fn default() -> Self {
11656        Self {
11657            s_type: StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT,
11658            next: ptr::null_mut(),
11659            memory_type_bits: u32::default(),
11660        }
11661    }
11662}
11663
11664unsafe impl Send for MemoryMetalHandlePropertiesEXT {}
11665unsafe impl Sync for MemoryMetalHandlePropertiesEXT {}
11666
11667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>
11668#[repr(C)]
11669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11670pub struct MemoryOpaqueCaptureAddressAllocateInfo {
11671    pub s_type: StructureType,
11672    pub next: *const c_void,
11673    pub opaque_capture_address: u64,
11674}
11675
11676impl Default for MemoryOpaqueCaptureAddressAllocateInfo {
11677    #[inline]
11678    fn default() -> Self {
11679        Self {
11680            s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
11681            next: ptr::null(),
11682            opaque_capture_address: u64::default(),
11683        }
11684    }
11685}
11686
11687unsafe impl Send for MemoryOpaqueCaptureAddressAllocateInfo {}
11688unsafe impl Sync for MemoryOpaqueCaptureAddressAllocateInfo {}
11689
11690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html>
11691#[repr(C)]
11692#[derive(Copy, Clone, Debug, PartialEq)]
11693pub struct MemoryPriorityAllocateInfoEXT {
11694    pub s_type: StructureType,
11695    pub next: *const c_void,
11696    pub priority: f32,
11697}
11698
11699impl Default for MemoryPriorityAllocateInfoEXT {
11700    #[inline]
11701    fn default() -> Self {
11702        Self {
11703            s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
11704            next: ptr::null(),
11705            priority: f32::default(),
11706        }
11707    }
11708}
11709
11710unsafe impl Send for MemoryPriorityAllocateInfoEXT {}
11711unsafe impl Sync for MemoryPriorityAllocateInfoEXT {}
11712
11713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements.html>
11714#[repr(C)]
11715#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11716pub struct MemoryRequirements {
11717    pub size: DeviceSize,
11718    pub alignment: DeviceSize,
11719    pub memory_type_bits: u32,
11720}
11721
11722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2.html>
11723#[repr(C)]
11724#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11725pub struct MemoryRequirements2 {
11726    pub s_type: StructureType,
11727    pub next: *mut c_void,
11728    pub memory_requirements: MemoryRequirements,
11729}
11730
11731impl Default for MemoryRequirements2 {
11732    #[inline]
11733    fn default() -> Self {
11734        Self {
11735            s_type: StructureType::MEMORY_REQUIREMENTS_2,
11736            next: ptr::null_mut(),
11737            memory_requirements: MemoryRequirements::default(),
11738        }
11739    }
11740}
11741
11742unsafe impl Send for MemoryRequirements2 {}
11743unsafe impl Sync for MemoryRequirements2 {}
11744
11745/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemorySciBufPropertiesNV.html>
11746#[repr(C)]
11747#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11748pub struct MemorySciBufPropertiesNV {
11749    pub s_type: StructureType,
11750    pub next: *const c_void,
11751    pub memory_type_bits: u32,
11752}
11753
11754impl Default for MemorySciBufPropertiesNV {
11755    #[inline]
11756    fn default() -> Self {
11757        Self {
11758            s_type: StructureType::MEMORY_SCI_BUF_PROPERTIES_NV,
11759            next: ptr::null(),
11760            memory_type_bits: u32::default(),
11761        }
11762    }
11763}
11764
11765unsafe impl Send for MemorySciBufPropertiesNV {}
11766unsafe impl Sync for MemorySciBufPropertiesNV {}
11767
11768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html>
11769#[repr(C)]
11770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11771pub struct MemoryToImageCopy {
11772    pub s_type: StructureType,
11773    pub next: *const c_void,
11774    pub host_pointer: *const c_void,
11775    pub memory_row_length: u32,
11776    pub memory_image_height: u32,
11777    pub image_subresource: ImageSubresourceLayers,
11778    pub image_offset: Offset3D,
11779    pub image_extent: Extent3D,
11780}
11781
11782impl Default for MemoryToImageCopy {
11783    #[inline]
11784    fn default() -> Self {
11785        Self {
11786            s_type: StructureType::MEMORY_TO_IMAGE_COPY,
11787            next: ptr::null(),
11788            host_pointer: ptr::null(),
11789            memory_row_length: u32::default(),
11790            memory_image_height: u32::default(),
11791            image_subresource: ImageSubresourceLayers::default(),
11792            image_offset: Offset3D::default(),
11793            image_extent: Extent3D::default(),
11794        }
11795    }
11796}
11797
11798unsafe impl Send for MemoryToImageCopy {}
11799unsafe impl Sync for MemoryToImageCopy {}
11800
11801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryType.html>
11802#[repr(C)]
11803#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11804pub struct MemoryType {
11805    pub property_flags: MemoryPropertyFlags,
11806    pub heap_index: u32,
11807}
11808
11809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html>
11810#[repr(C)]
11811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11812pub struct MemoryUnmapInfo {
11813    pub s_type: StructureType,
11814    pub next: *const c_void,
11815    pub flags: MemoryUnmapFlags,
11816    pub memory: DeviceMemory,
11817}
11818
11819impl Default for MemoryUnmapInfo {
11820    #[inline]
11821    fn default() -> Self {
11822        Self {
11823            s_type: StructureType::MEMORY_UNMAP_INFO,
11824            next: ptr::null(),
11825            flags: MemoryUnmapFlags::default(),
11826            memory: DeviceMemory::default(),
11827        }
11828    }
11829}
11830
11831unsafe impl Send for MemoryUnmapInfo {}
11832unsafe impl Sync for MemoryUnmapInfo {}
11833
11834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html>
11835#[repr(C)]
11836#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11837pub struct MemoryWin32HandlePropertiesKHR {
11838    pub s_type: StructureType,
11839    pub next: *mut c_void,
11840    pub memory_type_bits: u32,
11841}
11842
11843impl Default for MemoryWin32HandlePropertiesKHR {
11844    #[inline]
11845    fn default() -> Self {
11846        Self {
11847            s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
11848            next: ptr::null_mut(),
11849            memory_type_bits: u32::default(),
11850        }
11851    }
11852}
11853
11854unsafe impl Send for MemoryWin32HandlePropertiesKHR {}
11855unsafe impl Sync for MemoryWin32HandlePropertiesKHR {}
11856
11857/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>
11858#[repr(C)]
11859#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11860pub struct MemoryZirconHandlePropertiesFUCHSIA {
11861    pub s_type: StructureType,
11862    pub next: *mut c_void,
11863    pub memory_type_bits: u32,
11864}
11865
11866impl Default for MemoryZirconHandlePropertiesFUCHSIA {
11867    #[inline]
11868    fn default() -> Self {
11869        Self {
11870            s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
11871            next: ptr::null_mut(),
11872            memory_type_bits: u32::default(),
11873        }
11874    }
11875}
11876
11877unsafe impl Send for MemoryZirconHandlePropertiesFUCHSIA {}
11878unsafe impl Sync for MemoryZirconHandlePropertiesFUCHSIA {}
11879
11880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html>
11881#[repr(C)]
11882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11883pub struct MetalSurfaceCreateInfoEXT {
11884    pub s_type: StructureType,
11885    pub next: *const c_void,
11886    pub flags: MetalSurfaceCreateFlagsEXT,
11887    pub layer: *const CAMetalLayer,
11888}
11889
11890impl Default for MetalSurfaceCreateInfoEXT {
11891    #[inline]
11892    fn default() -> Self {
11893        Self {
11894            s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
11895            next: ptr::null(),
11896            flags: MetalSurfaceCreateFlagsEXT::default(),
11897            layer: ptr::null(),
11898        }
11899    }
11900}
11901
11902unsafe impl Send for MetalSurfaceCreateInfoEXT {}
11903unsafe impl Sync for MetalSurfaceCreateInfoEXT {}
11904
11905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html>
11906#[repr(C)]
11907#[derive(Copy, Clone, Debug)]
11908pub struct MicromapBuildInfoEXT {
11909    pub s_type: StructureType,
11910    pub next: *const c_void,
11911    pub type_: MicromapTypeEXT,
11912    pub flags: BuildMicromapFlagsEXT,
11913    pub mode: BuildMicromapModeEXT,
11914    pub dst_micromap: MicromapEXT,
11915    pub usage_counts_count: u32,
11916    pub usage_counts: *const MicromapUsageEXT,
11917    pub pointer_usage_counts: *const *const MicromapUsageEXT,
11918    pub data: DeviceOrHostAddressConstKHR,
11919    pub scratch_data: DeviceOrHostAddressKHR,
11920    pub triangle_array: DeviceOrHostAddressConstKHR,
11921    pub triangle_array_stride: DeviceSize,
11922}
11923
11924impl Default for MicromapBuildInfoEXT {
11925    #[inline]
11926    fn default() -> Self {
11927        Self {
11928            s_type: StructureType::MICROMAP_BUILD_INFO_EXT,
11929            next: ptr::null(),
11930            type_: MicromapTypeEXT::default(),
11931            flags: BuildMicromapFlagsEXT::default(),
11932            mode: BuildMicromapModeEXT::default(),
11933            dst_micromap: MicromapEXT::default(),
11934            usage_counts_count: u32::default(),
11935            usage_counts: ptr::null(),
11936            pointer_usage_counts: ptr::null(),
11937            data: DeviceOrHostAddressConstKHR::default(),
11938            scratch_data: DeviceOrHostAddressKHR::default(),
11939            triangle_array: DeviceOrHostAddressConstKHR::default(),
11940            triangle_array_stride: DeviceSize::default(),
11941        }
11942    }
11943}
11944
11945unsafe impl Send for MicromapBuildInfoEXT {}
11946unsafe impl Sync for MicromapBuildInfoEXT {}
11947
11948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html>
11949#[repr(C)]
11950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11951pub struct MicromapBuildSizesInfoEXT {
11952    pub s_type: StructureType,
11953    pub next: *const c_void,
11954    pub micromap_size: DeviceSize,
11955    pub build_scratch_size: DeviceSize,
11956    pub discardable: Bool32,
11957}
11958
11959impl Default for MicromapBuildSizesInfoEXT {
11960    #[inline]
11961    fn default() -> Self {
11962        Self {
11963            s_type: StructureType::MICROMAP_BUILD_SIZES_INFO_EXT,
11964            next: ptr::null(),
11965            micromap_size: DeviceSize::default(),
11966            build_scratch_size: DeviceSize::default(),
11967            discardable: Bool32::default(),
11968        }
11969    }
11970}
11971
11972unsafe impl Send for MicromapBuildSizesInfoEXT {}
11973unsafe impl Sync for MicromapBuildSizesInfoEXT {}
11974
11975/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html>
11976#[repr(C)]
11977#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11978pub struct MicromapCreateInfoEXT {
11979    pub s_type: StructureType,
11980    pub next: *const c_void,
11981    pub create_flags: MicromapCreateFlagsEXT,
11982    pub buffer: Buffer,
11983    pub offset: DeviceSize,
11984    pub size: DeviceSize,
11985    pub type_: MicromapTypeEXT,
11986    pub device_address: DeviceAddress,
11987}
11988
11989impl Default for MicromapCreateInfoEXT {
11990    #[inline]
11991    fn default() -> Self {
11992        Self {
11993            s_type: StructureType::MICROMAP_CREATE_INFO_EXT,
11994            next: ptr::null(),
11995            create_flags: MicromapCreateFlagsEXT::default(),
11996            buffer: Buffer::default(),
11997            offset: DeviceSize::default(),
11998            size: DeviceSize::default(),
11999            type_: MicromapTypeEXT::default(),
12000            device_address: DeviceAddress::default(),
12001        }
12002    }
12003}
12004
12005unsafe impl Send for MicromapCreateInfoEXT {}
12006unsafe impl Sync for MicromapCreateInfoEXT {}
12007
12008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html>
12009#[repr(C)]
12010#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12011pub struct MicromapTriangleEXT {
12012    pub data_offset: u32,
12013    pub subdivision_level: u16,
12014    pub format: u16,
12015}
12016
12017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html>
12018#[repr(C)]
12019#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12020pub struct MicromapUsageEXT {
12021    pub count: u32,
12022    pub subdivision_level: u32,
12023    pub format: u32,
12024}
12025
12026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html>
12027#[repr(C)]
12028#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12029pub struct MicromapVersionInfoEXT {
12030    pub s_type: StructureType,
12031    pub next: *const c_void,
12032    pub version_data: *const u8,
12033}
12034
12035impl Default for MicromapVersionInfoEXT {
12036    #[inline]
12037    fn default() -> Self {
12038        Self {
12039            s_type: StructureType::MICROMAP_VERSION_INFO_EXT,
12040            next: ptr::null(),
12041            version_data: ptr::null(),
12042        }
12043    }
12044}
12045
12046unsafe impl Send for MicromapVersionInfoEXT {}
12047unsafe impl Sync for MicromapVersionInfoEXT {}
12048
12049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html>
12050#[repr(C)]
12051#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12052pub struct MultiDrawIndexedInfoEXT {
12053    pub first_index: u32,
12054    pub index_count: u32,
12055    pub vertex_offset: i32,
12056}
12057
12058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html>
12059#[repr(C)]
12060#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12061pub struct MultiDrawInfoEXT {
12062    pub first_vertex: u32,
12063    pub vertex_count: u32,
12064}
12065
12066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html>
12067#[repr(C)]
12068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12069pub struct MultisamplePropertiesEXT {
12070    pub s_type: StructureType,
12071    pub next: *mut c_void,
12072    pub max_sample_location_grid_size: Extent2D,
12073}
12074
12075impl Default for MultisamplePropertiesEXT {
12076    #[inline]
12077    fn default() -> Self {
12078        Self {
12079            s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
12080            next: ptr::null_mut(),
12081            max_sample_location_grid_size: Extent2D::default(),
12082        }
12083    }
12084}
12085
12086unsafe impl Send for MultisamplePropertiesEXT {}
12087unsafe impl Sync for MultisamplePropertiesEXT {}
12088
12089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html>
12090#[repr(C)]
12091#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12092pub struct MultisampledRenderToSingleSampledInfoEXT {
12093    pub s_type: StructureType,
12094    pub next: *const c_void,
12095    pub multisampled_render_to_single_sampled_enable: Bool32,
12096    pub rasterization_samples: SampleCountFlags,
12097}
12098
12099impl Default for MultisampledRenderToSingleSampledInfoEXT {
12100    #[inline]
12101    fn default() -> Self {
12102        Self {
12103            s_type: StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT,
12104            next: ptr::null(),
12105            multisampled_render_to_single_sampled_enable: Bool32::default(),
12106            rasterization_samples: SampleCountFlags::default(),
12107        }
12108    }
12109}
12110
12111unsafe impl Send for MultisampledRenderToSingleSampledInfoEXT {}
12112unsafe impl Sync for MultisampledRenderToSingleSampledInfoEXT {}
12113
12114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html>
12115#[repr(C)]
12116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12117pub struct MultiviewPerViewAttributesInfoNVX {
12118    pub s_type: StructureType,
12119    pub next: *const c_void,
12120    pub per_view_attributes: Bool32,
12121    pub per_view_attributes_position_x_only: Bool32,
12122}
12123
12124impl Default for MultiviewPerViewAttributesInfoNVX {
12125    #[inline]
12126    fn default() -> Self {
12127        Self {
12128            s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
12129            next: ptr::null(),
12130            per_view_attributes: Bool32::default(),
12131            per_view_attributes_position_x_only: Bool32::default(),
12132        }
12133    }
12134}
12135
12136unsafe impl Send for MultiviewPerViewAttributesInfoNVX {}
12137unsafe impl Sync for MultiviewPerViewAttributesInfoNVX {}
12138
12139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html>
12140#[repr(C)]
12141#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12142pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12143    pub s_type: StructureType,
12144    pub next: *const c_void,
12145    pub per_view_render_area_count: u32,
12146    pub per_view_render_areas: *const Rect2D,
12147}
12148
12149impl Default for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12150    #[inline]
12151    fn default() -> Self {
12152        Self {
12153            s_type: StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM,
12154            next: ptr::null(),
12155            per_view_render_area_count: u32::default(),
12156            per_view_render_areas: ptr::null(),
12157        }
12158    }
12159}
12160
12161unsafe impl Send for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12162unsafe impl Sync for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12163
12164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html>
12165#[repr(C)]
12166#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12167pub struct MutableDescriptorTypeCreateInfoEXT {
12168    pub s_type: StructureType,
12169    pub next: *const c_void,
12170    pub mutable_descriptor_type_list_count: u32,
12171    pub mutable_descriptor_type_lists: *const MutableDescriptorTypeListEXT,
12172}
12173
12174impl Default for MutableDescriptorTypeCreateInfoEXT {
12175    #[inline]
12176    fn default() -> Self {
12177        Self {
12178            s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
12179            next: ptr::null(),
12180            mutable_descriptor_type_list_count: u32::default(),
12181            mutable_descriptor_type_lists: ptr::null(),
12182        }
12183    }
12184}
12185
12186unsafe impl Send for MutableDescriptorTypeCreateInfoEXT {}
12187unsafe impl Sync for MutableDescriptorTypeCreateInfoEXT {}
12188
12189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html>
12190#[repr(C)]
12191#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12192pub struct MutableDescriptorTypeListEXT {
12193    pub descriptor_type_count: u32,
12194    pub descriptor_types: *const DescriptorType,
12195}
12196
12197impl Default for MutableDescriptorTypeListEXT {
12198    #[inline]
12199    fn default() -> Self {
12200        Self {
12201            descriptor_type_count: u32::default(),
12202            descriptor_types: ptr::null(),
12203        }
12204    }
12205}
12206
12207unsafe impl Send for MutableDescriptorTypeListEXT {}
12208unsafe impl Sync for MutableDescriptorTypeListEXT {}
12209
12210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset2D.html>
12211#[repr(C)]
12212#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12213pub struct Offset2D {
12214    pub x: i32,
12215    pub y: i32,
12216}
12217
12218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset3D.html>
12219#[repr(C)]
12220#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12221pub struct Offset3D {
12222    pub x: i32,
12223    pub y: i32,
12224    pub z: i32,
12225}
12226
12227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html>
12228#[repr(C)]
12229#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12230pub struct OpaqueCaptureDescriptorDataCreateInfoEXT {
12231    pub s_type: StructureType,
12232    pub next: *const c_void,
12233    pub opaque_capture_descriptor_data: *const c_void,
12234}
12235
12236impl Default for OpaqueCaptureDescriptorDataCreateInfoEXT {
12237    #[inline]
12238    fn default() -> Self {
12239        Self {
12240            s_type: StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT,
12241            next: ptr::null(),
12242            opaque_capture_descriptor_data: ptr::null(),
12243        }
12244    }
12245}
12246
12247unsafe impl Send for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12248unsafe impl Sync for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12249
12250/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html>
12251#[repr(C)]
12252#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12253pub struct OpticalFlowExecuteInfoNV {
12254    pub s_type: StructureType,
12255    pub next: *mut c_void,
12256    pub flags: OpticalFlowExecuteFlagsNV,
12257    pub region_count: u32,
12258    pub regions: *const Rect2D,
12259}
12260
12261impl Default for OpticalFlowExecuteInfoNV {
12262    #[inline]
12263    fn default() -> Self {
12264        Self {
12265            s_type: StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV,
12266            next: ptr::null_mut(),
12267            flags: OpticalFlowExecuteFlagsNV::default(),
12268            region_count: u32::default(),
12269            regions: ptr::null(),
12270        }
12271    }
12272}
12273
12274unsafe impl Send for OpticalFlowExecuteInfoNV {}
12275unsafe impl Sync for OpticalFlowExecuteInfoNV {}
12276
12277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html>
12278#[repr(C)]
12279#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12280pub struct OpticalFlowImageFormatInfoNV {
12281    pub s_type: StructureType,
12282    pub next: *const c_void,
12283    pub usage: OpticalFlowUsageFlagsNV,
12284}
12285
12286impl Default for OpticalFlowImageFormatInfoNV {
12287    #[inline]
12288    fn default() -> Self {
12289        Self {
12290            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV,
12291            next: ptr::null(),
12292            usage: OpticalFlowUsageFlagsNV::default(),
12293        }
12294    }
12295}
12296
12297unsafe impl Send for OpticalFlowImageFormatInfoNV {}
12298unsafe impl Sync for OpticalFlowImageFormatInfoNV {}
12299
12300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html>
12301#[repr(C)]
12302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12303pub struct OpticalFlowImageFormatPropertiesNV {
12304    pub s_type: StructureType,
12305    pub next: *const c_void,
12306    pub format: Format,
12307}
12308
12309impl Default for OpticalFlowImageFormatPropertiesNV {
12310    #[inline]
12311    fn default() -> Self {
12312        Self {
12313            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV,
12314            next: ptr::null(),
12315            format: Format::default(),
12316        }
12317    }
12318}
12319
12320unsafe impl Send for OpticalFlowImageFormatPropertiesNV {}
12321unsafe impl Sync for OpticalFlowImageFormatPropertiesNV {}
12322
12323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html>
12324#[repr(C)]
12325#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12326pub struct OpticalFlowSessionCreateInfoNV {
12327    pub s_type: StructureType,
12328    pub next: *mut c_void,
12329    pub width: u32,
12330    pub height: u32,
12331    pub image_format: Format,
12332    pub flow_vector_format: Format,
12333    pub cost_format: Format,
12334    pub output_grid_size: OpticalFlowGridSizeFlagsNV,
12335    pub hint_grid_size: OpticalFlowGridSizeFlagsNV,
12336    pub performance_level: OpticalFlowPerformanceLevelNV,
12337    pub flags: OpticalFlowSessionCreateFlagsNV,
12338}
12339
12340impl Default for OpticalFlowSessionCreateInfoNV {
12341    #[inline]
12342    fn default() -> Self {
12343        Self {
12344            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV,
12345            next: ptr::null_mut(),
12346            width: u32::default(),
12347            height: u32::default(),
12348            image_format: Format::default(),
12349            flow_vector_format: Format::default(),
12350            cost_format: Format::default(),
12351            output_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12352            hint_grid_size: OpticalFlowGridSizeFlagsNV::default(),
12353            performance_level: OpticalFlowPerformanceLevelNV::default(),
12354            flags: OpticalFlowSessionCreateFlagsNV::default(),
12355        }
12356    }
12357}
12358
12359unsafe impl Send for OpticalFlowSessionCreateInfoNV {}
12360unsafe impl Sync for OpticalFlowSessionCreateInfoNV {}
12361
12362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html>
12363#[repr(C)]
12364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12365pub struct OpticalFlowSessionCreatePrivateDataInfoNV {
12366    pub s_type: StructureType,
12367    pub next: *mut c_void,
12368    pub id: u32,
12369    pub size: u32,
12370    pub private_data: *const c_void,
12371}
12372
12373impl Default for OpticalFlowSessionCreatePrivateDataInfoNV {
12374    #[inline]
12375    fn default() -> Self {
12376        Self {
12377            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV,
12378            next: ptr::null_mut(),
12379            id: u32::default(),
12380            size: u32::default(),
12381            private_data: ptr::null(),
12382        }
12383    }
12384}
12385
12386unsafe impl Send for OpticalFlowSessionCreatePrivateDataInfoNV {}
12387unsafe impl Sync for OpticalFlowSessionCreatePrivateDataInfoNV {}
12388
12389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html>
12390#[repr(C)]
12391#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12392pub struct OutOfBandQueueTypeInfoNV {
12393    pub s_type: StructureType,
12394    pub next: *const c_void,
12395    pub queue_type: OutOfBandQueueTypeNV,
12396}
12397
12398impl Default for OutOfBandQueueTypeInfoNV {
12399    #[inline]
12400    fn default() -> Self {
12401        Self {
12402            s_type: StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV,
12403            next: ptr::null(),
12404            queue_type: OutOfBandQueueTypeNV::default(),
12405        }
12406    }
12407}
12408
12409unsafe impl Send for OutOfBandQueueTypeInfoNV {}
12410unsafe impl Sync for OutOfBandQueueTypeInfoNV {}
12411
12412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html>
12413#[repr(C)]
12414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12415pub struct PartitionedAccelerationStructureFlagsNV {
12416    pub s_type: StructureType,
12417    pub next: *mut c_void,
12418    pub enable_partition_translation: Bool32,
12419}
12420
12421impl Default for PartitionedAccelerationStructureFlagsNV {
12422    #[inline]
12423    fn default() -> Self {
12424        Self {
12425            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV,
12426            next: ptr::null_mut(),
12427            enable_partition_translation: Bool32::default(),
12428        }
12429    }
12430}
12431
12432unsafe impl Send for PartitionedAccelerationStructureFlagsNV {}
12433unsafe impl Sync for PartitionedAccelerationStructureFlagsNV {}
12434
12435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html>
12436#[repr(C)]
12437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12438pub struct PartitionedAccelerationStructureInstancesInputNV {
12439    pub s_type: StructureType,
12440    pub next: *mut c_void,
12441    pub flags: BuildAccelerationStructureFlagsKHR,
12442    pub instance_count: u32,
12443    pub max_instance_per_partition_count: u32,
12444    pub partition_count: u32,
12445    pub max_instance_in_global_partition_count: u32,
12446}
12447
12448impl Default for PartitionedAccelerationStructureInstancesInputNV {
12449    #[inline]
12450    fn default() -> Self {
12451        Self {
12452            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV,
12453            next: ptr::null_mut(),
12454            flags: BuildAccelerationStructureFlagsKHR::default(),
12455            instance_count: u32::default(),
12456            max_instance_per_partition_count: u32::default(),
12457            partition_count: u32::default(),
12458            max_instance_in_global_partition_count: u32::default(),
12459        }
12460    }
12461}
12462
12463unsafe impl Send for PartitionedAccelerationStructureInstancesInputNV {}
12464unsafe impl Sync for PartitionedAccelerationStructureInstancesInputNV {}
12465
12466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html>
12467#[repr(C)]
12468#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12469pub struct PartitionedAccelerationStructureUpdateInstanceDataNV {
12470    pub instance_index: u32,
12471    pub instance_contribution_to_hit_group_index: u32,
12472    pub acceleration_structure: DeviceAddress,
12473}
12474
12475/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html>
12476#[repr(C)]
12477#[derive(Copy, Clone, Default, Debug, PartialEq)]
12478pub struct PartitionedAccelerationStructureWriteInstanceDataNV {
12479    pub transform: TransformMatrixKHR,
12480    pub explicit_aabb: [f32; 6],
12481    pub instance_id: u32,
12482    pub instance_mask: u32,
12483    pub instance_contribution_to_hit_group_index: u32,
12484    pub instance_flags: PartitionedAccelerationStructureInstanceFlagsNV,
12485    pub instance_index: u32,
12486    pub partition_index: u32,
12487    pub acceleration_structure: DeviceAddress,
12488}
12489
12490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html>
12491#[repr(C)]
12492#[derive(Copy, Clone, Default, Debug, PartialEq)]
12493pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNV {
12494    pub partition_index: u32,
12495    pub partition_translation: [f32; 3],
12496}
12497
12498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html>
12499#[repr(C)]
12500#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12501pub struct PastPresentationTimingGOOGLE {
12502    pub present_id: u32,
12503    pub desired_present_time: u64,
12504    pub actual_present_time: u64,
12505    pub earliest_present_time: u64,
12506    pub present_margin: u64,
12507}
12508
12509/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileBeginInfoQCOM.html>
12510#[repr(C)]
12511#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12512pub struct PerTileBeginInfoQCOM {
12513    pub s_type: StructureType,
12514    pub next: *const c_void,
12515}
12516
12517impl Default for PerTileBeginInfoQCOM {
12518    #[inline]
12519    fn default() -> Self {
12520        Self {
12521            s_type: StructureType::PER_TILE_BEGIN_INFO_QCOM,
12522            next: ptr::null(),
12523        }
12524    }
12525}
12526
12527unsafe impl Send for PerTileBeginInfoQCOM {}
12528unsafe impl Sync for PerTileBeginInfoQCOM {}
12529
12530/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileEndInfoQCOM.html>
12531#[repr(C)]
12532#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12533pub struct PerTileEndInfoQCOM {
12534    pub s_type: StructureType,
12535    pub next: *const c_void,
12536}
12537
12538impl Default for PerTileEndInfoQCOM {
12539    #[inline]
12540    fn default() -> Self {
12541        Self {
12542            s_type: StructureType::PER_TILE_END_INFO_QCOM,
12543            next: ptr::null(),
12544        }
12545    }
12546}
12547
12548unsafe impl Send for PerTileEndInfoQCOM {}
12549unsafe impl Sync for PerTileEndInfoQCOM {}
12550
12551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>
12552#[repr(C)]
12553#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12554pub struct PerformanceConfigurationAcquireInfoINTEL {
12555    pub s_type: StructureType,
12556    pub next: *const c_void,
12557    pub type_: PerformanceConfigurationTypeINTEL,
12558}
12559
12560impl Default for PerformanceConfigurationAcquireInfoINTEL {
12561    #[inline]
12562    fn default() -> Self {
12563        Self {
12564            s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
12565            next: ptr::null(),
12566            type_: PerformanceConfigurationTypeINTEL::default(),
12567        }
12568    }
12569}
12570
12571unsafe impl Send for PerformanceConfigurationAcquireInfoINTEL {}
12572unsafe impl Sync for PerformanceConfigurationAcquireInfoINTEL {}
12573
12574/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html>
12575#[repr(C)]
12576#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12577pub struct PerformanceCounterDescriptionKHR {
12578    pub s_type: StructureType,
12579    pub next: *mut c_void,
12580    pub flags: PerformanceCounterDescriptionFlagsKHR,
12581    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
12582    pub category: StringArray<MAX_DESCRIPTION_SIZE>,
12583    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
12584}
12585
12586impl Default for PerformanceCounterDescriptionKHR {
12587    #[inline]
12588    fn default() -> Self {
12589        Self {
12590            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
12591            next: ptr::null_mut(),
12592            flags: PerformanceCounterDescriptionFlagsKHR::default(),
12593            name: StringArray::default(),
12594            category: StringArray::default(),
12595            description: StringArray::default(),
12596        }
12597    }
12598}
12599
12600unsafe impl Send for PerformanceCounterDescriptionKHR {}
12601unsafe impl Sync for PerformanceCounterDescriptionKHR {}
12602
12603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html>
12604#[repr(C)]
12605#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12606pub struct PerformanceCounterKHR {
12607    pub s_type: StructureType,
12608    pub next: *mut c_void,
12609    pub unit: PerformanceCounterUnitKHR,
12610    pub scope: PerformanceCounterScopeKHR,
12611    pub storage: PerformanceCounterStorageKHR,
12612    pub uuid: ByteArray<UUID_SIZE>,
12613}
12614
12615impl Default for PerformanceCounterKHR {
12616    #[inline]
12617    fn default() -> Self {
12618        Self {
12619            s_type: StructureType::PERFORMANCE_COUNTER_KHR,
12620            next: ptr::null_mut(),
12621            unit: PerformanceCounterUnitKHR::default(),
12622            scope: PerformanceCounterScopeKHR::default(),
12623            storage: PerformanceCounterStorageKHR::default(),
12624            uuid: ByteArray::default(),
12625        }
12626    }
12627}
12628
12629unsafe impl Send for PerformanceCounterKHR {}
12630unsafe impl Sync for PerformanceCounterKHR {}
12631
12632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html>
12633#[repr(C)]
12634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12635pub struct PerformanceMarkerInfoINTEL {
12636    pub s_type: StructureType,
12637    pub next: *const c_void,
12638    pub marker: u64,
12639}
12640
12641impl Default for PerformanceMarkerInfoINTEL {
12642    #[inline]
12643    fn default() -> Self {
12644        Self {
12645            s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
12646            next: ptr::null(),
12647            marker: u64::default(),
12648        }
12649    }
12650}
12651
12652unsafe impl Send for PerformanceMarkerInfoINTEL {}
12653unsafe impl Sync for PerformanceMarkerInfoINTEL {}
12654
12655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html>
12656#[repr(C)]
12657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12658pub struct PerformanceOverrideInfoINTEL {
12659    pub s_type: StructureType,
12660    pub next: *const c_void,
12661    pub type_: PerformanceOverrideTypeINTEL,
12662    pub enable: Bool32,
12663    pub parameter: u64,
12664}
12665
12666impl Default for PerformanceOverrideInfoINTEL {
12667    #[inline]
12668    fn default() -> Self {
12669        Self {
12670            s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
12671            next: ptr::null(),
12672            type_: PerformanceOverrideTypeINTEL::default(),
12673            enable: Bool32::default(),
12674            parameter: u64::default(),
12675        }
12676    }
12677}
12678
12679unsafe impl Send for PerformanceOverrideInfoINTEL {}
12680unsafe impl Sync for PerformanceOverrideInfoINTEL {}
12681
12682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQueryReservationInfoKHR.html>
12683#[repr(C)]
12684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12685pub struct PerformanceQueryReservationInfoKHR {
12686    pub s_type: StructureType,
12687    pub next: *const c_void,
12688    pub max_performance_queries_per_pool: u32,
12689}
12690
12691impl Default for PerformanceQueryReservationInfoKHR {
12692    #[inline]
12693    fn default() -> Self {
12694        Self {
12695            s_type: StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR,
12696            next: ptr::null(),
12697            max_performance_queries_per_pool: u32::default(),
12698        }
12699    }
12700}
12701
12702unsafe impl Send for PerformanceQueryReservationInfoKHR {}
12703unsafe impl Sync for PerformanceQueryReservationInfoKHR {}
12704
12705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html>
12706#[repr(C)]
12707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12708pub struct PerformanceQuerySubmitInfoKHR {
12709    pub s_type: StructureType,
12710    pub next: *const c_void,
12711    pub counter_pass_index: u32,
12712}
12713
12714impl Default for PerformanceQuerySubmitInfoKHR {
12715    #[inline]
12716    fn default() -> Self {
12717        Self {
12718            s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
12719            next: ptr::null(),
12720            counter_pass_index: u32::default(),
12721        }
12722    }
12723}
12724
12725unsafe impl Send for PerformanceQuerySubmitInfoKHR {}
12726unsafe impl Sync for PerformanceQuerySubmitInfoKHR {}
12727
12728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html>
12729#[repr(C)]
12730#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12731pub struct PerformanceStreamMarkerInfoINTEL {
12732    pub s_type: StructureType,
12733    pub next: *const c_void,
12734    pub marker: u32,
12735}
12736
12737impl Default for PerformanceStreamMarkerInfoINTEL {
12738    #[inline]
12739    fn default() -> Self {
12740        Self {
12741            s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
12742            next: ptr::null(),
12743            marker: u32::default(),
12744        }
12745    }
12746}
12747
12748unsafe impl Send for PerformanceStreamMarkerInfoINTEL {}
12749unsafe impl Sync for PerformanceStreamMarkerInfoINTEL {}
12750
12751/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html>
12752#[repr(C)]
12753#[derive(Copy, Clone, Default, Debug)]
12754pub struct PerformanceValueINTEL {
12755    pub type_: PerformanceValueTypeINTEL,
12756    pub data: PerformanceValueDataINTEL,
12757}
12758
12759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html>
12760#[repr(C)]
12761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12762pub struct PhysicalDevice16BitStorageFeatures {
12763    pub s_type: StructureType,
12764    pub next: *mut c_void,
12765    pub storage_buffer_16bit_access: Bool32,
12766    pub uniform_and_storage_buffer_16bit_access: Bool32,
12767    pub storage_push_constant16: Bool32,
12768    pub storage_input_output16: Bool32,
12769}
12770
12771impl Default for PhysicalDevice16BitStorageFeatures {
12772    #[inline]
12773    fn default() -> Self {
12774        Self {
12775            s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
12776            next: ptr::null_mut(),
12777            storage_buffer_16bit_access: Bool32::default(),
12778            uniform_and_storage_buffer_16bit_access: Bool32::default(),
12779            storage_push_constant16: Bool32::default(),
12780            storage_input_output16: Bool32::default(),
12781        }
12782    }
12783}
12784
12785unsafe impl Send for PhysicalDevice16BitStorageFeatures {}
12786unsafe impl Sync for PhysicalDevice16BitStorageFeatures {}
12787
12788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>
12789#[repr(C)]
12790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12791pub struct PhysicalDevice4444FormatsFeaturesEXT {
12792    pub s_type: StructureType,
12793    pub next: *mut c_void,
12794    pub format_a4_r4_g4_b4: Bool32,
12795    pub format_a4_b4_g4_r4: Bool32,
12796}
12797
12798impl Default for PhysicalDevice4444FormatsFeaturesEXT {
12799    #[inline]
12800    fn default() -> Self {
12801        Self {
12802            s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
12803            next: ptr::null_mut(),
12804            format_a4_r4_g4_b4: Bool32::default(),
12805            format_a4_b4_g4_r4: Bool32::default(),
12806        }
12807    }
12808}
12809
12810unsafe impl Send for PhysicalDevice4444FormatsFeaturesEXT {}
12811unsafe impl Sync for PhysicalDevice4444FormatsFeaturesEXT {}
12812
12813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html>
12814#[repr(C)]
12815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12816pub struct PhysicalDevice8BitStorageFeatures {
12817    pub s_type: StructureType,
12818    pub next: *mut c_void,
12819    pub storage_buffer_8bit_access: Bool32,
12820    pub uniform_and_storage_buffer_8bit_access: Bool32,
12821    pub storage_push_constant8: Bool32,
12822}
12823
12824impl Default for PhysicalDevice8BitStorageFeatures {
12825    #[inline]
12826    fn default() -> Self {
12827        Self {
12828            s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
12829            next: ptr::null_mut(),
12830            storage_buffer_8bit_access: Bool32::default(),
12831            uniform_and_storage_buffer_8bit_access: Bool32::default(),
12832            storage_push_constant8: Bool32::default(),
12833        }
12834    }
12835}
12836
12837unsafe impl Send for PhysicalDevice8BitStorageFeatures {}
12838unsafe impl Sync for PhysicalDevice8BitStorageFeatures {}
12839
12840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>
12841#[repr(C)]
12842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12843pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
12844    pub s_type: StructureType,
12845    pub next: *mut c_void,
12846    pub decode_mode_shared_exponent: Bool32,
12847}
12848
12849impl Default for PhysicalDeviceASTCDecodeFeaturesEXT {
12850    #[inline]
12851    fn default() -> Self {
12852        Self {
12853            s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
12854            next: ptr::null_mut(),
12855            decode_mode_shared_exponent: Bool32::default(),
12856        }
12857    }
12858}
12859
12860unsafe impl Send for PhysicalDeviceASTCDecodeFeaturesEXT {}
12861unsafe impl Sync for PhysicalDeviceASTCDecodeFeaturesEXT {}
12862
12863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>
12864#[repr(C)]
12865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12866pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
12867    pub s_type: StructureType,
12868    pub next: *mut c_void,
12869    pub acceleration_structure: Bool32,
12870    pub acceleration_structure_capture_replay: Bool32,
12871    pub acceleration_structure_indirect_build: Bool32,
12872    pub acceleration_structure_host_commands: Bool32,
12873    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
12874}
12875
12876impl Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
12877    #[inline]
12878    fn default() -> Self {
12879        Self {
12880            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
12881            next: ptr::null_mut(),
12882            acceleration_structure: Bool32::default(),
12883            acceleration_structure_capture_replay: Bool32::default(),
12884            acceleration_structure_indirect_build: Bool32::default(),
12885            acceleration_structure_host_commands: Bool32::default(),
12886            descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
12887        }
12888    }
12889}
12890
12891unsafe impl Send for PhysicalDeviceAccelerationStructureFeaturesKHR {}
12892unsafe impl Sync for PhysicalDeviceAccelerationStructureFeaturesKHR {}
12893
12894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>
12895#[repr(C)]
12896#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12897pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
12898    pub s_type: StructureType,
12899    pub next: *mut c_void,
12900    pub max_geometry_count: u64,
12901    pub max_instance_count: u64,
12902    pub max_primitive_count: u64,
12903    pub max_per_stage_descriptor_acceleration_structures: u32,
12904    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
12905    pub max_descriptor_set_acceleration_structures: u32,
12906    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
12907    pub min_acceleration_structure_scratch_offset_alignment: u32,
12908}
12909
12910impl Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
12911    #[inline]
12912    fn default() -> Self {
12913        Self {
12914            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
12915            next: ptr::null_mut(),
12916            max_geometry_count: u64::default(),
12917            max_instance_count: u64::default(),
12918            max_primitive_count: u64::default(),
12919            max_per_stage_descriptor_acceleration_structures: u32::default(),
12920            max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
12921            max_descriptor_set_acceleration_structures: u32::default(),
12922            max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
12923            min_acceleration_structure_scratch_offset_alignment: u32::default(),
12924        }
12925    }
12926}
12927
12928unsafe impl Send for PhysicalDeviceAccelerationStructurePropertiesKHR {}
12929unsafe impl Sync for PhysicalDeviceAccelerationStructurePropertiesKHR {}
12930
12931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html>
12932#[repr(C)]
12933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12934pub struct PhysicalDeviceAddressBindingReportFeaturesEXT {
12935    pub s_type: StructureType,
12936    pub next: *mut c_void,
12937    pub report_address_binding: Bool32,
12938}
12939
12940impl Default for PhysicalDeviceAddressBindingReportFeaturesEXT {
12941    #[inline]
12942    fn default() -> Self {
12943        Self {
12944            s_type: StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT,
12945            next: ptr::null_mut(),
12946            report_address_binding: Bool32::default(),
12947        }
12948    }
12949}
12950
12951unsafe impl Send for PhysicalDeviceAddressBindingReportFeaturesEXT {}
12952unsafe impl Sync for PhysicalDeviceAddressBindingReportFeaturesEXT {}
12953
12954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html>
12955#[repr(C)]
12956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12957pub struct PhysicalDeviceAmigoProfilingFeaturesSEC {
12958    pub s_type: StructureType,
12959    pub next: *mut c_void,
12960    pub amigo_profiling: Bool32,
12961}
12962
12963impl Default for PhysicalDeviceAmigoProfilingFeaturesSEC {
12964    #[inline]
12965    fn default() -> Self {
12966        Self {
12967            s_type: StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC,
12968            next: ptr::null_mut(),
12969            amigo_profiling: Bool32::default(),
12970        }
12971    }
12972}
12973
12974unsafe impl Send for PhysicalDeviceAmigoProfilingFeaturesSEC {}
12975unsafe impl Sync for PhysicalDeviceAmigoProfilingFeaturesSEC {}
12976
12977/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html>
12978#[repr(C)]
12979#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12980pub struct PhysicalDeviceAntiLagFeaturesAMD {
12981    pub s_type: StructureType,
12982    pub next: *mut c_void,
12983    pub anti_lag: Bool32,
12984}
12985
12986impl Default for PhysicalDeviceAntiLagFeaturesAMD {
12987    #[inline]
12988    fn default() -> Self {
12989        Self {
12990            s_type: StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD,
12991            next: ptr::null_mut(),
12992            anti_lag: Bool32::default(),
12993        }
12994    }
12995}
12996
12997unsafe impl Send for PhysicalDeviceAntiLagFeaturesAMD {}
12998unsafe impl Sync for PhysicalDeviceAntiLagFeaturesAMD {}
12999
13000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html>
13001#[repr(C)]
13002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13003pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13004    pub s_type: StructureType,
13005    pub next: *mut c_void,
13006    pub attachment_feedback_loop_dynamic_state: Bool32,
13007}
13008
13009impl Default for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13010    #[inline]
13011    fn default() -> Self {
13012        Self {
13013            s_type:
13014                StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT,
13015            next: ptr::null_mut(),
13016            attachment_feedback_loop_dynamic_state: Bool32::default(),
13017        }
13018    }
13019}
13020
13021unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13022unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13023
13024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html>
13025#[repr(C)]
13026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13027pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13028    pub s_type: StructureType,
13029    pub next: *mut c_void,
13030    pub attachment_feedback_loop_layout: Bool32,
13031}
13032
13033impl Default for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13034    #[inline]
13035    fn default() -> Self {
13036        Self {
13037            s_type: StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT,
13038            next: ptr::null_mut(),
13039            attachment_feedback_loop_layout: Bool32::default(),
13040        }
13041    }
13042}
13043
13044unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13045unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13046
13047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>
13048#[repr(C)]
13049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13050pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13051    pub s_type: StructureType,
13052    pub next: *mut c_void,
13053    pub advanced_blend_coherent_operations: Bool32,
13054}
13055
13056impl Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13057    #[inline]
13058    fn default() -> Self {
13059        Self {
13060            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
13061            next: ptr::null_mut(),
13062            advanced_blend_coherent_operations: Bool32::default(),
13063        }
13064    }
13065}
13066
13067unsafe impl Send for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13068unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13069
13070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>
13071#[repr(C)]
13072#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13073pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13074    pub s_type: StructureType,
13075    pub next: *mut c_void,
13076    pub advanced_blend_max_color_attachments: u32,
13077    pub advanced_blend_independent_blend: Bool32,
13078    pub advanced_blend_non_premultiplied_src_color: Bool32,
13079    pub advanced_blend_non_premultiplied_dst_color: Bool32,
13080    pub advanced_blend_correlated_overlap: Bool32,
13081    pub advanced_blend_all_operations: Bool32,
13082}
13083
13084impl Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13085    #[inline]
13086    fn default() -> Self {
13087        Self {
13088            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
13089            next: ptr::null_mut(),
13090            advanced_blend_max_color_attachments: u32::default(),
13091            advanced_blend_independent_blend: Bool32::default(),
13092            advanced_blend_non_premultiplied_src_color: Bool32::default(),
13093            advanced_blend_non_premultiplied_dst_color: Bool32::default(),
13094            advanced_blend_correlated_overlap: Bool32::default(),
13095            advanced_blend_all_operations: Bool32::default(),
13096        }
13097    }
13098}
13099
13100unsafe impl Send for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13101unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13102
13103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>
13104#[repr(C)]
13105#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13106pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13107    pub s_type: StructureType,
13108    pub next: *mut c_void,
13109    pub border_color_swizzle: Bool32,
13110    pub border_color_swizzle_from_image: Bool32,
13111}
13112
13113impl Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13114    #[inline]
13115    fn default() -> Self {
13116        Self {
13117            s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
13118            next: ptr::null_mut(),
13119            border_color_swizzle: Bool32::default(),
13120            border_color_swizzle_from_image: Bool32::default(),
13121        }
13122    }
13123}
13124
13125unsafe impl Send for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13126unsafe impl Sync for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13127
13128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>
13129#[repr(C)]
13130#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13131pub struct PhysicalDeviceBufferDeviceAddressFeatures {
13132    pub s_type: StructureType,
13133    pub next: *mut c_void,
13134    pub buffer_device_address: Bool32,
13135    pub buffer_device_address_capture_replay: Bool32,
13136    pub buffer_device_address_multi_device: Bool32,
13137}
13138
13139impl Default for PhysicalDeviceBufferDeviceAddressFeatures {
13140    #[inline]
13141    fn default() -> Self {
13142        Self {
13143            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
13144            next: ptr::null_mut(),
13145            buffer_device_address: Bool32::default(),
13146            buffer_device_address_capture_replay: Bool32::default(),
13147            buffer_device_address_multi_device: Bool32::default(),
13148        }
13149    }
13150}
13151
13152unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeatures {}
13153unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeatures {}
13154
13155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>
13156#[repr(C)]
13157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13158pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13159    pub s_type: StructureType,
13160    pub next: *mut c_void,
13161    pub buffer_device_address: Bool32,
13162    pub buffer_device_address_capture_replay: Bool32,
13163    pub buffer_device_address_multi_device: Bool32,
13164}
13165
13166impl Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13167    #[inline]
13168    fn default() -> Self {
13169        Self {
13170            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
13171            next: ptr::null_mut(),
13172            buffer_device_address: Bool32::default(),
13173            buffer_device_address_capture_replay: Bool32::default(),
13174            buffer_device_address_multi_device: Bool32::default(),
13175        }
13176    }
13177}
13178
13179unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13180unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
13181
13182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html>
13183#[repr(C)]
13184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13185pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13186    pub s_type: StructureType,
13187    pub next: *mut c_void,
13188    pub cluster_acceleration_structure: Bool32,
13189}
13190
13191impl Default for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
13192    #[inline]
13193    fn default() -> Self {
13194        Self {
13195            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV,
13196            next: ptr::null_mut(),
13197            cluster_acceleration_structure: Bool32::default(),
13198        }
13199    }
13200}
13201
13202unsafe impl Send for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13203unsafe impl Sync for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
13204
13205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html>
13206#[repr(C)]
13207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13208pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13209    pub s_type: StructureType,
13210    pub next: *mut c_void,
13211    pub max_vertices_per_cluster: u32,
13212    pub max_triangles_per_cluster: u32,
13213    pub cluster_scratch_byte_alignment: u32,
13214    pub cluster_byte_alignment: u32,
13215    pub cluster_template_byte_alignment: u32,
13216    pub cluster_bottom_level_byte_alignment: u32,
13217    pub cluster_template_bounds_byte_alignment: u32,
13218    pub max_cluster_geometry_index: u32,
13219}
13220
13221impl Default for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
13222    #[inline]
13223    fn default() -> Self {
13224        Self {
13225            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV,
13226            next: ptr::null_mut(),
13227            max_vertices_per_cluster: u32::default(),
13228            max_triangles_per_cluster: u32::default(),
13229            cluster_scratch_byte_alignment: u32::default(),
13230            cluster_byte_alignment: u32::default(),
13231            cluster_template_byte_alignment: u32::default(),
13232            cluster_bottom_level_byte_alignment: u32::default(),
13233            cluster_template_bounds_byte_alignment: u32::default(),
13234            max_cluster_geometry_index: u32::default(),
13235        }
13236    }
13237}
13238
13239unsafe impl Send for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13240unsafe impl Sync for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
13241
13242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html>
13243#[repr(C)]
13244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13245pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13246    pub s_type: StructureType,
13247    pub next: *mut c_void,
13248    pub clusterculling_shader: Bool32,
13249    pub multiview_cluster_culling_shader: Bool32,
13250}
13251
13252impl Default for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
13253    #[inline]
13254    fn default() -> Self {
13255        Self {
13256            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
13257            next: ptr::null_mut(),
13258            clusterculling_shader: Bool32::default(),
13259            multiview_cluster_culling_shader: Bool32::default(),
13260        }
13261    }
13262}
13263
13264unsafe impl Send for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13265unsafe impl Sync for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
13266
13267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html>
13268#[repr(C)]
13269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13270pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13271    pub s_type: StructureType,
13272    pub next: *mut c_void,
13273    pub max_work_group_count: [u32; 3],
13274    pub max_work_group_size: [u32; 3],
13275    pub max_output_cluster_count: u32,
13276    pub indirect_buffer_offset_alignment: DeviceSize,
13277}
13278
13279impl Default for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
13280    #[inline]
13281    fn default() -> Self {
13282        Self {
13283            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
13284            next: ptr::null_mut(),
13285            max_work_group_count: [u32::default(); 3],
13286            max_work_group_size: [u32::default(); 3],
13287            max_output_cluster_count: u32::default(),
13288            indirect_buffer_offset_alignment: DeviceSize::default(),
13289        }
13290    }
13291}
13292
13293unsafe impl Send for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13294unsafe impl Sync for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
13295
13296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html>
13297#[repr(C)]
13298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13299pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13300    pub s_type: StructureType,
13301    pub next: *mut c_void,
13302    pub cluster_shading_rate: Bool32,
13303}
13304
13305impl Default for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
13306    #[inline]
13307    fn default() -> Self {
13308        Self {
13309            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
13310            next: ptr::null_mut(),
13311            cluster_shading_rate: Bool32::default(),
13312        }
13313    }
13314}
13315
13316unsafe impl Send for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13317unsafe impl Sync for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
13318
13319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>
13320#[repr(C)]
13321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13322pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
13323    pub s_type: StructureType,
13324    pub next: *mut c_void,
13325    pub device_coherent_memory: Bool32,
13326}
13327
13328impl Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
13329    #[inline]
13330    fn default() -> Self {
13331        Self {
13332            s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
13333            next: ptr::null_mut(),
13334            device_coherent_memory: Bool32::default(),
13335        }
13336    }
13337}
13338
13339unsafe impl Send for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13340unsafe impl Sync for PhysicalDeviceCoherentMemoryFeaturesAMD {}
13341
13342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>
13343#[repr(C)]
13344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13345pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
13346    pub s_type: StructureType,
13347    pub next: *mut c_void,
13348    pub color_write_enable: Bool32,
13349}
13350
13351impl Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
13352    #[inline]
13353    fn default() -> Self {
13354        Self {
13355            s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
13356            next: ptr::null_mut(),
13357            color_write_enable: Bool32::default(),
13358        }
13359    }
13360}
13361
13362unsafe impl Send for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13363unsafe impl Sync for PhysicalDeviceColorWriteEnableFeaturesEXT {}
13364
13365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html>
13366#[repr(C)]
13367#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13368pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13369    pub s_type: StructureType,
13370    pub next: *mut c_void,
13371    pub command_buffer_inheritance: Bool32,
13372}
13373
13374impl Default for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
13375    #[inline]
13376    fn default() -> Self {
13377        Self {
13378            s_type: StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV,
13379            next: ptr::null_mut(),
13380            command_buffer_inheritance: Bool32::default(),
13381        }
13382    }
13383}
13384
13385unsafe impl Send for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13386unsafe impl Sync for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
13387
13388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html>
13389#[repr(C)]
13390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13391pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13392    pub s_type: StructureType,
13393    pub next: *mut c_void,
13394    pub compute_derivative_group_quads: Bool32,
13395    pub compute_derivative_group_linear: Bool32,
13396}
13397
13398impl Default for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
13399    #[inline]
13400    fn default() -> Self {
13401        Self {
13402            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,
13403            next: ptr::null_mut(),
13404            compute_derivative_group_quads: Bool32::default(),
13405            compute_derivative_group_linear: Bool32::default(),
13406        }
13407    }
13408}
13409
13410unsafe impl Send for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13411unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
13412
13413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html>
13414#[repr(C)]
13415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13416pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13417    pub s_type: StructureType,
13418    pub next: *mut c_void,
13419    pub mesh_and_task_shader_derivatives: Bool32,
13420}
13421
13422impl Default for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
13423    #[inline]
13424    fn default() -> Self {
13425        Self {
13426            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR,
13427            next: ptr::null_mut(),
13428            mesh_and_task_shader_derivatives: Bool32::default(),
13429        }
13430    }
13431}
13432
13433unsafe impl Send for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13434unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
13435
13436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>
13437#[repr(C)]
13438#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13439pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
13440    pub s_type: StructureType,
13441    pub next: *mut c_void,
13442    pub conditional_rendering: Bool32,
13443    pub inherited_conditional_rendering: Bool32,
13444}
13445
13446impl Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
13447    #[inline]
13448    fn default() -> Self {
13449        Self {
13450            s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
13451            next: ptr::null_mut(),
13452            conditional_rendering: Bool32::default(),
13453            inherited_conditional_rendering: Bool32::default(),
13454        }
13455    }
13456}
13457
13458unsafe impl Send for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13459unsafe impl Sync for PhysicalDeviceConditionalRenderingFeaturesEXT {}
13460
13461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>
13462#[repr(C)]
13463#[derive(Copy, Clone, Debug, PartialEq)]
13464pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
13465    pub s_type: StructureType,
13466    pub next: *mut c_void,
13467    pub primitive_overestimation_size: f32,
13468    pub max_extra_primitive_overestimation_size: f32,
13469    pub extra_primitive_overestimation_size_granularity: f32,
13470    pub primitive_underestimation: Bool32,
13471    pub conservative_point_and_line_rasterization: Bool32,
13472    pub degenerate_triangles_rasterized: Bool32,
13473    pub degenerate_lines_rasterized: Bool32,
13474    pub fully_covered_fragment_shader_input_variable: Bool32,
13475    pub conservative_rasterization_post_depth_coverage: Bool32,
13476}
13477
13478impl Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
13479    #[inline]
13480    fn default() -> Self {
13481        Self {
13482            s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
13483            next: ptr::null_mut(),
13484            primitive_overestimation_size: f32::default(),
13485            max_extra_primitive_overestimation_size: f32::default(),
13486            extra_primitive_overestimation_size_granularity: f32::default(),
13487            primitive_underestimation: Bool32::default(),
13488            conservative_point_and_line_rasterization: Bool32::default(),
13489            degenerate_triangles_rasterized: Bool32::default(),
13490            degenerate_lines_rasterized: Bool32::default(),
13491            fully_covered_fragment_shader_input_variable: Bool32::default(),
13492            conservative_rasterization_post_depth_coverage: Bool32::default(),
13493        }
13494    }
13495}
13496
13497unsafe impl Send for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13498unsafe impl Sync for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
13499
13500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html>
13501#[repr(C)]
13502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13503pub struct PhysicalDeviceCooperativeMatrix2FeaturesNV {
13504    pub s_type: StructureType,
13505    pub next: *mut c_void,
13506    pub cooperative_matrix_workgroup_scope: Bool32,
13507    pub cooperative_matrix_flexible_dimensions: Bool32,
13508    pub cooperative_matrix_reductions: Bool32,
13509    pub cooperative_matrix_conversions: Bool32,
13510    pub cooperative_matrix_per_element_operations: Bool32,
13511    pub cooperative_matrix_tensor_addressing: Bool32,
13512    pub cooperative_matrix_block_loads: Bool32,
13513}
13514
13515impl Default for PhysicalDeviceCooperativeMatrix2FeaturesNV {
13516    #[inline]
13517    fn default() -> Self {
13518        Self {
13519            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV,
13520            next: ptr::null_mut(),
13521            cooperative_matrix_workgroup_scope: Bool32::default(),
13522            cooperative_matrix_flexible_dimensions: Bool32::default(),
13523            cooperative_matrix_reductions: Bool32::default(),
13524            cooperative_matrix_conversions: Bool32::default(),
13525            cooperative_matrix_per_element_operations: Bool32::default(),
13526            cooperative_matrix_tensor_addressing: Bool32::default(),
13527            cooperative_matrix_block_loads: Bool32::default(),
13528        }
13529    }
13530}
13531
13532unsafe impl Send for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13533unsafe impl Sync for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
13534
13535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html>
13536#[repr(C)]
13537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13538pub struct PhysicalDeviceCooperativeMatrix2PropertiesNV {
13539    pub s_type: StructureType,
13540    pub next: *mut c_void,
13541    pub cooperative_matrix_workgroup_scope_max_workgroup_size: u32,
13542    pub cooperative_matrix_flexible_dimensions_max_dimension: u32,
13543    pub cooperative_matrix_workgroup_scope_reserved_shared_memory: u32,
13544}
13545
13546impl Default for PhysicalDeviceCooperativeMatrix2PropertiesNV {
13547    #[inline]
13548    fn default() -> Self {
13549        Self {
13550            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV,
13551            next: ptr::null_mut(),
13552            cooperative_matrix_workgroup_scope_max_workgroup_size: u32::default(),
13553            cooperative_matrix_flexible_dimensions_max_dimension: u32::default(),
13554            cooperative_matrix_workgroup_scope_reserved_shared_memory: u32::default(),
13555        }
13556    }
13557}
13558
13559unsafe impl Send for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
13560unsafe impl Sync for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
13561
13562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html>
13563#[repr(C)]
13564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13565pub struct PhysicalDeviceCooperativeMatrixFeaturesKHR {
13566    pub s_type: StructureType,
13567    pub next: *mut c_void,
13568    pub cooperative_matrix: Bool32,
13569    pub cooperative_matrix_robust_buffer_access: Bool32,
13570}
13571
13572impl Default for PhysicalDeviceCooperativeMatrixFeaturesKHR {
13573    #[inline]
13574    fn default() -> Self {
13575        Self {
13576            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR,
13577            next: ptr::null_mut(),
13578            cooperative_matrix: Bool32::default(),
13579            cooperative_matrix_robust_buffer_access: Bool32::default(),
13580        }
13581    }
13582}
13583
13584unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
13585unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
13586
13587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>
13588#[repr(C)]
13589#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13590pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
13591    pub s_type: StructureType,
13592    pub next: *mut c_void,
13593    pub cooperative_matrix: Bool32,
13594    pub cooperative_matrix_robust_buffer_access: Bool32,
13595}
13596
13597impl Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
13598    #[inline]
13599    fn default() -> Self {
13600        Self {
13601            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
13602            next: ptr::null_mut(),
13603            cooperative_matrix: Bool32::default(),
13604            cooperative_matrix_robust_buffer_access: Bool32::default(),
13605        }
13606    }
13607}
13608
13609unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesNV {}
13610unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesNV {}
13611
13612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html>
13613#[repr(C)]
13614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13615pub struct PhysicalDeviceCooperativeMatrixPropertiesKHR {
13616    pub s_type: StructureType,
13617    pub next: *mut c_void,
13618    pub cooperative_matrix_supported_stages: ShaderStageFlags,
13619}
13620
13621impl Default for PhysicalDeviceCooperativeMatrixPropertiesKHR {
13622    #[inline]
13623    fn default() -> Self {
13624        Self {
13625            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR,
13626            next: ptr::null_mut(),
13627            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
13628        }
13629    }
13630}
13631
13632unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
13633unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
13634
13635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>
13636#[repr(C)]
13637#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13638pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
13639    pub s_type: StructureType,
13640    pub next: *mut c_void,
13641    pub cooperative_matrix_supported_stages: ShaderStageFlags,
13642}
13643
13644impl Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
13645    #[inline]
13646    fn default() -> Self {
13647        Self {
13648            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
13649            next: ptr::null_mut(),
13650            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
13651        }
13652    }
13653}
13654
13655unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesNV {}
13656unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesNV {}
13657
13658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html>
13659#[repr(C)]
13660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13661pub struct PhysicalDeviceCooperativeVectorFeaturesNV {
13662    pub s_type: StructureType,
13663    pub next: *mut c_void,
13664    pub cooperative_vector: Bool32,
13665    pub cooperative_vector_training: Bool32,
13666}
13667
13668impl Default for PhysicalDeviceCooperativeVectorFeaturesNV {
13669    #[inline]
13670    fn default() -> Self {
13671        Self {
13672            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV,
13673            next: ptr::null_mut(),
13674            cooperative_vector: Bool32::default(),
13675            cooperative_vector_training: Bool32::default(),
13676        }
13677    }
13678}
13679
13680unsafe impl Send for PhysicalDeviceCooperativeVectorFeaturesNV {}
13681unsafe impl Sync for PhysicalDeviceCooperativeVectorFeaturesNV {}
13682
13683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html>
13684#[repr(C)]
13685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13686pub struct PhysicalDeviceCooperativeVectorPropertiesNV {
13687    pub s_type: StructureType,
13688    pub next: *mut c_void,
13689    pub cooperative_vector_supported_stages: ShaderStageFlags,
13690    pub cooperative_vector_training_float16_accumulation: Bool32,
13691    pub cooperative_vector_training_float32_accumulation: Bool32,
13692    pub max_cooperative_vector_components: u32,
13693}
13694
13695impl Default for PhysicalDeviceCooperativeVectorPropertiesNV {
13696    #[inline]
13697    fn default() -> Self {
13698        Self {
13699            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV,
13700            next: ptr::null_mut(),
13701            cooperative_vector_supported_stages: ShaderStageFlags::default(),
13702            cooperative_vector_training_float16_accumulation: Bool32::default(),
13703            cooperative_vector_training_float32_accumulation: Bool32::default(),
13704            max_cooperative_vector_components: u32::default(),
13705        }
13706    }
13707}
13708
13709unsafe impl Send for PhysicalDeviceCooperativeVectorPropertiesNV {}
13710unsafe impl Sync for PhysicalDeviceCooperativeVectorPropertiesNV {}
13711
13712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR.html>
13713#[repr(C)]
13714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13715pub struct PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
13716    pub s_type: StructureType,
13717    pub next: *mut c_void,
13718    pub indirect_memory_copy: Bool32,
13719    pub indirect_memory_to_image_copy: Bool32,
13720}
13721
13722impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
13723    #[inline]
13724    fn default() -> Self {
13725        Self {
13726            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR,
13727            next: ptr::null_mut(),
13728            indirect_memory_copy: Bool32::default(),
13729            indirect_memory_to_image_copy: Bool32::default(),
13730        }
13731    }
13732}
13733
13734unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
13735unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
13736
13737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html>
13738#[repr(C)]
13739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13740pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNV {
13741    pub s_type: StructureType,
13742    pub next: *mut c_void,
13743    pub indirect_copy: Bool32,
13744}
13745
13746impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
13747    #[inline]
13748    fn default() -> Self {
13749        Self {
13750            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV,
13751            next: ptr::null_mut(),
13752            indirect_copy: Bool32::default(),
13753        }
13754    }
13755}
13756
13757unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
13758unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
13759
13760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR.html>
13761#[repr(C)]
13762#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13763pub struct PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
13764    pub s_type: StructureType,
13765    pub next: *mut c_void,
13766    pub supported_queues: QueueFlags,
13767}
13768
13769impl Default for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
13770    #[inline]
13771    fn default() -> Self {
13772        Self {
13773            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR,
13774            next: ptr::null_mut(),
13775            supported_queues: QueueFlags::default(),
13776        }
13777    }
13778}
13779
13780unsafe impl Send for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
13781unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
13782
13783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>
13784#[repr(C)]
13785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13786pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
13787    pub s_type: StructureType,
13788    pub next: *mut c_void,
13789    pub corner_sampled_image: Bool32,
13790}
13791
13792impl Default for PhysicalDeviceCornerSampledImageFeaturesNV {
13793    #[inline]
13794    fn default() -> Self {
13795        Self {
13796            s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
13797            next: ptr::null_mut(),
13798            corner_sampled_image: Bool32::default(),
13799        }
13800    }
13801}
13802
13803unsafe impl Send for PhysicalDeviceCornerSampledImageFeaturesNV {}
13804unsafe impl Sync for PhysicalDeviceCornerSampledImageFeaturesNV {}
13805
13806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>
13807#[repr(C)]
13808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13809pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
13810    pub s_type: StructureType,
13811    pub next: *mut c_void,
13812    pub coverage_reduction_mode: Bool32,
13813}
13814
13815impl Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
13816    #[inline]
13817    fn default() -> Self {
13818        Self {
13819            s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
13820            next: ptr::null_mut(),
13821            coverage_reduction_mode: Bool32::default(),
13822        }
13823    }
13824}
13825
13826unsafe impl Send for PhysicalDeviceCoverageReductionModeFeaturesNV {}
13827unsafe impl Sync for PhysicalDeviceCoverageReductionModeFeaturesNV {}
13828
13829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html>
13830#[repr(C)]
13831#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13832pub struct PhysicalDeviceCubicClampFeaturesQCOM {
13833    pub s_type: StructureType,
13834    pub next: *mut c_void,
13835    pub cubic_range_clamp: Bool32,
13836}
13837
13838impl Default for PhysicalDeviceCubicClampFeaturesQCOM {
13839    #[inline]
13840    fn default() -> Self {
13841        Self {
13842            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM,
13843            next: ptr::null_mut(),
13844            cubic_range_clamp: Bool32::default(),
13845        }
13846    }
13847}
13848
13849unsafe impl Send for PhysicalDeviceCubicClampFeaturesQCOM {}
13850unsafe impl Sync for PhysicalDeviceCubicClampFeaturesQCOM {}
13851
13852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html>
13853#[repr(C)]
13854#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13855pub struct PhysicalDeviceCubicWeightsFeaturesQCOM {
13856    pub s_type: StructureType,
13857    pub next: *mut c_void,
13858    pub selectable_cubic_weights: Bool32,
13859}
13860
13861impl Default for PhysicalDeviceCubicWeightsFeaturesQCOM {
13862    #[inline]
13863    fn default() -> Self {
13864        Self {
13865            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM,
13866            next: ptr::null_mut(),
13867            selectable_cubic_weights: Bool32::default(),
13868        }
13869    }
13870}
13871
13872unsafe impl Send for PhysicalDeviceCubicWeightsFeaturesQCOM {}
13873unsafe impl Sync for PhysicalDeviceCubicWeightsFeaturesQCOM {}
13874
13875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html>
13876#[repr(C)]
13877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13878pub struct PhysicalDeviceCudaKernelLaunchFeaturesNV {
13879    pub s_type: StructureType,
13880    pub next: *mut c_void,
13881    pub cuda_kernel_launch_features: Bool32,
13882}
13883
13884impl Default for PhysicalDeviceCudaKernelLaunchFeaturesNV {
13885    #[inline]
13886    fn default() -> Self {
13887        Self {
13888            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV,
13889            next: ptr::null_mut(),
13890            cuda_kernel_launch_features: Bool32::default(),
13891        }
13892    }
13893}
13894
13895unsafe impl Send for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
13896unsafe impl Sync for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
13897
13898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html>
13899#[repr(C)]
13900#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13901pub struct PhysicalDeviceCudaKernelLaunchPropertiesNV {
13902    pub s_type: StructureType,
13903    pub next: *mut c_void,
13904    pub compute_capability_minor: u32,
13905    pub compute_capability_major: u32,
13906}
13907
13908impl Default for PhysicalDeviceCudaKernelLaunchPropertiesNV {
13909    #[inline]
13910    fn default() -> Self {
13911        Self {
13912            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV,
13913            next: ptr::null_mut(),
13914            compute_capability_minor: u32::default(),
13915            compute_capability_major: u32::default(),
13916        }
13917    }
13918}
13919
13920unsafe impl Send for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
13921unsafe impl Sync for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
13922
13923/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>
13924#[repr(C)]
13925#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13926pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
13927    pub s_type: StructureType,
13928    pub next: *mut c_void,
13929    pub custom_border_colors: Bool32,
13930    pub custom_border_color_without_format: Bool32,
13931}
13932
13933impl Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
13934    #[inline]
13935    fn default() -> Self {
13936        Self {
13937            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
13938            next: ptr::null_mut(),
13939            custom_border_colors: Bool32::default(),
13940            custom_border_color_without_format: Bool32::default(),
13941        }
13942    }
13943}
13944
13945unsafe impl Send for PhysicalDeviceCustomBorderColorFeaturesEXT {}
13946unsafe impl Sync for PhysicalDeviceCustomBorderColorFeaturesEXT {}
13947
13948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>
13949#[repr(C)]
13950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13951pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
13952    pub s_type: StructureType,
13953    pub next: *mut c_void,
13954    pub max_custom_border_color_samplers: u32,
13955}
13956
13957impl Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
13958    #[inline]
13959    fn default() -> Self {
13960        Self {
13961            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
13962            next: ptr::null_mut(),
13963            max_custom_border_color_samplers: u32::default(),
13964        }
13965    }
13966}
13967
13968unsafe impl Send for PhysicalDeviceCustomBorderColorPropertiesEXT {}
13969unsafe impl Sync for PhysicalDeviceCustomBorderColorPropertiesEXT {}
13970
13971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphFeaturesARM.html>
13972#[repr(C)]
13973#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13974pub struct PhysicalDeviceDataGraphFeaturesARM {
13975    pub s_type: StructureType,
13976    pub next: *mut c_void,
13977    pub data_graph: Bool32,
13978    pub data_graph_update_after_bind: Bool32,
13979    pub data_graph_specialization_constants: Bool32,
13980    pub data_graph_descriptor_buffer: Bool32,
13981    pub data_graph_shader_module: Bool32,
13982}
13983
13984impl Default for PhysicalDeviceDataGraphFeaturesARM {
13985    #[inline]
13986    fn default() -> Self {
13987        Self {
13988            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM,
13989            next: ptr::null_mut(),
13990            data_graph: Bool32::default(),
13991            data_graph_update_after_bind: Bool32::default(),
13992            data_graph_specialization_constants: Bool32::default(),
13993            data_graph_descriptor_buffer: Bool32::default(),
13994            data_graph_shader_module: Bool32::default(),
13995        }
13996    }
13997}
13998
13999unsafe impl Send for PhysicalDeviceDataGraphFeaturesARM {}
14000unsafe impl Sync for PhysicalDeviceDataGraphFeaturesARM {}
14001
14002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationSupportARM.html>
14003#[repr(C)]
14004#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14005pub struct PhysicalDeviceDataGraphOperationSupportARM {
14006    pub operation_type: PhysicalDeviceDataGraphOperationTypeARM,
14007    pub name: StringArray<MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM>,
14008    pub version: u32,
14009}
14010
14011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineARM.html>
14012#[repr(C)]
14013#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14014pub struct PhysicalDeviceDataGraphProcessingEngineARM {
14015    pub type_: PhysicalDeviceDataGraphProcessingEngineTypeARM,
14016    pub is_foreign: Bool32,
14017}
14018
14019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>
14020#[repr(C)]
14021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14022pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14023    pub s_type: StructureType,
14024    pub next: *mut c_void,
14025    pub dedicated_allocation_image_aliasing: Bool32,
14026}
14027
14028impl Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14029    #[inline]
14030    fn default() -> Self {
14031        Self {
14032            s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
14033            next: ptr::null_mut(),
14034            dedicated_allocation_image_aliasing: Bool32::default(),
14035        }
14036    }
14037}
14038
14039unsafe impl Send for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14040unsafe impl Sync for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14041
14042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX.html>
14043#[repr(C)]
14044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14045pub struct PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14046    pub s_type: StructureType,
14047    pub next: *mut c_void,
14048    pub dense_geometry_format: Bool32,
14049}
14050
14051impl Default for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14052    #[inline]
14053    fn default() -> Self {
14054        Self {
14055            s_type: StructureType::PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX,
14056            next: ptr::null_mut(),
14057            dense_geometry_format: Bool32::default(),
14058        }
14059    }
14060}
14061
14062unsafe impl Send for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14063unsafe impl Sync for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14064
14065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html>
14066#[repr(C)]
14067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14068pub struct PhysicalDeviceDepthBiasControlFeaturesEXT {
14069    pub s_type: StructureType,
14070    pub next: *mut c_void,
14071    pub depth_bias_control: Bool32,
14072    pub least_representable_value_force_unorm_representation: Bool32,
14073    pub float_representation: Bool32,
14074    pub depth_bias_exact: Bool32,
14075}
14076
14077impl Default for PhysicalDeviceDepthBiasControlFeaturesEXT {
14078    #[inline]
14079    fn default() -> Self {
14080        Self {
14081            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT,
14082            next: ptr::null_mut(),
14083            depth_bias_control: Bool32::default(),
14084            least_representable_value_force_unorm_representation: Bool32::default(),
14085            float_representation: Bool32::default(),
14086            depth_bias_exact: Bool32::default(),
14087        }
14088    }
14089}
14090
14091unsafe impl Send for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14092unsafe impl Sync for PhysicalDeviceDepthBiasControlFeaturesEXT {}
14093
14094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html>
14095#[repr(C)]
14096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14097pub struct PhysicalDeviceDepthClampControlFeaturesEXT {
14098    pub s_type: StructureType,
14099    pub next: *mut c_void,
14100    pub depth_clamp_control: Bool32,
14101}
14102
14103impl Default for PhysicalDeviceDepthClampControlFeaturesEXT {
14104    #[inline]
14105    fn default() -> Self {
14106        Self {
14107            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT,
14108            next: ptr::null_mut(),
14109            depth_clamp_control: Bool32::default(),
14110        }
14111    }
14112}
14113
14114unsafe impl Send for PhysicalDeviceDepthClampControlFeaturesEXT {}
14115unsafe impl Sync for PhysicalDeviceDepthClampControlFeaturesEXT {}
14116
14117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html>
14118#[repr(C)]
14119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14120pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14121    pub s_type: StructureType,
14122    pub next: *mut c_void,
14123    pub depth_clamp_zero_one: Bool32,
14124}
14125
14126impl Default for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
14127    #[inline]
14128    fn default() -> Self {
14129        Self {
14130            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
14131            next: ptr::null_mut(),
14132            depth_clamp_zero_one: Bool32::default(),
14133        }
14134    }
14135}
14136
14137unsafe impl Send for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14138unsafe impl Sync for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
14139
14140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>
14141#[repr(C)]
14142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14143pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
14144    pub s_type: StructureType,
14145    pub next: *mut c_void,
14146    pub depth_clip_control: Bool32,
14147}
14148
14149impl Default for PhysicalDeviceDepthClipControlFeaturesEXT {
14150    #[inline]
14151    fn default() -> Self {
14152        Self {
14153            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
14154            next: ptr::null_mut(),
14155            depth_clip_control: Bool32::default(),
14156        }
14157    }
14158}
14159
14160unsafe impl Send for PhysicalDeviceDepthClipControlFeaturesEXT {}
14161unsafe impl Sync for PhysicalDeviceDepthClipControlFeaturesEXT {}
14162
14163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>
14164#[repr(C)]
14165#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14166pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
14167    pub s_type: StructureType,
14168    pub next: *mut c_void,
14169    pub depth_clip_enable: Bool32,
14170}
14171
14172impl Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
14173    #[inline]
14174    fn default() -> Self {
14175        Self {
14176            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
14177            next: ptr::null_mut(),
14178            depth_clip_enable: Bool32::default(),
14179        }
14180    }
14181}
14182
14183unsafe impl Send for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14184unsafe impl Sync for PhysicalDeviceDepthClipEnableFeaturesEXT {}
14185
14186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>
14187#[repr(C)]
14188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14189pub struct PhysicalDeviceDepthStencilResolveProperties {
14190    pub s_type: StructureType,
14191    pub next: *mut c_void,
14192    pub supported_depth_resolve_modes: ResolveModeFlags,
14193    pub supported_stencil_resolve_modes: ResolveModeFlags,
14194    pub independent_resolve_none: Bool32,
14195    pub independent_resolve: Bool32,
14196}
14197
14198impl Default for PhysicalDeviceDepthStencilResolveProperties {
14199    #[inline]
14200    fn default() -> Self {
14201        Self {
14202            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
14203            next: ptr::null_mut(),
14204            supported_depth_resolve_modes: ResolveModeFlags::default(),
14205            supported_stencil_resolve_modes: ResolveModeFlags::default(),
14206            independent_resolve_none: Bool32::default(),
14207            independent_resolve: Bool32::default(),
14208        }
14209    }
14210}
14211
14212unsafe impl Send for PhysicalDeviceDepthStencilResolveProperties {}
14213unsafe impl Sync for PhysicalDeviceDepthStencilResolveProperties {}
14214
14215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html>
14216#[repr(C)]
14217#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14218pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14219    pub s_type: StructureType,
14220    pub next: *mut c_void,
14221    pub combined_image_sampler_density_map_descriptor_size: usize,
14222}
14223
14224impl Default for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
14225    #[inline]
14226    fn default() -> Self {
14227        Self {
14228            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT,
14229            next: ptr::null_mut(),
14230            combined_image_sampler_density_map_descriptor_size: usize::default(),
14231        }
14232    }
14233}
14234
14235unsafe impl Send for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14236unsafe impl Sync for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
14237
14238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html>
14239#[repr(C)]
14240#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14241pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
14242    pub s_type: StructureType,
14243    pub next: *mut c_void,
14244    pub descriptor_buffer: Bool32,
14245    pub descriptor_buffer_capture_replay: Bool32,
14246    pub descriptor_buffer_image_layout_ignored: Bool32,
14247    pub descriptor_buffer_push_descriptors: Bool32,
14248}
14249
14250impl Default for PhysicalDeviceDescriptorBufferFeaturesEXT {
14251    #[inline]
14252    fn default() -> Self {
14253        Self {
14254            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
14255            next: ptr::null_mut(),
14256            descriptor_buffer: Bool32::default(),
14257            descriptor_buffer_capture_replay: Bool32::default(),
14258            descriptor_buffer_image_layout_ignored: Bool32::default(),
14259            descriptor_buffer_push_descriptors: Bool32::default(),
14260        }
14261    }
14262}
14263
14264unsafe impl Send for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14265unsafe impl Sync for PhysicalDeviceDescriptorBufferFeaturesEXT {}
14266
14267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html>
14268#[repr(C)]
14269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14270pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
14271    pub s_type: StructureType,
14272    pub next: *mut c_void,
14273    pub combined_image_sampler_descriptor_single_array: Bool32,
14274    pub bufferless_push_descriptors: Bool32,
14275    pub allow_sampler_image_view_post_submit_creation: Bool32,
14276    pub descriptor_buffer_offset_alignment: DeviceSize,
14277    pub max_descriptor_buffer_bindings: u32,
14278    pub max_resource_descriptor_buffer_bindings: u32,
14279    pub max_sampler_descriptor_buffer_bindings: u32,
14280    pub max_embedded_immutable_sampler_bindings: u32,
14281    pub max_embedded_immutable_samplers: u32,
14282    pub buffer_capture_replay_descriptor_data_size: usize,
14283    pub image_capture_replay_descriptor_data_size: usize,
14284    pub image_view_capture_replay_descriptor_data_size: usize,
14285    pub sampler_capture_replay_descriptor_data_size: usize,
14286    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
14287    pub sampler_descriptor_size: usize,
14288    pub combined_image_sampler_descriptor_size: usize,
14289    pub sampled_image_descriptor_size: usize,
14290    pub storage_image_descriptor_size: usize,
14291    pub uniform_texel_buffer_descriptor_size: usize,
14292    pub robust_uniform_texel_buffer_descriptor_size: usize,
14293    pub storage_texel_buffer_descriptor_size: usize,
14294    pub robust_storage_texel_buffer_descriptor_size: usize,
14295    pub uniform_buffer_descriptor_size: usize,
14296    pub robust_uniform_buffer_descriptor_size: usize,
14297    pub storage_buffer_descriptor_size: usize,
14298    pub robust_storage_buffer_descriptor_size: usize,
14299    pub input_attachment_descriptor_size: usize,
14300    pub acceleration_structure_descriptor_size: usize,
14301    pub max_sampler_descriptor_buffer_range: DeviceSize,
14302    pub max_resource_descriptor_buffer_range: DeviceSize,
14303    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
14304    pub resource_descriptor_buffer_address_space_size: DeviceSize,
14305    pub descriptor_buffer_address_space_size: DeviceSize,
14306}
14307
14308impl Default for PhysicalDeviceDescriptorBufferPropertiesEXT {
14309    #[inline]
14310    fn default() -> Self {
14311        Self {
14312            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT,
14313            next: ptr::null_mut(),
14314            combined_image_sampler_descriptor_single_array: Bool32::default(),
14315            bufferless_push_descriptors: Bool32::default(),
14316            allow_sampler_image_view_post_submit_creation: Bool32::default(),
14317            descriptor_buffer_offset_alignment: DeviceSize::default(),
14318            max_descriptor_buffer_bindings: u32::default(),
14319            max_resource_descriptor_buffer_bindings: u32::default(),
14320            max_sampler_descriptor_buffer_bindings: u32::default(),
14321            max_embedded_immutable_sampler_bindings: u32::default(),
14322            max_embedded_immutable_samplers: u32::default(),
14323            buffer_capture_replay_descriptor_data_size: usize::default(),
14324            image_capture_replay_descriptor_data_size: usize::default(),
14325            image_view_capture_replay_descriptor_data_size: usize::default(),
14326            sampler_capture_replay_descriptor_data_size: usize::default(),
14327            acceleration_structure_capture_replay_descriptor_data_size: usize::default(),
14328            sampler_descriptor_size: usize::default(),
14329            combined_image_sampler_descriptor_size: usize::default(),
14330            sampled_image_descriptor_size: usize::default(),
14331            storage_image_descriptor_size: usize::default(),
14332            uniform_texel_buffer_descriptor_size: usize::default(),
14333            robust_uniform_texel_buffer_descriptor_size: usize::default(),
14334            storage_texel_buffer_descriptor_size: usize::default(),
14335            robust_storage_texel_buffer_descriptor_size: usize::default(),
14336            uniform_buffer_descriptor_size: usize::default(),
14337            robust_uniform_buffer_descriptor_size: usize::default(),
14338            storage_buffer_descriptor_size: usize::default(),
14339            robust_storage_buffer_descriptor_size: usize::default(),
14340            input_attachment_descriptor_size: usize::default(),
14341            acceleration_structure_descriptor_size: usize::default(),
14342            max_sampler_descriptor_buffer_range: DeviceSize::default(),
14343            max_resource_descriptor_buffer_range: DeviceSize::default(),
14344            sampler_descriptor_buffer_address_space_size: DeviceSize::default(),
14345            resource_descriptor_buffer_address_space_size: DeviceSize::default(),
14346            descriptor_buffer_address_space_size: DeviceSize::default(),
14347        }
14348    }
14349}
14350
14351unsafe impl Send for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14352unsafe impl Sync for PhysicalDeviceDescriptorBufferPropertiesEXT {}
14353
14354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorFeaturesARM.html>
14355#[repr(C)]
14356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14357pub struct PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14358    pub s_type: StructureType,
14359    pub next: *mut c_void,
14360    pub descriptor_buffer_tensor_descriptors: Bool32,
14361}
14362
14363impl Default for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
14364    #[inline]
14365    fn default() -> Self {
14366        Self {
14367            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM,
14368            next: ptr::null_mut(),
14369            descriptor_buffer_tensor_descriptors: Bool32::default(),
14370        }
14371    }
14372}
14373
14374unsafe impl Send for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14375unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
14376
14377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorPropertiesARM.html>
14378#[repr(C)]
14379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14380pub struct PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14381    pub s_type: StructureType,
14382    pub next: *mut c_void,
14383    pub tensor_capture_replay_descriptor_data_size: usize,
14384    pub tensor_view_capture_replay_descriptor_data_size: usize,
14385    pub tensor_descriptor_size: usize,
14386}
14387
14388impl Default for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
14389    #[inline]
14390    fn default() -> Self {
14391        Self {
14392            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM,
14393            next: ptr::null_mut(),
14394            tensor_capture_replay_descriptor_data_size: usize::default(),
14395            tensor_view_capture_replay_descriptor_data_size: usize::default(),
14396            tensor_descriptor_size: usize::default(),
14397        }
14398    }
14399}
14400
14401unsafe impl Send for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14402unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
14403
14404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>
14405#[repr(C)]
14406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14407pub struct PhysicalDeviceDescriptorIndexingFeatures {
14408    pub s_type: StructureType,
14409    pub next: *mut c_void,
14410    pub shader_input_attachment_array_dynamic_indexing: Bool32,
14411    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
14412    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
14413    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
14414    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
14415    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
14416    pub shader_storage_image_array_non_uniform_indexing: Bool32,
14417    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
14418    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
14419    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
14420    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
14421    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
14422    pub descriptor_binding_storage_image_update_after_bind: Bool32,
14423    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
14424    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
14425    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
14426    pub descriptor_binding_update_unused_while_pending: Bool32,
14427    pub descriptor_binding_partially_bound: Bool32,
14428    pub descriptor_binding_variable_descriptor_count: Bool32,
14429    pub runtime_descriptor_array: Bool32,
14430}
14431
14432impl Default for PhysicalDeviceDescriptorIndexingFeatures {
14433    #[inline]
14434    fn default() -> Self {
14435        Self {
14436            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
14437            next: ptr::null_mut(),
14438            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
14439            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
14440            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
14441            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
14442            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
14443            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
14444            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
14445            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
14446            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14447            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
14448            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
14449            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
14450            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
14451            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
14452            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
14453            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
14454            descriptor_binding_update_unused_while_pending: Bool32::default(),
14455            descriptor_binding_partially_bound: Bool32::default(),
14456            descriptor_binding_variable_descriptor_count: Bool32::default(),
14457            runtime_descriptor_array: Bool32::default(),
14458        }
14459    }
14460}
14461
14462unsafe impl Send for PhysicalDeviceDescriptorIndexingFeatures {}
14463unsafe impl Sync for PhysicalDeviceDescriptorIndexingFeatures {}
14464
14465/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>
14466#[repr(C)]
14467#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14468pub struct PhysicalDeviceDescriptorIndexingProperties {
14469    pub s_type: StructureType,
14470    pub next: *mut c_void,
14471    pub max_update_after_bind_descriptors_in_all_pools: u32,
14472    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
14473    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
14474    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
14475    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
14476    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
14477    pub robust_buffer_access_update_after_bind: Bool32,
14478    pub quad_divergent_implicit_lod: Bool32,
14479    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
14480    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
14481    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
14482    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
14483    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
14484    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
14485    pub max_per_stage_update_after_bind_resources: u32,
14486    pub max_descriptor_set_update_after_bind_samplers: u32,
14487    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
14488    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
14489    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
14490    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
14491    pub max_descriptor_set_update_after_bind_sampled_images: u32,
14492    pub max_descriptor_set_update_after_bind_storage_images: u32,
14493    pub max_descriptor_set_update_after_bind_input_attachments: u32,
14494}
14495
14496impl Default for PhysicalDeviceDescriptorIndexingProperties {
14497    #[inline]
14498    fn default() -> Self {
14499        Self {
14500            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
14501            next: ptr::null_mut(),
14502            max_update_after_bind_descriptors_in_all_pools: u32::default(),
14503            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
14504            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
14505            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
14506            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
14507            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
14508            robust_buffer_access_update_after_bind: Bool32::default(),
14509            quad_divergent_implicit_lod: Bool32::default(),
14510            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
14511            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
14512            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
14513            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
14514            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
14515            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
14516            max_per_stage_update_after_bind_resources: u32::default(),
14517            max_descriptor_set_update_after_bind_samplers: u32::default(),
14518            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
14519            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
14520            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
14521            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
14522            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
14523            max_descriptor_set_update_after_bind_storage_images: u32::default(),
14524            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
14525        }
14526    }
14527}
14528
14529unsafe impl Send for PhysicalDeviceDescriptorIndexingProperties {}
14530unsafe impl Sync for PhysicalDeviceDescriptorIndexingProperties {}
14531
14532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html>
14533#[repr(C)]
14534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14535pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
14536    pub s_type: StructureType,
14537    pub next: *mut c_void,
14538    pub descriptor_pool_overallocation: Bool32,
14539}
14540
14541impl Default for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
14542    #[inline]
14543    fn default() -> Self {
14544        Self {
14545            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV,
14546            next: ptr::null_mut(),
14547            descriptor_pool_overallocation: Bool32::default(),
14548        }
14549    }
14550}
14551
14552unsafe impl Send for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
14553unsafe impl Sync for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
14554
14555/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html>
14556#[repr(C)]
14557#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14558pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
14559    pub s_type: StructureType,
14560    pub next: *mut c_void,
14561    pub descriptor_set_host_mapping: Bool32,
14562}
14563
14564impl Default for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
14565    #[inline]
14566    fn default() -> Self {
14567        Self {
14568            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,
14569            next: ptr::null_mut(),
14570            descriptor_set_host_mapping: Bool32::default(),
14571        }
14572    }
14573}
14574
14575unsafe impl Send for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
14576unsafe impl Sync for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
14577
14578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html>
14579#[repr(C)]
14580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14581pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
14582    pub s_type: StructureType,
14583    pub next: *mut c_void,
14584    pub device_generated_compute: Bool32,
14585    pub device_generated_compute_pipelines: Bool32,
14586    pub device_generated_compute_capture_replay: Bool32,
14587}
14588
14589impl Default for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
14590    #[inline]
14591    fn default() -> Self {
14592        Self {
14593            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV,
14594            next: ptr::null_mut(),
14595            device_generated_compute: Bool32::default(),
14596            device_generated_compute_pipelines: Bool32::default(),
14597            device_generated_compute_capture_replay: Bool32::default(),
14598        }
14599    }
14600}
14601
14602unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
14603unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
14604
14605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html>
14606#[repr(C)]
14607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14608pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
14609    pub s_type: StructureType,
14610    pub next: *mut c_void,
14611    pub device_generated_commands: Bool32,
14612    pub dynamic_generated_pipeline_layout: Bool32,
14613}
14614
14615impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
14616    #[inline]
14617    fn default() -> Self {
14618        Self {
14619            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT,
14620            next: ptr::null_mut(),
14621            device_generated_commands: Bool32::default(),
14622            dynamic_generated_pipeline_layout: Bool32::default(),
14623        }
14624    }
14625}
14626
14627unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
14628unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
14629
14630/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>
14631#[repr(C)]
14632#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14633pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
14634    pub s_type: StructureType,
14635    pub next: *mut c_void,
14636    pub device_generated_commands: Bool32,
14637}
14638
14639impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
14640    #[inline]
14641    fn default() -> Self {
14642        Self {
14643            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
14644            next: ptr::null_mut(),
14645            device_generated_commands: Bool32::default(),
14646        }
14647    }
14648}
14649
14650unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
14651unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
14652
14653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html>
14654#[repr(C)]
14655#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14656pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
14657    pub s_type: StructureType,
14658    pub next: *mut c_void,
14659    pub max_indirect_pipeline_count: u32,
14660    pub max_indirect_shader_object_count: u32,
14661    pub max_indirect_sequence_count: u32,
14662    pub max_indirect_commands_token_count: u32,
14663    pub max_indirect_commands_token_offset: u32,
14664    pub max_indirect_commands_indirect_stride: u32,
14665    pub supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT,
14666    pub supported_indirect_commands_shader_stages: ShaderStageFlags,
14667    pub supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags,
14668    pub supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags,
14669    pub device_generated_commands_transform_feedback: Bool32,
14670    pub device_generated_commands_multi_draw_indirect_count: Bool32,
14671}
14672
14673impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
14674    #[inline]
14675    fn default() -> Self {
14676        Self {
14677            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT,
14678            next: ptr::null_mut(),
14679            max_indirect_pipeline_count: u32::default(),
14680            max_indirect_shader_object_count: u32::default(),
14681            max_indirect_sequence_count: u32::default(),
14682            max_indirect_commands_token_count: u32::default(),
14683            max_indirect_commands_token_offset: u32::default(),
14684            max_indirect_commands_indirect_stride: u32::default(),
14685            supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT::default(),
14686            supported_indirect_commands_shader_stages: ShaderStageFlags::default(),
14687            supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags::default(),
14688            supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags::default(),
14689            device_generated_commands_transform_feedback: Bool32::default(),
14690            device_generated_commands_multi_draw_indirect_count: Bool32::default(),
14691        }
14692    }
14693}
14694
14695unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
14696unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
14697
14698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>
14699#[repr(C)]
14700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14701pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
14702    pub s_type: StructureType,
14703    pub next: *mut c_void,
14704    pub max_graphics_shader_group_count: u32,
14705    pub max_indirect_sequence_count: u32,
14706    pub max_indirect_commands_token_count: u32,
14707    pub max_indirect_commands_stream_count: u32,
14708    pub max_indirect_commands_token_offset: u32,
14709    pub max_indirect_commands_stream_stride: u32,
14710    pub min_sequences_count_buffer_offset_alignment: u32,
14711    pub min_sequences_index_buffer_offset_alignment: u32,
14712    pub min_indirect_commands_buffer_offset_alignment: u32,
14713}
14714
14715impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
14716    #[inline]
14717    fn default() -> Self {
14718        Self {
14719            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
14720            next: ptr::null_mut(),
14721            max_graphics_shader_group_count: u32::default(),
14722            max_indirect_sequence_count: u32::default(),
14723            max_indirect_commands_token_count: u32::default(),
14724            max_indirect_commands_stream_count: u32::default(),
14725            max_indirect_commands_token_offset: u32::default(),
14726            max_indirect_commands_stream_stride: u32::default(),
14727            min_sequences_count_buffer_offset_alignment: u32::default(),
14728            min_sequences_index_buffer_offset_alignment: u32::default(),
14729            min_indirect_commands_buffer_offset_alignment: u32::default(),
14730        }
14731    }
14732}
14733
14734unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
14735unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
14736
14737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>
14738#[repr(C)]
14739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14740pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
14741    pub s_type: StructureType,
14742    pub next: *mut c_void,
14743    pub device_memory_report: Bool32,
14744}
14745
14746impl Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
14747    #[inline]
14748    fn default() -> Self {
14749        Self {
14750            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
14751            next: ptr::null_mut(),
14752            device_memory_report: Bool32::default(),
14753        }
14754    }
14755}
14756
14757unsafe impl Send for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
14758unsafe impl Sync for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
14759
14760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>
14761#[repr(C)]
14762#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14763pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
14764    pub s_type: StructureType,
14765    pub next: *mut c_void,
14766    pub diagnostics_config: Bool32,
14767}
14768
14769impl Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
14770    #[inline]
14771    fn default() -> Self {
14772        Self {
14773            s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
14774            next: ptr::null_mut(),
14775            diagnostics_config: Bool32::default(),
14776        }
14777    }
14778}
14779
14780unsafe impl Send for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
14781unsafe impl Sync for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
14782
14783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>
14784#[repr(C)]
14785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14786pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
14787    pub s_type: StructureType,
14788    pub next: *mut c_void,
14789    pub max_discard_rectangles: u32,
14790}
14791
14792impl Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
14793    #[inline]
14794    fn default() -> Self {
14795        Self {
14796            s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
14797            next: ptr::null_mut(),
14798            max_discard_rectangles: u32::default(),
14799        }
14800    }
14801}
14802
14803unsafe impl Send for PhysicalDeviceDiscardRectanglePropertiesEXT {}
14804unsafe impl Sync for PhysicalDeviceDiscardRectanglePropertiesEXT {}
14805
14806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html>
14807#[repr(C)]
14808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14809pub struct PhysicalDeviceDisplacementMicromapFeaturesNV {
14810    pub s_type: StructureType,
14811    pub next: *mut c_void,
14812    pub displacement_micromap: Bool32,
14813}
14814
14815impl Default for PhysicalDeviceDisplacementMicromapFeaturesNV {
14816    #[inline]
14817    fn default() -> Self {
14818        Self {
14819            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV,
14820            next: ptr::null_mut(),
14821            displacement_micromap: Bool32::default(),
14822        }
14823    }
14824}
14825
14826unsafe impl Send for PhysicalDeviceDisplacementMicromapFeaturesNV {}
14827unsafe impl Sync for PhysicalDeviceDisplacementMicromapFeaturesNV {}
14828
14829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html>
14830#[repr(C)]
14831#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14832pub struct PhysicalDeviceDisplacementMicromapPropertiesNV {
14833    pub s_type: StructureType,
14834    pub next: *mut c_void,
14835    pub max_displacement_micromap_subdivision_level: u32,
14836}
14837
14838impl Default for PhysicalDeviceDisplacementMicromapPropertiesNV {
14839    #[inline]
14840    fn default() -> Self {
14841        Self {
14842            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV,
14843            next: ptr::null_mut(),
14844            max_displacement_micromap_subdivision_level: u32::default(),
14845        }
14846    }
14847}
14848
14849unsafe impl Send for PhysicalDeviceDisplacementMicromapPropertiesNV {}
14850unsafe impl Sync for PhysicalDeviceDisplacementMicromapPropertiesNV {}
14851
14852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html>
14853#[repr(C)]
14854#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14855pub struct PhysicalDeviceDriverProperties {
14856    pub s_type: StructureType,
14857    pub next: *mut c_void,
14858    pub driver_id: DriverId,
14859    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
14860    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
14861    pub conformance_version: ConformanceVersion,
14862}
14863
14864impl Default for PhysicalDeviceDriverProperties {
14865    #[inline]
14866    fn default() -> Self {
14867        Self {
14868            s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
14869            next: ptr::null_mut(),
14870            driver_id: DriverId::default(),
14871            driver_name: StringArray::default(),
14872            driver_info: StringArray::default(),
14873            conformance_version: ConformanceVersion::default(),
14874        }
14875    }
14876}
14877
14878unsafe impl Send for PhysicalDeviceDriverProperties {}
14879unsafe impl Sync for PhysicalDeviceDriverProperties {}
14880
14881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>
14882#[repr(C)]
14883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14884pub struct PhysicalDeviceDrmPropertiesEXT {
14885    pub s_type: StructureType,
14886    pub next: *mut c_void,
14887    pub has_primary: Bool32,
14888    pub has_render: Bool32,
14889    pub primary_major: i64,
14890    pub primary_minor: i64,
14891    pub render_major: i64,
14892    pub render_minor: i64,
14893}
14894
14895impl Default for PhysicalDeviceDrmPropertiesEXT {
14896    #[inline]
14897    fn default() -> Self {
14898        Self {
14899            s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
14900            next: ptr::null_mut(),
14901            has_primary: Bool32::default(),
14902            has_render: Bool32::default(),
14903            primary_major: i64::default(),
14904            primary_minor: i64::default(),
14905            render_major: i64::default(),
14906            render_minor: i64::default(),
14907        }
14908    }
14909}
14910
14911unsafe impl Send for PhysicalDeviceDrmPropertiesEXT {}
14912unsafe impl Sync for PhysicalDeviceDrmPropertiesEXT {}
14913
14914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html>
14915#[repr(C)]
14916#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14917pub struct PhysicalDeviceDynamicRenderingFeatures {
14918    pub s_type: StructureType,
14919    pub next: *mut c_void,
14920    pub dynamic_rendering: Bool32,
14921}
14922
14923impl Default for PhysicalDeviceDynamicRenderingFeatures {
14924    #[inline]
14925    fn default() -> Self {
14926        Self {
14927            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
14928            next: ptr::null_mut(),
14929            dynamic_rendering: Bool32::default(),
14930        }
14931    }
14932}
14933
14934unsafe impl Send for PhysicalDeviceDynamicRenderingFeatures {}
14935unsafe impl Sync for PhysicalDeviceDynamicRenderingFeatures {}
14936
14937/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html>
14938#[repr(C)]
14939#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14940pub struct PhysicalDeviceDynamicRenderingLocalReadFeatures {
14941    pub s_type: StructureType,
14942    pub next: *mut c_void,
14943    pub dynamic_rendering_local_read: Bool32,
14944}
14945
14946impl Default for PhysicalDeviceDynamicRenderingLocalReadFeatures {
14947    #[inline]
14948    fn default() -> Self {
14949        Self {
14950            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,
14951            next: ptr::null_mut(),
14952            dynamic_rendering_local_read: Bool32::default(),
14953        }
14954    }
14955}
14956
14957unsafe impl Send for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
14958unsafe impl Sync for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
14959
14960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html>
14961#[repr(C)]
14962#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14963pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
14964    pub s_type: StructureType,
14965    pub next: *mut c_void,
14966    pub dynamic_rendering_unused_attachments: Bool32,
14967}
14968
14969impl Default for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
14970    #[inline]
14971    fn default() -> Self {
14972        Self {
14973            s_type:
14974                StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT,
14975            next: ptr::null_mut(),
14976            dynamic_rendering_unused_attachments: Bool32::default(),
14977        }
14978    }
14979}
14980
14981unsafe impl Send for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
14982unsafe impl Sync for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
14983
14984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>
14985#[repr(C)]
14986#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14987pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
14988    pub s_type: StructureType,
14989    pub next: *mut c_void,
14990    pub exclusive_scissor: Bool32,
14991}
14992
14993impl Default for PhysicalDeviceExclusiveScissorFeaturesNV {
14994    #[inline]
14995    fn default() -> Self {
14996        Self {
14997            s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
14998            next: ptr::null_mut(),
14999            exclusive_scissor: Bool32::default(),
15000        }
15001    }
15002}
15003
15004unsafe impl Send for PhysicalDeviceExclusiveScissorFeaturesNV {}
15005unsafe impl Sync for PhysicalDeviceExclusiveScissorFeaturesNV {}
15006
15007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>
15008#[repr(C)]
15009#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15010pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15011    pub s_type: StructureType,
15012    pub next: *mut c_void,
15013    pub extended_dynamic_state2: Bool32,
15014    pub extended_dynamic_state2_logic_op: Bool32,
15015    pub extended_dynamic_state2_patch_control_points: Bool32,
15016}
15017
15018impl Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
15019    #[inline]
15020    fn default() -> Self {
15021        Self {
15022            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
15023            next: ptr::null_mut(),
15024            extended_dynamic_state2: Bool32::default(),
15025            extended_dynamic_state2_logic_op: Bool32::default(),
15026            extended_dynamic_state2_patch_control_points: Bool32::default(),
15027        }
15028    }
15029}
15030
15031unsafe impl Send for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15032unsafe impl Sync for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
15033
15034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html>
15035#[repr(C)]
15036#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15037pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15038    pub s_type: StructureType,
15039    pub next: *mut c_void,
15040    pub extended_dynamic_state3_tessellation_domain_origin: Bool32,
15041    pub extended_dynamic_state_3depth_clamp_enable: Bool32,
15042    pub extended_dynamic_state3_polygon_mode: Bool32,
15043    pub extended_dynamic_state3_rasterization_samples: Bool32,
15044    pub extended_dynamic_state3_sample_mask: Bool32,
15045    pub extended_dynamic_state3_alpha_to_coverage_enable: Bool32,
15046    pub extended_dynamic_state3_alpha_to_one_enable: Bool32,
15047    pub extended_dynamic_state3_logic_op_enable: Bool32,
15048    pub extended_dynamic_state3_color_blend_enable: Bool32,
15049    pub extended_dynamic_state3_color_blend_equation: Bool32,
15050    pub extended_dynamic_state3_color_write_mask: Bool32,
15051    pub extended_dynamic_state3_rasterization_stream: Bool32,
15052    pub extended_dynamic_state3_conservative_rasterization_mode: Bool32,
15053    pub extended_dynamic_state3_extra_primitive_overestimation_size: Bool32,
15054    pub extended_dynamic_state_3depth_clip_enable: Bool32,
15055    pub extended_dynamic_state3_sample_locations_enable: Bool32,
15056    pub extended_dynamic_state3_color_blend_advanced: Bool32,
15057    pub extended_dynamic_state3_provoking_vertex_mode: Bool32,
15058    pub extended_dynamic_state3_line_rasterization_mode: Bool32,
15059    pub extended_dynamic_state3_line_stipple_enable: Bool32,
15060    pub extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32,
15061    pub extended_dynamic_state3_viewport_w_scaling_enable: Bool32,
15062    pub extended_dynamic_state3_viewport_swizzle: Bool32,
15063    pub extended_dynamic_state3_coverage_to_color_enable: Bool32,
15064    pub extended_dynamic_state3_coverage_to_color_location: Bool32,
15065    pub extended_dynamic_state3_coverage_modulation_mode: Bool32,
15066    pub extended_dynamic_state3_coverage_modulation_table_enable: Bool32,
15067    pub extended_dynamic_state3_coverage_modulation_table: Bool32,
15068    pub extended_dynamic_state3_coverage_reduction_mode: Bool32,
15069    pub extended_dynamic_state3_representative_fragment_test_enable: Bool32,
15070    pub extended_dynamic_state3_shading_rate_image_enable: Bool32,
15071}
15072
15073impl Default for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
15074    #[inline]
15075    fn default() -> Self {
15076        Self {
15077            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
15078            next: ptr::null_mut(),
15079            extended_dynamic_state3_tessellation_domain_origin: Bool32::default(),
15080            extended_dynamic_state_3depth_clamp_enable: Bool32::default(),
15081            extended_dynamic_state3_polygon_mode: Bool32::default(),
15082            extended_dynamic_state3_rasterization_samples: Bool32::default(),
15083            extended_dynamic_state3_sample_mask: Bool32::default(),
15084            extended_dynamic_state3_alpha_to_coverage_enable: Bool32::default(),
15085            extended_dynamic_state3_alpha_to_one_enable: Bool32::default(),
15086            extended_dynamic_state3_logic_op_enable: Bool32::default(),
15087            extended_dynamic_state3_color_blend_enable: Bool32::default(),
15088            extended_dynamic_state3_color_blend_equation: Bool32::default(),
15089            extended_dynamic_state3_color_write_mask: Bool32::default(),
15090            extended_dynamic_state3_rasterization_stream: Bool32::default(),
15091            extended_dynamic_state3_conservative_rasterization_mode: Bool32::default(),
15092            extended_dynamic_state3_extra_primitive_overestimation_size: Bool32::default(),
15093            extended_dynamic_state_3depth_clip_enable: Bool32::default(),
15094            extended_dynamic_state3_sample_locations_enable: Bool32::default(),
15095            extended_dynamic_state3_color_blend_advanced: Bool32::default(),
15096            extended_dynamic_state3_provoking_vertex_mode: Bool32::default(),
15097            extended_dynamic_state3_line_rasterization_mode: Bool32::default(),
15098            extended_dynamic_state3_line_stipple_enable: Bool32::default(),
15099            extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32::default(),
15100            extended_dynamic_state3_viewport_w_scaling_enable: Bool32::default(),
15101            extended_dynamic_state3_viewport_swizzle: Bool32::default(),
15102            extended_dynamic_state3_coverage_to_color_enable: Bool32::default(),
15103            extended_dynamic_state3_coverage_to_color_location: Bool32::default(),
15104            extended_dynamic_state3_coverage_modulation_mode: Bool32::default(),
15105            extended_dynamic_state3_coverage_modulation_table_enable: Bool32::default(),
15106            extended_dynamic_state3_coverage_modulation_table: Bool32::default(),
15107            extended_dynamic_state3_coverage_reduction_mode: Bool32::default(),
15108            extended_dynamic_state3_representative_fragment_test_enable: Bool32::default(),
15109            extended_dynamic_state3_shading_rate_image_enable: Bool32::default(),
15110        }
15111    }
15112}
15113
15114unsafe impl Send for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15115unsafe impl Sync for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
15116
15117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html>
15118#[repr(C)]
15119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15120pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15121    pub s_type: StructureType,
15122    pub next: *mut c_void,
15123    pub dynamic_primitive_topology_unrestricted: Bool32,
15124}
15125
15126impl Default for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
15127    #[inline]
15128    fn default() -> Self {
15129        Self {
15130            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT,
15131            next: ptr::null_mut(),
15132            dynamic_primitive_topology_unrestricted: Bool32::default(),
15133        }
15134    }
15135}
15136
15137unsafe impl Send for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15138unsafe impl Sync for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
15139
15140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>
15141#[repr(C)]
15142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15143pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15144    pub s_type: StructureType,
15145    pub next: *mut c_void,
15146    pub extended_dynamic_state: Bool32,
15147}
15148
15149impl Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
15150    #[inline]
15151    fn default() -> Self {
15152        Self {
15153            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
15154            next: ptr::null_mut(),
15155            extended_dynamic_state: Bool32::default(),
15156        }
15157    }
15158}
15159
15160unsafe impl Send for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15161unsafe impl Sync for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
15162
15163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html>
15164#[repr(C)]
15165#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15166pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15167    pub s_type: StructureType,
15168    pub next: *mut c_void,
15169    pub extended_sparse_address_space: Bool32,
15170}
15171
15172impl Default for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
15173    #[inline]
15174    fn default() -> Self {
15175        Self {
15176            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV,
15177            next: ptr::null_mut(),
15178            extended_sparse_address_space: Bool32::default(),
15179        }
15180    }
15181}
15182
15183unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15184unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
15185
15186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html>
15187#[repr(C)]
15188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15189pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15190    pub s_type: StructureType,
15191    pub next: *mut c_void,
15192    pub extended_sparse_address_space_size: DeviceSize,
15193    pub extended_sparse_image_usage_flags: ImageUsageFlags,
15194    pub extended_sparse_buffer_usage_flags: BufferUsageFlags,
15195}
15196
15197impl Default for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
15198    #[inline]
15199    fn default() -> Self {
15200        Self {
15201            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
15202            next: ptr::null_mut(),
15203            extended_sparse_address_space_size: DeviceSize::default(),
15204            extended_sparse_image_usage_flags: ImageUsageFlags::default(),
15205            extended_sparse_buffer_usage_flags: BufferUsageFlags::default(),
15206        }
15207    }
15208}
15209
15210unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15211unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
15212
15213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html>
15214#[repr(C)]
15215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15216pub struct PhysicalDeviceExternalBufferInfo {
15217    pub s_type: StructureType,
15218    pub next: *const c_void,
15219    pub flags: BufferCreateFlags,
15220    pub usage: BufferUsageFlags,
15221    pub handle_type: ExternalMemoryHandleTypeFlags,
15222}
15223
15224impl Default for PhysicalDeviceExternalBufferInfo {
15225    #[inline]
15226    fn default() -> Self {
15227        Self {
15228            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
15229            next: ptr::null(),
15230            flags: BufferCreateFlags::default(),
15231            usage: BufferUsageFlags::default(),
15232            handle_type: ExternalMemoryHandleTypeFlags::default(),
15233        }
15234    }
15235}
15236
15237unsafe impl Send for PhysicalDeviceExternalBufferInfo {}
15238unsafe impl Sync for PhysicalDeviceExternalBufferInfo {}
15239
15240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalComputeQueuePropertiesNV.html>
15241#[repr(C)]
15242#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15243pub struct PhysicalDeviceExternalComputeQueuePropertiesNV {
15244    pub s_type: StructureType,
15245    pub next: *mut c_void,
15246    pub external_data_size: u32,
15247    pub max_external_queues: u32,
15248}
15249
15250impl Default for PhysicalDeviceExternalComputeQueuePropertiesNV {
15251    #[inline]
15252    fn default() -> Self {
15253        Self {
15254            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV,
15255            next: ptr::null_mut(),
15256            external_data_size: u32::default(),
15257            max_external_queues: u32::default(),
15258        }
15259    }
15260}
15261
15262unsafe impl Send for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15263unsafe impl Sync for PhysicalDeviceExternalComputeQueuePropertiesNV {}
15264
15265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html>
15266#[repr(C)]
15267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15268pub struct PhysicalDeviceExternalFenceInfo {
15269    pub s_type: StructureType,
15270    pub next: *const c_void,
15271    pub handle_type: ExternalFenceHandleTypeFlags,
15272}
15273
15274impl Default for PhysicalDeviceExternalFenceInfo {
15275    #[inline]
15276    fn default() -> Self {
15277        Self {
15278            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
15279            next: ptr::null(),
15280            handle_type: ExternalFenceHandleTypeFlags::default(),
15281        }
15282    }
15283}
15284
15285unsafe impl Send for PhysicalDeviceExternalFenceInfo {}
15286unsafe impl Sync for PhysicalDeviceExternalFenceInfo {}
15287
15288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html>
15289#[repr(C)]
15290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15291pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15292    pub s_type: StructureType,
15293    pub next: *mut c_void,
15294    pub external_format_resolve: Bool32,
15295}
15296
15297impl Default for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
15298    #[inline]
15299    fn default() -> Self {
15300        Self {
15301            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID,
15302            next: ptr::null_mut(),
15303            external_format_resolve: Bool32::default(),
15304        }
15305    }
15306}
15307
15308unsafe impl Send for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15309unsafe impl Sync for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
15310
15311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html>
15312#[repr(C)]
15313#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15314pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15315    pub s_type: StructureType,
15316    pub next: *mut c_void,
15317    pub null_color_attachment_with_external_format_resolve: Bool32,
15318    pub external_format_resolve_chroma_offset_x: ChromaLocation,
15319    pub external_format_resolve_chroma_offset_y: ChromaLocation,
15320}
15321
15322impl Default for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
15323    #[inline]
15324    fn default() -> Self {
15325        Self {
15326            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID,
15327            next: ptr::null_mut(),
15328            null_color_attachment_with_external_format_resolve: Bool32::default(),
15329            external_format_resolve_chroma_offset_x: ChromaLocation::default(),
15330            external_format_resolve_chroma_offset_y: ChromaLocation::default(),
15331        }
15332    }
15333}
15334
15335unsafe impl Send for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15336unsafe impl Sync for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
15337
15338/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>
15339#[repr(C)]
15340#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15341pub struct PhysicalDeviceExternalImageFormatInfo {
15342    pub s_type: StructureType,
15343    pub next: *const c_void,
15344    pub handle_type: ExternalMemoryHandleTypeFlags,
15345}
15346
15347impl Default for PhysicalDeviceExternalImageFormatInfo {
15348    #[inline]
15349    fn default() -> Self {
15350        Self {
15351            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
15352            next: ptr::null(),
15353            handle_type: ExternalMemoryHandleTypeFlags::default(),
15354        }
15355    }
15356}
15357
15358unsafe impl Send for PhysicalDeviceExternalImageFormatInfo {}
15359unsafe impl Sync for PhysicalDeviceExternalImageFormatInfo {}
15360
15361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>
15362#[repr(C)]
15363#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15364pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
15365    pub s_type: StructureType,
15366    pub next: *mut c_void,
15367    pub min_imported_host_pointer_alignment: DeviceSize,
15368}
15369
15370impl Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
15371    #[inline]
15372    fn default() -> Self {
15373        Self {
15374            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
15375            next: ptr::null_mut(),
15376            min_imported_host_pointer_alignment: DeviceSize::default(),
15377        }
15378    }
15379}
15380
15381unsafe impl Send for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15382unsafe impl Sync for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
15383
15384/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>
15385#[repr(C)]
15386#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15387pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15388    pub s_type: StructureType,
15389    pub next: *mut c_void,
15390    pub external_memory_rdma: Bool32,
15391}
15392
15393impl Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
15394    #[inline]
15395    fn default() -> Self {
15396        Self {
15397            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
15398            next: ptr::null_mut(),
15399            external_memory_rdma: Bool32::default(),
15400        }
15401    }
15402}
15403
15404unsafe impl Send for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15405unsafe impl Sync for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
15406
15407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.html>
15408#[repr(C)]
15409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15410pub struct PhysicalDeviceExternalMemorySciBufFeaturesNV {
15411    pub s_type: StructureType,
15412    pub next: *mut c_void,
15413    pub sci_buf_import: Bool32,
15414    pub sci_buf_export: Bool32,
15415}
15416
15417impl Default for PhysicalDeviceExternalMemorySciBufFeaturesNV {
15418    #[inline]
15419    fn default() -> Self {
15420        Self {
15421            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
15422            next: ptr::null_mut(),
15423            sci_buf_import: Bool32::default(),
15424            sci_buf_export: Bool32::default(),
15425        }
15426    }
15427}
15428
15429unsafe impl Send for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15430unsafe impl Sync for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
15431
15432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html>
15433#[repr(C)]
15434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15435pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15436    pub s_type: StructureType,
15437    pub next: *mut c_void,
15438    pub screen_buffer_import: Bool32,
15439}
15440
15441impl Default for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
15442    #[inline]
15443    fn default() -> Self {
15444        Self {
15445            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX,
15446            next: ptr::null_mut(),
15447            screen_buffer_import: Bool32::default(),
15448        }
15449    }
15450}
15451
15452unsafe impl Send for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15453unsafe impl Sync for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
15454
15455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSync2FeaturesNV.html>
15456#[repr(C)]
15457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15458pub struct PhysicalDeviceExternalSciSync2FeaturesNV {
15459    pub s_type: StructureType,
15460    pub next: *mut c_void,
15461    pub sci_sync_fence: Bool32,
15462    pub sci_sync_semaphore2: Bool32,
15463    pub sci_sync_import: Bool32,
15464    pub sci_sync_export: Bool32,
15465}
15466
15467impl Default for PhysicalDeviceExternalSciSync2FeaturesNV {
15468    #[inline]
15469    fn default() -> Self {
15470        Self {
15471            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV,
15472            next: ptr::null_mut(),
15473            sci_sync_fence: Bool32::default(),
15474            sci_sync_semaphore2: Bool32::default(),
15475            sci_sync_import: Bool32::default(),
15476            sci_sync_export: Bool32::default(),
15477        }
15478    }
15479}
15480
15481unsafe impl Send for PhysicalDeviceExternalSciSync2FeaturesNV {}
15482unsafe impl Sync for PhysicalDeviceExternalSciSync2FeaturesNV {}
15483
15484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSyncFeaturesNV.html>
15485#[repr(C)]
15486#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15487pub struct PhysicalDeviceExternalSciSyncFeaturesNV {
15488    pub s_type: StructureType,
15489    pub next: *mut c_void,
15490    pub sci_sync_fence: Bool32,
15491    pub sci_sync_semaphore: Bool32,
15492    pub sci_sync_import: Bool32,
15493    pub sci_sync_export: Bool32,
15494}
15495
15496impl Default for PhysicalDeviceExternalSciSyncFeaturesNV {
15497    #[inline]
15498    fn default() -> Self {
15499        Self {
15500            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV,
15501            next: ptr::null_mut(),
15502            sci_sync_fence: Bool32::default(),
15503            sci_sync_semaphore: Bool32::default(),
15504            sci_sync_import: Bool32::default(),
15505            sci_sync_export: Bool32::default(),
15506        }
15507    }
15508}
15509
15510unsafe impl Send for PhysicalDeviceExternalSciSyncFeaturesNV {}
15511unsafe impl Sync for PhysicalDeviceExternalSciSyncFeaturesNV {}
15512
15513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>
15514#[repr(C)]
15515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15516pub struct PhysicalDeviceExternalSemaphoreInfo {
15517    pub s_type: StructureType,
15518    pub next: *const c_void,
15519    pub handle_type: ExternalSemaphoreHandleTypeFlags,
15520}
15521
15522impl Default for PhysicalDeviceExternalSemaphoreInfo {
15523    #[inline]
15524    fn default() -> Self {
15525        Self {
15526            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
15527            next: ptr::null(),
15528            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
15529        }
15530    }
15531}
15532
15533unsafe impl Send for PhysicalDeviceExternalSemaphoreInfo {}
15534unsafe impl Sync for PhysicalDeviceExternalSemaphoreInfo {}
15535
15536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalTensorInfoARM.html>
15537#[repr(C)]
15538#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15539pub struct PhysicalDeviceExternalTensorInfoARM {
15540    pub s_type: StructureType,
15541    pub next: *const c_void,
15542    pub flags: TensorCreateFlagsARM,
15543    pub description: *const TensorDescriptionARM,
15544    pub handle_type: ExternalMemoryHandleTypeFlags,
15545}
15546
15547impl Default for PhysicalDeviceExternalTensorInfoARM {
15548    #[inline]
15549    fn default() -> Self {
15550        Self {
15551            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM,
15552            next: ptr::null(),
15553            flags: TensorCreateFlagsARM::default(),
15554            description: ptr::null(),
15555            handle_type: ExternalMemoryHandleTypeFlags::default(),
15556        }
15557    }
15558}
15559
15560unsafe impl Send for PhysicalDeviceExternalTensorInfoARM {}
15561unsafe impl Sync for PhysicalDeviceExternalTensorInfoARM {}
15562
15563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html>
15564#[repr(C)]
15565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15566pub struct PhysicalDeviceFaultFeaturesEXT {
15567    pub s_type: StructureType,
15568    pub next: *mut c_void,
15569    pub device_fault: Bool32,
15570    pub device_fault_vendor_binary: Bool32,
15571}
15572
15573impl Default for PhysicalDeviceFaultFeaturesEXT {
15574    #[inline]
15575    fn default() -> Self {
15576        Self {
15577            s_type: StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT,
15578            next: ptr::null_mut(),
15579            device_fault: Bool32::default(),
15580            device_fault_vendor_binary: Bool32::default(),
15581        }
15582    }
15583}
15584
15585unsafe impl Send for PhysicalDeviceFaultFeaturesEXT {}
15586unsafe impl Sync for PhysicalDeviceFaultFeaturesEXT {}
15587
15588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html>
15589#[repr(C)]
15590#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
15591pub struct PhysicalDeviceFeatures {
15592    pub robust_buffer_access: Bool32,
15593    pub full_draw_index_uint32: Bool32,
15594    pub image_cube_array: Bool32,
15595    pub independent_blend: Bool32,
15596    pub geometry_shader: Bool32,
15597    pub tessellation_shader: Bool32,
15598    pub sample_rate_shading: Bool32,
15599    pub dual_src_blend: Bool32,
15600    pub logic_op: Bool32,
15601    pub multi_draw_indirect: Bool32,
15602    pub draw_indirect_first_instance: Bool32,
15603    pub depth_clamp: Bool32,
15604    pub depth_bias_clamp: Bool32,
15605    pub fill_mode_non_solid: Bool32,
15606    pub depth_bounds: Bool32,
15607    pub wide_lines: Bool32,
15608    pub large_points: Bool32,
15609    pub alpha_to_one: Bool32,
15610    pub multi_viewport: Bool32,
15611    pub sampler_anisotropy: Bool32,
15612    pub texture_compression_etc2: Bool32,
15613    pub texture_compression_astc_ldr: Bool32,
15614    pub texture_compression_bc: Bool32,
15615    pub occlusion_query_precise: Bool32,
15616    pub pipeline_statistics_query: Bool32,
15617    pub vertex_pipeline_stores_and_atomics: Bool32,
15618    pub fragment_stores_and_atomics: Bool32,
15619    pub shader_tessellation_and_geometry_point_size: Bool32,
15620    pub shader_image_gather_extended: Bool32,
15621    pub shader_storage_image_extended_formats: Bool32,
15622    pub shader_storage_image_multisample: Bool32,
15623    pub shader_storage_image_read_without_format: Bool32,
15624    pub shader_storage_image_write_without_format: Bool32,
15625    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
15626    pub shader_sampled_image_array_dynamic_indexing: Bool32,
15627    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
15628    pub shader_storage_image_array_dynamic_indexing: Bool32,
15629    pub shader_clip_distance: Bool32,
15630    pub shader_cull_distance: Bool32,
15631    pub shader_float64: Bool32,
15632    pub shader_int64: Bool32,
15633    pub shader_int16: Bool32,
15634    pub shader_resource_residency: Bool32,
15635    pub shader_resource_min_lod: Bool32,
15636    pub sparse_binding: Bool32,
15637    pub sparse_residency_buffer: Bool32,
15638    pub sparse_residency_image_2d: Bool32,
15639    pub sparse_residency_image_3d: Bool32,
15640    pub sparse_residency2_samples: Bool32,
15641    pub sparse_residency4_samples: Bool32,
15642    pub sparse_residency8_samples: Bool32,
15643    pub sparse_residency16_samples: Bool32,
15644    pub sparse_residency_aliased: Bool32,
15645    pub variable_multisample_rate: Bool32,
15646    pub inherited_queries: Bool32,
15647}
15648
15649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html>
15650#[repr(C)]
15651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15652pub struct PhysicalDeviceFeatures2 {
15653    pub s_type: StructureType,
15654    pub next: *mut c_void,
15655    pub features: PhysicalDeviceFeatures,
15656}
15657
15658impl Default for PhysicalDeviceFeatures2 {
15659    #[inline]
15660    fn default() -> Self {
15661        Self {
15662            s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
15663            next: ptr::null_mut(),
15664            features: PhysicalDeviceFeatures::default(),
15665        }
15666    }
15667}
15668
15669unsafe impl Send for PhysicalDeviceFeatures2 {}
15670unsafe impl Sync for PhysicalDeviceFeatures2 {}
15671
15672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html>
15673#[repr(C)]
15674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15675pub struct PhysicalDeviceFloatControlsProperties {
15676    pub s_type: StructureType,
15677    pub next: *mut c_void,
15678    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
15679    pub rounding_mode_independence: ShaderFloatControlsIndependence,
15680    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
15681    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
15682    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
15683    pub shader_denorm_preserve_float16: Bool32,
15684    pub shader_denorm_preserve_float32: Bool32,
15685    pub shader_denorm_preserve_float64: Bool32,
15686    pub shader_denorm_flush_to_zero_float16: Bool32,
15687    pub shader_denorm_flush_to_zero_float32: Bool32,
15688    pub shader_denorm_flush_to_zero_float64: Bool32,
15689    pub shader_rounding_mode_rte_float16: Bool32,
15690    pub shader_rounding_mode_rte_float32: Bool32,
15691    pub shader_rounding_mode_rte_float64: Bool32,
15692    pub shader_rounding_mode_rtz_float16: Bool32,
15693    pub shader_rounding_mode_rtz_float32: Bool32,
15694    pub shader_rounding_mode_rtz_float64: Bool32,
15695}
15696
15697impl Default for PhysicalDeviceFloatControlsProperties {
15698    #[inline]
15699    fn default() -> Self {
15700        Self {
15701            s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
15702            next: ptr::null_mut(),
15703            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
15704            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
15705            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
15706            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
15707            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
15708            shader_denorm_preserve_float16: Bool32::default(),
15709            shader_denorm_preserve_float32: Bool32::default(),
15710            shader_denorm_preserve_float64: Bool32::default(),
15711            shader_denorm_flush_to_zero_float16: Bool32::default(),
15712            shader_denorm_flush_to_zero_float32: Bool32::default(),
15713            shader_denorm_flush_to_zero_float64: Bool32::default(),
15714            shader_rounding_mode_rte_float16: Bool32::default(),
15715            shader_rounding_mode_rte_float32: Bool32::default(),
15716            shader_rounding_mode_rte_float64: Bool32::default(),
15717            shader_rounding_mode_rtz_float16: Bool32::default(),
15718            shader_rounding_mode_rtz_float32: Bool32::default(),
15719            shader_rounding_mode_rtz_float64: Bool32::default(),
15720        }
15721    }
15722}
15723
15724unsafe impl Send for PhysicalDeviceFloatControlsProperties {}
15725unsafe impl Sync for PhysicalDeviceFloatControlsProperties {}
15726
15727/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFormatPackFeaturesARM.html>
15728#[repr(C)]
15729#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15730pub struct PhysicalDeviceFormatPackFeaturesARM {
15731    pub s_type: StructureType,
15732    pub next: *mut c_void,
15733    pub format_pack: Bool32,
15734}
15735
15736impl Default for PhysicalDeviceFormatPackFeaturesARM {
15737    #[inline]
15738    fn default() -> Self {
15739        Self {
15740            s_type: StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM,
15741            next: ptr::null_mut(),
15742            format_pack: Bool32::default(),
15743        }
15744    }
15745}
15746
15747unsafe impl Send for PhysicalDeviceFormatPackFeaturesARM {}
15748unsafe impl Sync for PhysicalDeviceFormatPackFeaturesARM {}
15749
15750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>
15751#[repr(C)]
15752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15753pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
15754    pub s_type: StructureType,
15755    pub next: *mut c_void,
15756    pub fragment_density_map_deferred: Bool32,
15757}
15758
15759impl Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
15760    #[inline]
15761    fn default() -> Self {
15762        Self {
15763            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
15764            next: ptr::null_mut(),
15765            fragment_density_map_deferred: Bool32::default(),
15766        }
15767    }
15768}
15769
15770unsafe impl Send for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
15771unsafe impl Sync for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
15772
15773/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>
15774#[repr(C)]
15775#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15776pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
15777    pub s_type: StructureType,
15778    pub next: *mut c_void,
15779    pub subsampled_loads: Bool32,
15780    pub subsampled_coarse_reconstruction_early_access: Bool32,
15781    pub max_subsampled_array_layers: u32,
15782    pub max_descriptor_set_subsampled_samplers: u32,
15783}
15784
15785impl Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
15786    #[inline]
15787    fn default() -> Self {
15788        Self {
15789            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
15790            next: ptr::null_mut(),
15791            subsampled_loads: Bool32::default(),
15792            subsampled_coarse_reconstruction_early_access: Bool32::default(),
15793            max_subsampled_array_layers: u32::default(),
15794            max_descriptor_set_subsampled_samplers: u32::default(),
15795        }
15796    }
15797}
15798
15799unsafe impl Send for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
15800unsafe impl Sync for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
15801
15802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>
15803#[repr(C)]
15804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15805pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
15806    pub s_type: StructureType,
15807    pub next: *mut c_void,
15808    pub fragment_density_map: Bool32,
15809    pub fragment_density_map_dynamic: Bool32,
15810    pub fragment_density_map_non_subsampled_images: Bool32,
15811}
15812
15813impl Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
15814    #[inline]
15815    fn default() -> Self {
15816        Self {
15817            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
15818            next: ptr::null_mut(),
15819            fragment_density_map: Bool32::default(),
15820            fragment_density_map_dynamic: Bool32::default(),
15821            fragment_density_map_non_subsampled_images: Bool32::default(),
15822        }
15823    }
15824}
15825
15826unsafe impl Send for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
15827unsafe impl Sync for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
15828
15829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE.html>
15830#[repr(C)]
15831#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15832pub struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
15833    pub s_type: StructureType,
15834    pub next: *mut c_void,
15835    pub fragment_density_map_layered: Bool32,
15836}
15837
15838impl Default for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
15839    #[inline]
15840    fn default() -> Self {
15841        Self {
15842            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE,
15843            next: ptr::null_mut(),
15844            fragment_density_map_layered: Bool32::default(),
15845        }
15846    }
15847}
15848
15849unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
15850unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
15851
15852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.html>
15853#[repr(C)]
15854#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15855pub struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
15856    pub s_type: StructureType,
15857    pub next: *mut c_void,
15858    pub max_fragment_density_map_layers: u32,
15859}
15860
15861impl Default for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
15862    #[inline]
15863    fn default() -> Self {
15864        Self {
15865            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE,
15866            next: ptr::null_mut(),
15867            max_fragment_density_map_layers: u32::default(),
15868        }
15869    }
15870}
15871
15872unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
15873unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
15874
15875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.html>
15876#[repr(C)]
15877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15878pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
15879    pub s_type: StructureType,
15880    pub next: *mut c_void,
15881    pub fragment_density_map_offset: Bool32,
15882}
15883
15884impl Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
15885    #[inline]
15886    fn default() -> Self {
15887        Self {
15888            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,
15889            next: ptr::null_mut(),
15890            fragment_density_map_offset: Bool32::default(),
15891        }
15892    }
15893}
15894
15895unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
15896unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
15897
15898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.html>
15899#[repr(C)]
15900#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15901pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
15902    pub s_type: StructureType,
15903    pub next: *mut c_void,
15904    pub fragment_density_offset_granularity: Extent2D,
15905}
15906
15907impl Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
15908    #[inline]
15909    fn default() -> Self {
15910        Self {
15911            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,
15912            next: ptr::null_mut(),
15913            fragment_density_offset_granularity: Extent2D::default(),
15914        }
15915    }
15916}
15917
15918unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
15919unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
15920
15921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>
15922#[repr(C)]
15923#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15924pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
15925    pub s_type: StructureType,
15926    pub next: *mut c_void,
15927    pub min_fragment_density_texel_size: Extent2D,
15928    pub max_fragment_density_texel_size: Extent2D,
15929    pub fragment_density_invocations: Bool32,
15930}
15931
15932impl Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
15933    #[inline]
15934    fn default() -> Self {
15935        Self {
15936            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
15937            next: ptr::null_mut(),
15938            min_fragment_density_texel_size: Extent2D::default(),
15939            max_fragment_density_texel_size: Extent2D::default(),
15940            fragment_density_invocations: Bool32::default(),
15941        }
15942    }
15943}
15944
15945unsafe impl Send for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
15946unsafe impl Sync for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
15947
15948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html>
15949#[repr(C)]
15950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15951pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
15952    pub s_type: StructureType,
15953    pub next: *mut c_void,
15954    pub fragment_shader_barycentric: Bool32,
15955}
15956
15957impl Default for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
15958    #[inline]
15959    fn default() -> Self {
15960        Self {
15961            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
15962            next: ptr::null_mut(),
15963            fragment_shader_barycentric: Bool32::default(),
15964        }
15965    }
15966}
15967
15968unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
15969unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
15970
15971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html>
15972#[repr(C)]
15973#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15974pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
15975    pub s_type: StructureType,
15976    pub next: *mut c_void,
15977    pub tri_strip_vertex_order_independent_of_provoking_vertex: Bool32,
15978}
15979
15980impl Default for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
15981    #[inline]
15982    fn default() -> Self {
15983        Self {
15984            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR,
15985            next: ptr::null_mut(),
15986            tri_strip_vertex_order_independent_of_provoking_vertex: Bool32::default(),
15987        }
15988    }
15989}
15990
15991unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
15992unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
15993
15994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>
15995#[repr(C)]
15996#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15997pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
15998    pub s_type: StructureType,
15999    pub next: *mut c_void,
16000    pub fragment_shader_sample_interlock: Bool32,
16001    pub fragment_shader_pixel_interlock: Bool32,
16002    pub fragment_shader_shading_rate_interlock: Bool32,
16003}
16004
16005impl Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
16006    #[inline]
16007    fn default() -> Self {
16008        Self {
16009            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
16010            next: ptr::null_mut(),
16011            fragment_shader_sample_interlock: Bool32::default(),
16012            fragment_shader_pixel_interlock: Bool32::default(),
16013            fragment_shader_shading_rate_interlock: Bool32::default(),
16014        }
16015    }
16016}
16017
16018unsafe impl Send for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16019unsafe impl Sync for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
16020
16021/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>
16022#[repr(C)]
16023#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16024pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16025    pub s_type: StructureType,
16026    pub next: *mut c_void,
16027    pub fragment_shading_rate_enums: Bool32,
16028    pub supersample_fragment_shading_rates: Bool32,
16029    pub no_invocation_fragment_shading_rates: Bool32,
16030}
16031
16032impl Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16033    #[inline]
16034    fn default() -> Self {
16035        Self {
16036            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
16037            next: ptr::null_mut(),
16038            fragment_shading_rate_enums: Bool32::default(),
16039            supersample_fragment_shading_rates: Bool32::default(),
16040            no_invocation_fragment_shading_rates: Bool32::default(),
16041        }
16042    }
16043}
16044
16045unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16046unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
16047
16048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>
16049#[repr(C)]
16050#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16051pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16052    pub s_type: StructureType,
16053    pub next: *mut c_void,
16054    pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
16055}
16056
16057impl Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16058    #[inline]
16059    fn default() -> Self {
16060        Self {
16061            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
16062            next: ptr::null_mut(),
16063            max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
16064        }
16065    }
16066}
16067
16068unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16069unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
16070
16071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>
16072#[repr(C)]
16073#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16074pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
16075    pub s_type: StructureType,
16076    pub next: *mut c_void,
16077    pub pipeline_fragment_shading_rate: Bool32,
16078    pub primitive_fragment_shading_rate: Bool32,
16079    pub attachment_fragment_shading_rate: Bool32,
16080}
16081
16082impl Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
16083    #[inline]
16084    fn default() -> Self {
16085        Self {
16086            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
16087            next: ptr::null_mut(),
16088            pipeline_fragment_shading_rate: Bool32::default(),
16089            primitive_fragment_shading_rate: Bool32::default(),
16090            attachment_fragment_shading_rate: Bool32::default(),
16091        }
16092    }
16093}
16094
16095unsafe impl Send for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16096unsafe impl Sync for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
16097
16098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>
16099#[repr(C)]
16100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16101pub struct PhysicalDeviceFragmentShadingRateKHR {
16102    pub s_type: StructureType,
16103    pub next: *mut c_void,
16104    pub sample_counts: SampleCountFlags,
16105    pub fragment_size: Extent2D,
16106}
16107
16108impl Default for PhysicalDeviceFragmentShadingRateKHR {
16109    #[inline]
16110    fn default() -> Self {
16111        Self {
16112            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
16113            next: ptr::null_mut(),
16114            sample_counts: SampleCountFlags::default(),
16115            fragment_size: Extent2D::default(),
16116        }
16117    }
16118}
16119
16120unsafe impl Send for PhysicalDeviceFragmentShadingRateKHR {}
16121unsafe impl Sync for PhysicalDeviceFragmentShadingRateKHR {}
16122
16123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>
16124#[repr(C)]
16125#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16126pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
16127    pub s_type: StructureType,
16128    pub next: *mut c_void,
16129    pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
16130    pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
16131    pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
16132    pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
16133    pub layered_shading_rate_attachments: Bool32,
16134    pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
16135    pub max_fragment_size: Extent2D,
16136    pub max_fragment_size_aspect_ratio: u32,
16137    pub max_fragment_shading_rate_coverage_samples: u32,
16138    pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
16139    pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
16140    pub fragment_shading_rate_with_sample_mask: Bool32,
16141    pub fragment_shading_rate_with_shader_sample_mask: Bool32,
16142    pub fragment_shading_rate_with_conservative_rasterization: Bool32,
16143    pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
16144    pub fragment_shading_rate_with_custom_sample_locations: Bool32,
16145    pub fragment_shading_rate_strict_multiply_combiner: Bool32,
16146}
16147
16148impl Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
16149    #[inline]
16150    fn default() -> Self {
16151        Self {
16152            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
16153            next: ptr::null_mut(),
16154            min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16155            max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
16156            max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
16157            primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
16158            layered_shading_rate_attachments: Bool32::default(),
16159            fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
16160            max_fragment_size: Extent2D::default(),
16161            max_fragment_size_aspect_ratio: u32::default(),
16162            max_fragment_shading_rate_coverage_samples: u32::default(),
16163            max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
16164            fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
16165            fragment_shading_rate_with_sample_mask: Bool32::default(),
16166            fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
16167            fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
16168            fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
16169            fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
16170            fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
16171        }
16172    }
16173}
16174
16175unsafe impl Send for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16176unsafe impl Sync for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
16177
16178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html>
16179#[repr(C)]
16180#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16181pub struct PhysicalDeviceFrameBoundaryFeaturesEXT {
16182    pub s_type: StructureType,
16183    pub next: *mut c_void,
16184    pub frame_boundary: Bool32,
16185}
16186
16187impl Default for PhysicalDeviceFrameBoundaryFeaturesEXT {
16188    #[inline]
16189    fn default() -> Self {
16190        Self {
16191            s_type: StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT,
16192            next: ptr::null_mut(),
16193            frame_boundary: Bool32::default(),
16194        }
16195    }
16196}
16197
16198unsafe impl Send for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16199unsafe impl Sync for PhysicalDeviceFrameBoundaryFeaturesEXT {}
16200
16201/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html>
16202#[repr(C)]
16203#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16204pub struct PhysicalDeviceGlobalPriorityQueryFeatures {
16205    pub s_type: StructureType,
16206    pub next: *mut c_void,
16207    pub global_priority_query: Bool32,
16208}
16209
16210impl Default for PhysicalDeviceGlobalPriorityQueryFeatures {
16211    #[inline]
16212    fn default() -> Self {
16213        Self {
16214            s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,
16215            next: ptr::null_mut(),
16216            global_priority_query: Bool32::default(),
16217        }
16218    }
16219}
16220
16221unsafe impl Send for PhysicalDeviceGlobalPriorityQueryFeatures {}
16222unsafe impl Sync for PhysicalDeviceGlobalPriorityQueryFeatures {}
16223
16224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html>
16225#[repr(C)]
16226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16227pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16228    pub s_type: StructureType,
16229    pub next: *mut c_void,
16230    pub graphics_pipeline_library: Bool32,
16231}
16232
16233impl Default for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
16234    #[inline]
16235    fn default() -> Self {
16236        Self {
16237            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,
16238            next: ptr::null_mut(),
16239            graphics_pipeline_library: Bool32::default(),
16240        }
16241    }
16242}
16243
16244unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16245unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
16246
16247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html>
16248#[repr(C)]
16249#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16250pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16251    pub s_type: StructureType,
16252    pub next: *mut c_void,
16253    pub graphics_pipeline_library_fast_linking: Bool32,
16254    pub graphics_pipeline_library_independent_interpolation_decoration: Bool32,
16255}
16256
16257impl Default for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
16258    #[inline]
16259    fn default() -> Self {
16260        Self {
16261            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,
16262            next: ptr::null_mut(),
16263            graphics_pipeline_library_fast_linking: Bool32::default(),
16264            graphics_pipeline_library_independent_interpolation_decoration: Bool32::default(),
16265        }
16266    }
16267}
16268
16269unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16270unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
16271
16272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html>
16273#[repr(C)]
16274#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16275pub struct PhysicalDeviceGroupProperties {
16276    pub s_type: StructureType,
16277    pub next: *mut c_void,
16278    pub physical_device_count: u32,
16279    pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE],
16280    pub subset_allocation: Bool32,
16281}
16282
16283impl Default for PhysicalDeviceGroupProperties {
16284    #[inline]
16285    fn default() -> Self {
16286        Self {
16287            s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
16288            next: ptr::null_mut(),
16289            physical_device_count: u32::default(),
16290            physical_devices: [PhysicalDevice::default(); MAX_DEVICE_GROUP_SIZE],
16291            subset_allocation: Bool32::default(),
16292        }
16293    }
16294}
16295
16296unsafe impl Send for PhysicalDeviceGroupProperties {}
16297unsafe impl Sync for PhysicalDeviceGroupProperties {}
16298
16299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html>
16300#[repr(C)]
16301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16302pub struct PhysicalDeviceHdrVividFeaturesHUAWEI {
16303    pub s_type: StructureType,
16304    pub next: *mut c_void,
16305    pub hdr_vivid: Bool32,
16306}
16307
16308impl Default for PhysicalDeviceHdrVividFeaturesHUAWEI {
16309    #[inline]
16310    fn default() -> Self {
16311        Self {
16312            s_type: StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI,
16313            next: ptr::null_mut(),
16314            hdr_vivid: Bool32::default(),
16315        }
16316    }
16317}
16318
16319unsafe impl Send for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16320unsafe impl Sync for PhysicalDeviceHdrVividFeaturesHUAWEI {}
16321
16322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html>
16323#[repr(C)]
16324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16325pub struct PhysicalDeviceHostImageCopyFeatures {
16326    pub s_type: StructureType,
16327    pub next: *mut c_void,
16328    pub host_image_copy: Bool32,
16329}
16330
16331impl Default for PhysicalDeviceHostImageCopyFeatures {
16332    #[inline]
16333    fn default() -> Self {
16334        Self {
16335            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,
16336            next: ptr::null_mut(),
16337            host_image_copy: Bool32::default(),
16338        }
16339    }
16340}
16341
16342unsafe impl Send for PhysicalDeviceHostImageCopyFeatures {}
16343unsafe impl Sync for PhysicalDeviceHostImageCopyFeatures {}
16344
16345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html>
16346#[repr(C)]
16347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16348pub struct PhysicalDeviceHostImageCopyProperties {
16349    pub s_type: StructureType,
16350    pub next: *mut c_void,
16351    pub copy_src_layout_count: u32,
16352    pub copy_src_layouts: *mut ImageLayout,
16353    pub copy_dst_layout_count: u32,
16354    pub copy_dst_layouts: *mut ImageLayout,
16355    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
16356    pub identical_memory_type_requirements: Bool32,
16357}
16358
16359impl Default for PhysicalDeviceHostImageCopyProperties {
16360    #[inline]
16361    fn default() -> Self {
16362        Self {
16363            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,
16364            next: ptr::null_mut(),
16365            copy_src_layout_count: u32::default(),
16366            copy_src_layouts: ptr::null_mut(),
16367            copy_dst_layout_count: u32::default(),
16368            copy_dst_layouts: ptr::null_mut(),
16369            optimal_tiling_layout_uuid: ByteArray::default(),
16370            identical_memory_type_requirements: Bool32::default(),
16371        }
16372    }
16373}
16374
16375unsafe impl Send for PhysicalDeviceHostImageCopyProperties {}
16376unsafe impl Sync for PhysicalDeviceHostImageCopyProperties {}
16377
16378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>
16379#[repr(C)]
16380#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16381pub struct PhysicalDeviceHostQueryResetFeatures {
16382    pub s_type: StructureType,
16383    pub next: *mut c_void,
16384    pub host_query_reset: Bool32,
16385}
16386
16387impl Default for PhysicalDeviceHostQueryResetFeatures {
16388    #[inline]
16389    fn default() -> Self {
16390        Self {
16391            s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
16392            next: ptr::null_mut(),
16393            host_query_reset: Bool32::default(),
16394        }
16395    }
16396}
16397
16398unsafe impl Send for PhysicalDeviceHostQueryResetFeatures {}
16399unsafe impl Sync for PhysicalDeviceHostQueryResetFeatures {}
16400
16401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html>
16402#[repr(C)]
16403#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16404pub struct PhysicalDeviceIDProperties {
16405    pub s_type: StructureType,
16406    pub next: *mut c_void,
16407    pub device_uuid: ByteArray<UUID_SIZE>,
16408    pub driver_uuid: ByteArray<UUID_SIZE>,
16409    pub device_luid: ByteArray<LUID_SIZE>,
16410    pub device_node_mask: u32,
16411    pub device_luid_valid: Bool32,
16412}
16413
16414impl Default for PhysicalDeviceIDProperties {
16415    #[inline]
16416    fn default() -> Self {
16417        Self {
16418            s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
16419            next: ptr::null_mut(),
16420            device_uuid: ByteArray::default(),
16421            driver_uuid: ByteArray::default(),
16422            device_luid: ByteArray::default(),
16423            device_node_mask: u32::default(),
16424            device_luid_valid: Bool32::default(),
16425        }
16426    }
16427}
16428
16429unsafe impl Send for PhysicalDeviceIDProperties {}
16430unsafe impl Sync for PhysicalDeviceIDProperties {}
16431
16432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html>
16433#[repr(C)]
16434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16435pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16436    pub s_type: StructureType,
16437    pub next: *mut c_void,
16438    pub image_2d_view_of_3d: Bool32,
16439    pub sampler_2d_view_of_3d: Bool32,
16440}
16441
16442impl Default for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
16443    #[inline]
16444    fn default() -> Self {
16445        Self {
16446            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT,
16447            next: ptr::null_mut(),
16448            image_2d_view_of_3d: Bool32::default(),
16449            sampler_2d_view_of_3d: Bool32::default(),
16450        }
16451    }
16452}
16453
16454unsafe impl Send for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16455unsafe impl Sync for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
16456
16457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html>
16458#[repr(C)]
16459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16460pub struct PhysicalDeviceImageAlignmentControlFeaturesMESA {
16461    pub s_type: StructureType,
16462    pub next: *mut c_void,
16463    pub image_alignment_control: Bool32,
16464}
16465
16466impl Default for PhysicalDeviceImageAlignmentControlFeaturesMESA {
16467    #[inline]
16468    fn default() -> Self {
16469        Self {
16470            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA,
16471            next: ptr::null_mut(),
16472            image_alignment_control: Bool32::default(),
16473        }
16474    }
16475}
16476
16477unsafe impl Send for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16478unsafe impl Sync for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
16479
16480/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html>
16481#[repr(C)]
16482#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16483pub struct PhysicalDeviceImageAlignmentControlPropertiesMESA {
16484    pub s_type: StructureType,
16485    pub next: *mut c_void,
16486    pub supported_image_alignment_mask: u32,
16487}
16488
16489impl Default for PhysicalDeviceImageAlignmentControlPropertiesMESA {
16490    #[inline]
16491    fn default() -> Self {
16492        Self {
16493            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA,
16494            next: ptr::null_mut(),
16495            supported_image_alignment_mask: u32::default(),
16496        }
16497    }
16498}
16499
16500unsafe impl Send for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16501unsafe impl Sync for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
16502
16503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html>
16504#[repr(C)]
16505#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16506pub struct PhysicalDeviceImageCompressionControlFeaturesEXT {
16507    pub s_type: StructureType,
16508    pub next: *mut c_void,
16509    pub image_compression_control: Bool32,
16510}
16511
16512impl Default for PhysicalDeviceImageCompressionControlFeaturesEXT {
16513    #[inline]
16514    fn default() -> Self {
16515        Self {
16516            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT,
16517            next: ptr::null_mut(),
16518            image_compression_control: Bool32::default(),
16519        }
16520    }
16521}
16522
16523unsafe impl Send for PhysicalDeviceImageCompressionControlFeaturesEXT {}
16524unsafe impl Sync for PhysicalDeviceImageCompressionControlFeaturesEXT {}
16525
16526/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html>
16527#[repr(C)]
16528#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16529pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
16530    pub s_type: StructureType,
16531    pub next: *mut c_void,
16532    pub image_compression_control_swapchain: Bool32,
16533}
16534
16535impl Default for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
16536    #[inline]
16537    fn default() -> Self {
16538        Self {
16539            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT,
16540            next: ptr::null_mut(),
16541            image_compression_control_swapchain: Bool32::default(),
16542        }
16543    }
16544}
16545
16546unsafe impl Send for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
16547unsafe impl Sync for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
16548
16549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>
16550#[repr(C)]
16551#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16552pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
16553    pub s_type: StructureType,
16554    pub next: *const c_void,
16555    pub drm_format_modifier: u64,
16556    pub sharing_mode: SharingMode,
16557    pub queue_family_index_count: u32,
16558    pub queue_family_indices: *const u32,
16559}
16560
16561impl Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
16562    #[inline]
16563    fn default() -> Self {
16564        Self {
16565            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
16566            next: ptr::null(),
16567            drm_format_modifier: u64::default(),
16568            sharing_mode: SharingMode::default(),
16569            queue_family_index_count: u32::default(),
16570            queue_family_indices: ptr::null(),
16571        }
16572    }
16573}
16574
16575unsafe impl Send for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
16576unsafe impl Sync for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
16577
16578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html>
16579#[repr(C)]
16580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16581pub struct PhysicalDeviceImageFormatInfo2 {
16582    pub s_type: StructureType,
16583    pub next: *const c_void,
16584    pub format: Format,
16585    pub type_: ImageType,
16586    pub tiling: ImageTiling,
16587    pub usage: ImageUsageFlags,
16588    pub flags: ImageCreateFlags,
16589}
16590
16591impl Default for PhysicalDeviceImageFormatInfo2 {
16592    #[inline]
16593    fn default() -> Self {
16594        Self {
16595            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
16596            next: ptr::null(),
16597            format: Format::default(),
16598            type_: ImageType::default(),
16599            tiling: ImageTiling::default(),
16600            usage: ImageUsageFlags::default(),
16601            flags: ImageCreateFlags::default(),
16602        }
16603    }
16604}
16605
16606unsafe impl Send for PhysicalDeviceImageFormatInfo2 {}
16607unsafe impl Sync for PhysicalDeviceImageFormatInfo2 {}
16608
16609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html>
16610#[repr(C)]
16611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16612pub struct PhysicalDeviceImageProcessing2FeaturesQCOM {
16613    pub s_type: StructureType,
16614    pub next: *mut c_void,
16615    pub texture_block_match2: Bool32,
16616}
16617
16618impl Default for PhysicalDeviceImageProcessing2FeaturesQCOM {
16619    #[inline]
16620    fn default() -> Self {
16621        Self {
16622            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM,
16623            next: ptr::null_mut(),
16624            texture_block_match2: Bool32::default(),
16625        }
16626    }
16627}
16628
16629unsafe impl Send for PhysicalDeviceImageProcessing2FeaturesQCOM {}
16630unsafe impl Sync for PhysicalDeviceImageProcessing2FeaturesQCOM {}
16631
16632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html>
16633#[repr(C)]
16634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16635pub struct PhysicalDeviceImageProcessing2PropertiesQCOM {
16636    pub s_type: StructureType,
16637    pub next: *mut c_void,
16638    pub max_block_match_window: Extent2D,
16639}
16640
16641impl Default for PhysicalDeviceImageProcessing2PropertiesQCOM {
16642    #[inline]
16643    fn default() -> Self {
16644        Self {
16645            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM,
16646            next: ptr::null_mut(),
16647            max_block_match_window: Extent2D::default(),
16648        }
16649    }
16650}
16651
16652unsafe impl Send for PhysicalDeviceImageProcessing2PropertiesQCOM {}
16653unsafe impl Sync for PhysicalDeviceImageProcessing2PropertiesQCOM {}
16654
16655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html>
16656#[repr(C)]
16657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16658pub struct PhysicalDeviceImageProcessingFeaturesQCOM {
16659    pub s_type: StructureType,
16660    pub next: *mut c_void,
16661    pub texture_sample_weighted: Bool32,
16662    pub texture_box_filter: Bool32,
16663    pub texture_block_match: Bool32,
16664}
16665
16666impl Default for PhysicalDeviceImageProcessingFeaturesQCOM {
16667    #[inline]
16668    fn default() -> Self {
16669        Self {
16670            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM,
16671            next: ptr::null_mut(),
16672            texture_sample_weighted: Bool32::default(),
16673            texture_box_filter: Bool32::default(),
16674            texture_block_match: Bool32::default(),
16675        }
16676    }
16677}
16678
16679unsafe impl Send for PhysicalDeviceImageProcessingFeaturesQCOM {}
16680unsafe impl Sync for PhysicalDeviceImageProcessingFeaturesQCOM {}
16681
16682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html>
16683#[repr(C)]
16684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16685pub struct PhysicalDeviceImageProcessingPropertiesQCOM {
16686    pub s_type: StructureType,
16687    pub next: *mut c_void,
16688    pub max_weight_filter_phases: u32,
16689    pub max_weight_filter_dimension: Extent2D,
16690    pub max_block_match_region: Extent2D,
16691    pub max_box_filter_block_size: Extent2D,
16692}
16693
16694impl Default for PhysicalDeviceImageProcessingPropertiesQCOM {
16695    #[inline]
16696    fn default() -> Self {
16697        Self {
16698            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM,
16699            next: ptr::null_mut(),
16700            max_weight_filter_phases: u32::default(),
16701            max_weight_filter_dimension: Extent2D::default(),
16702            max_block_match_region: Extent2D::default(),
16703            max_box_filter_block_size: Extent2D::default(),
16704        }
16705    }
16706}
16707
16708unsafe impl Send for PhysicalDeviceImageProcessingPropertiesQCOM {}
16709unsafe impl Sync for PhysicalDeviceImageProcessingPropertiesQCOM {}
16710
16711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html>
16712#[repr(C)]
16713#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16714pub struct PhysicalDeviceImageRobustnessFeatures {
16715    pub s_type: StructureType,
16716    pub next: *mut c_void,
16717    pub robust_image_access: Bool32,
16718}
16719
16720impl Default for PhysicalDeviceImageRobustnessFeatures {
16721    #[inline]
16722    fn default() -> Self {
16723        Self {
16724            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
16725            next: ptr::null_mut(),
16726            robust_image_access: Bool32::default(),
16727        }
16728    }
16729}
16730
16731unsafe impl Send for PhysicalDeviceImageRobustnessFeatures {}
16732unsafe impl Sync for PhysicalDeviceImageRobustnessFeatures {}
16733
16734/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html>
16735#[repr(C)]
16736#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16737pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
16738    pub s_type: StructureType,
16739    pub next: *mut c_void,
16740    pub image_sliced_view_of_3d: Bool32,
16741}
16742
16743impl Default for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
16744    #[inline]
16745    fn default() -> Self {
16746        Self {
16747            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT,
16748            next: ptr::null_mut(),
16749            image_sliced_view_of_3d: Bool32::default(),
16750        }
16751    }
16752}
16753
16754unsafe impl Send for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
16755unsafe impl Sync for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
16756
16757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>
16758#[repr(C)]
16759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16760pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
16761    pub s_type: StructureType,
16762    pub next: *mut c_void,
16763    pub image_view_type: ImageViewType,
16764}
16765
16766impl Default for PhysicalDeviceImageViewImageFormatInfoEXT {
16767    #[inline]
16768    fn default() -> Self {
16769        Self {
16770            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
16771            next: ptr::null_mut(),
16772            image_view_type: ImageViewType::default(),
16773        }
16774    }
16775}
16776
16777unsafe impl Send for PhysicalDeviceImageViewImageFormatInfoEXT {}
16778unsafe impl Sync for PhysicalDeviceImageViewImageFormatInfoEXT {}
16779
16780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>
16781#[repr(C)]
16782#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16783pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
16784    pub s_type: StructureType,
16785    pub next: *mut c_void,
16786    pub min_lod: Bool32,
16787}
16788
16789impl Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
16790    #[inline]
16791    fn default() -> Self {
16792        Self {
16793            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
16794            next: ptr::null_mut(),
16795            min_lod: Bool32::default(),
16796        }
16797    }
16798}
16799
16800unsafe impl Send for PhysicalDeviceImageViewMinLodFeaturesEXT {}
16801unsafe impl Sync for PhysicalDeviceImageViewMinLodFeaturesEXT {}
16802
16803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>
16804#[repr(C)]
16805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16806pub struct PhysicalDeviceImagelessFramebufferFeatures {
16807    pub s_type: StructureType,
16808    pub next: *mut c_void,
16809    pub imageless_framebuffer: Bool32,
16810}
16811
16812impl Default for PhysicalDeviceImagelessFramebufferFeatures {
16813    #[inline]
16814    fn default() -> Self {
16815        Self {
16816            s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
16817            next: ptr::null_mut(),
16818            imageless_framebuffer: Bool32::default(),
16819        }
16820    }
16821}
16822
16823unsafe impl Send for PhysicalDeviceImagelessFramebufferFeatures {}
16824unsafe impl Sync for PhysicalDeviceImagelessFramebufferFeatures {}
16825
16826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html>
16827#[repr(C)]
16828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16829pub struct PhysicalDeviceIndexTypeUint8Features {
16830    pub s_type: StructureType,
16831    pub next: *mut c_void,
16832    pub index_type_uint8: Bool32,
16833}
16834
16835impl Default for PhysicalDeviceIndexTypeUint8Features {
16836    #[inline]
16837    fn default() -> Self {
16838        Self {
16839            s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,
16840            next: ptr::null_mut(),
16841            index_type_uint8: Bool32::default(),
16842        }
16843    }
16844}
16845
16846unsafe impl Send for PhysicalDeviceIndexTypeUint8Features {}
16847unsafe impl Sync for PhysicalDeviceIndexTypeUint8Features {}
16848
16849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>
16850#[repr(C)]
16851#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16852pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
16853    pub s_type: StructureType,
16854    pub next: *mut c_void,
16855    pub inherited_viewport_scissor_2d: Bool32,
16856}
16857
16858impl Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
16859    #[inline]
16860    fn default() -> Self {
16861        Self {
16862            s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
16863            next: ptr::null_mut(),
16864            inherited_viewport_scissor_2d: Bool32::default(),
16865        }
16866    }
16867}
16868
16869unsafe impl Send for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
16870unsafe impl Sync for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
16871
16872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html>
16873#[repr(C)]
16874#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16875pub struct PhysicalDeviceInlineUniformBlockFeatures {
16876    pub s_type: StructureType,
16877    pub next: *mut c_void,
16878    pub inline_uniform_block: Bool32,
16879    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
16880}
16881
16882impl Default for PhysicalDeviceInlineUniformBlockFeatures {
16883    #[inline]
16884    fn default() -> Self {
16885        Self {
16886            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
16887            next: ptr::null_mut(),
16888            inline_uniform_block: Bool32::default(),
16889            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
16890        }
16891    }
16892}
16893
16894unsafe impl Send for PhysicalDeviceInlineUniformBlockFeatures {}
16895unsafe impl Sync for PhysicalDeviceInlineUniformBlockFeatures {}
16896
16897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html>
16898#[repr(C)]
16899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16900pub struct PhysicalDeviceInlineUniformBlockProperties {
16901    pub s_type: StructureType,
16902    pub next: *mut c_void,
16903    pub max_inline_uniform_block_size: u32,
16904    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
16905    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
16906    pub max_descriptor_set_inline_uniform_blocks: u32,
16907    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
16908}
16909
16910impl Default for PhysicalDeviceInlineUniformBlockProperties {
16911    #[inline]
16912    fn default() -> Self {
16913        Self {
16914            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
16915            next: ptr::null_mut(),
16916            max_inline_uniform_block_size: u32::default(),
16917            max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
16918            max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
16919            max_descriptor_set_inline_uniform_blocks: u32::default(),
16920            max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
16921        }
16922    }
16923}
16924
16925unsafe impl Send for PhysicalDeviceInlineUniformBlockProperties {}
16926unsafe impl Sync for PhysicalDeviceInlineUniformBlockProperties {}
16927
16928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>
16929#[repr(C)]
16930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16931pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
16932    pub s_type: StructureType,
16933    pub next: *mut c_void,
16934    pub invocation_mask: Bool32,
16935}
16936
16937impl Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
16938    #[inline]
16939    fn default() -> Self {
16940        Self {
16941            s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
16942            next: ptr::null_mut(),
16943            invocation_mask: Bool32::default(),
16944        }
16945    }
16946}
16947
16948unsafe impl Send for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
16949unsafe impl Sync for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
16950
16951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html>
16952#[repr(C)]
16953#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16954pub struct PhysicalDeviceLayeredApiPropertiesKHR {
16955    pub s_type: StructureType,
16956    pub next: *mut c_void,
16957    pub vendor_id: u32,
16958    pub device_id: u32,
16959    pub layered_api: PhysicalDeviceLayeredApiKHR,
16960    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
16961}
16962
16963impl Default for PhysicalDeviceLayeredApiPropertiesKHR {
16964    #[inline]
16965    fn default() -> Self {
16966        Self {
16967            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR,
16968            next: ptr::null_mut(),
16969            vendor_id: u32::default(),
16970            device_id: u32::default(),
16971            layered_api: PhysicalDeviceLayeredApiKHR::default(),
16972            device_name: StringArray::default(),
16973        }
16974    }
16975}
16976
16977unsafe impl Send for PhysicalDeviceLayeredApiPropertiesKHR {}
16978unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesKHR {}
16979
16980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html>
16981#[repr(C)]
16982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16983pub struct PhysicalDeviceLayeredApiPropertiesListKHR {
16984    pub s_type: StructureType,
16985    pub next: *mut c_void,
16986    pub layered_api_count: u32,
16987    pub layered_apis: *mut PhysicalDeviceLayeredApiPropertiesKHR,
16988}
16989
16990impl Default for PhysicalDeviceLayeredApiPropertiesListKHR {
16991    #[inline]
16992    fn default() -> Self {
16993        Self {
16994            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR,
16995            next: ptr::null_mut(),
16996            layered_api_count: u32::default(),
16997            layered_apis: ptr::null_mut(),
16998        }
16999    }
17000}
17001
17002unsafe impl Send for PhysicalDeviceLayeredApiPropertiesListKHR {}
17003unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesListKHR {}
17004
17005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html>
17006#[repr(C)]
17007#[derive(Copy, Clone, Debug, PartialEq)]
17008pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17009    pub s_type: StructureType,
17010    pub next: *mut c_void,
17011    pub properties: PhysicalDeviceProperties2,
17012}
17013
17014impl Default for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
17015    #[inline]
17016    fn default() -> Self {
17017        Self {
17018            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR,
17019            next: ptr::null_mut(),
17020            properties: PhysicalDeviceProperties2::default(),
17021        }
17022    }
17023}
17024
17025unsafe impl Send for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17026unsafe impl Sync for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
17027
17028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html>
17029#[repr(C)]
17030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17031pub struct PhysicalDeviceLayeredDriverPropertiesMSFT {
17032    pub s_type: StructureType,
17033    pub next: *mut c_void,
17034    pub underlying_api: LayeredDriverUnderlyingApiMSFT,
17035}
17036
17037impl Default for PhysicalDeviceLayeredDriverPropertiesMSFT {
17038    #[inline]
17039    fn default() -> Self {
17040        Self {
17041            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT,
17042            next: ptr::null_mut(),
17043            underlying_api: LayeredDriverUnderlyingApiMSFT::default(),
17044        }
17045    }
17046}
17047
17048unsafe impl Send for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17049unsafe impl Sync for PhysicalDeviceLayeredDriverPropertiesMSFT {}
17050
17051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html>
17052#[repr(C)]
17053#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17054pub struct PhysicalDeviceLegacyDitheringFeaturesEXT {
17055    pub s_type: StructureType,
17056    pub next: *mut c_void,
17057    pub legacy_dithering: Bool32,
17058}
17059
17060impl Default for PhysicalDeviceLegacyDitheringFeaturesEXT {
17061    #[inline]
17062    fn default() -> Self {
17063        Self {
17064            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT,
17065            next: ptr::null_mut(),
17066            legacy_dithering: Bool32::default(),
17067        }
17068    }
17069}
17070
17071unsafe impl Send for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17072unsafe impl Sync for PhysicalDeviceLegacyDitheringFeaturesEXT {}
17073
17074/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html>
17075#[repr(C)]
17076#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17077pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17078    pub s_type: StructureType,
17079    pub next: *mut c_void,
17080    pub legacy_vertex_attributes: Bool32,
17081}
17082
17083impl Default for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
17084    #[inline]
17085    fn default() -> Self {
17086        Self {
17087            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT,
17088            next: ptr::null_mut(),
17089            legacy_vertex_attributes: Bool32::default(),
17090        }
17091    }
17092}
17093
17094unsafe impl Send for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17095unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
17096
17097/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html>
17098#[repr(C)]
17099#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17100pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17101    pub s_type: StructureType,
17102    pub next: *mut c_void,
17103    pub native_unaligned_performance: Bool32,
17104}
17105
17106impl Default for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
17107    #[inline]
17108    fn default() -> Self {
17109        Self {
17110            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT,
17111            next: ptr::null_mut(),
17112            native_unaligned_performance: Bool32::default(),
17113        }
17114    }
17115}
17116
17117unsafe impl Send for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17118unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
17119
17120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html>
17121#[repr(C)]
17122#[derive(Copy, Clone, Default, Debug, PartialEq)]
17123pub struct PhysicalDeviceLimits {
17124    pub max_image_dimension_1d: u32,
17125    pub max_image_dimension_2d: u32,
17126    pub max_image_dimension_3d: u32,
17127    pub max_image_dimension_cube: u32,
17128    pub max_image_array_layers: u32,
17129    pub max_texel_buffer_elements: u32,
17130    pub max_uniform_buffer_range: u32,
17131    pub max_storage_buffer_range: u32,
17132    pub max_push_constants_size: u32,
17133    pub max_memory_allocation_count: u32,
17134    pub max_sampler_allocation_count: u32,
17135    pub buffer_image_granularity: DeviceSize,
17136    pub sparse_address_space_size: DeviceSize,
17137    pub max_bound_descriptor_sets: u32,
17138    pub max_per_stage_descriptor_samplers: u32,
17139    pub max_per_stage_descriptor_uniform_buffers: u32,
17140    pub max_per_stage_descriptor_storage_buffers: u32,
17141    pub max_per_stage_descriptor_sampled_images: u32,
17142    pub max_per_stage_descriptor_storage_images: u32,
17143    pub max_per_stage_descriptor_input_attachments: u32,
17144    pub max_per_stage_resources: u32,
17145    pub max_descriptor_set_samplers: u32,
17146    pub max_descriptor_set_uniform_buffers: u32,
17147    pub max_descriptor_set_uniform_buffers_dynamic: u32,
17148    pub max_descriptor_set_storage_buffers: u32,
17149    pub max_descriptor_set_storage_buffers_dynamic: u32,
17150    pub max_descriptor_set_sampled_images: u32,
17151    pub max_descriptor_set_storage_images: u32,
17152    pub max_descriptor_set_input_attachments: u32,
17153    pub max_vertex_input_attributes: u32,
17154    pub max_vertex_input_bindings: u32,
17155    pub max_vertex_input_attribute_offset: u32,
17156    pub max_vertex_input_binding_stride: u32,
17157    pub max_vertex_output_components: u32,
17158    pub max_tessellation_generation_level: u32,
17159    pub max_tessellation_patch_size: u32,
17160    pub max_tessellation_control_per_vertex_input_components: u32,
17161    pub max_tessellation_control_per_vertex_output_components: u32,
17162    pub max_tessellation_control_per_patch_output_components: u32,
17163    pub max_tessellation_control_total_output_components: u32,
17164    pub max_tessellation_evaluation_input_components: u32,
17165    pub max_tessellation_evaluation_output_components: u32,
17166    pub max_geometry_shader_invocations: u32,
17167    pub max_geometry_input_components: u32,
17168    pub max_geometry_output_components: u32,
17169    pub max_geometry_output_vertices: u32,
17170    pub max_geometry_total_output_components: u32,
17171    pub max_fragment_input_components: u32,
17172    pub max_fragment_output_attachments: u32,
17173    pub max_fragment_dual_src_attachments: u32,
17174    pub max_fragment_combined_output_resources: u32,
17175    pub max_compute_shared_memory_size: u32,
17176    pub max_compute_work_group_count: [u32; 3],
17177    pub max_compute_work_group_invocations: u32,
17178    pub max_compute_work_group_size: [u32; 3],
17179    pub sub_pixel_precision_bits: u32,
17180    pub sub_texel_precision_bits: u32,
17181    pub mipmap_precision_bits: u32,
17182    pub max_draw_indexed_index_value: u32,
17183    pub max_draw_indirect_count: u32,
17184    pub max_sampler_lod_bias: f32,
17185    pub max_sampler_anisotropy: f32,
17186    pub max_viewports: u32,
17187    pub max_viewport_dimensions: [u32; 2],
17188    pub viewport_bounds_range: [f32; 2],
17189    pub viewport_sub_pixel_bits: u32,
17190    pub min_memory_map_alignment: usize,
17191    pub min_texel_buffer_offset_alignment: DeviceSize,
17192    pub min_uniform_buffer_offset_alignment: DeviceSize,
17193    pub min_storage_buffer_offset_alignment: DeviceSize,
17194    pub min_texel_offset: i32,
17195    pub max_texel_offset: u32,
17196    pub min_texel_gather_offset: i32,
17197    pub max_texel_gather_offset: u32,
17198    pub min_interpolation_offset: f32,
17199    pub max_interpolation_offset: f32,
17200    pub sub_pixel_interpolation_offset_bits: u32,
17201    pub max_framebuffer_width: u32,
17202    pub max_framebuffer_height: u32,
17203    pub max_framebuffer_layers: u32,
17204    pub framebuffer_color_sample_counts: SampleCountFlags,
17205    pub framebuffer_depth_sample_counts: SampleCountFlags,
17206    pub framebuffer_stencil_sample_counts: SampleCountFlags,
17207    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
17208    pub max_color_attachments: u32,
17209    pub sampled_image_color_sample_counts: SampleCountFlags,
17210    pub sampled_image_integer_sample_counts: SampleCountFlags,
17211    pub sampled_image_depth_sample_counts: SampleCountFlags,
17212    pub sampled_image_stencil_sample_counts: SampleCountFlags,
17213    pub storage_image_sample_counts: SampleCountFlags,
17214    pub max_sample_mask_words: u32,
17215    pub timestamp_compute_and_graphics: Bool32,
17216    pub timestamp_period: f32,
17217    pub max_clip_distances: u32,
17218    pub max_cull_distances: u32,
17219    pub max_combined_clip_and_cull_distances: u32,
17220    pub discrete_queue_priorities: u32,
17221    pub point_size_range: [f32; 2],
17222    pub line_width_range: [f32; 2],
17223    pub point_size_granularity: f32,
17224    pub line_width_granularity: f32,
17225    pub strict_lines: Bool32,
17226    pub standard_sample_locations: Bool32,
17227    pub optimal_buffer_copy_offset_alignment: DeviceSize,
17228    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
17229    pub non_coherent_atom_size: DeviceSize,
17230}
17231
17232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html>
17233#[repr(C)]
17234#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17235pub struct PhysicalDeviceLineRasterizationFeatures {
17236    pub s_type: StructureType,
17237    pub next: *mut c_void,
17238    pub rectangular_lines: Bool32,
17239    pub bresenham_lines: Bool32,
17240    pub smooth_lines: Bool32,
17241    pub stippled_rectangular_lines: Bool32,
17242    pub stippled_bresenham_lines: Bool32,
17243    pub stippled_smooth_lines: Bool32,
17244}
17245
17246impl Default for PhysicalDeviceLineRasterizationFeatures {
17247    #[inline]
17248    fn default() -> Self {
17249        Self {
17250            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,
17251            next: ptr::null_mut(),
17252            rectangular_lines: Bool32::default(),
17253            bresenham_lines: Bool32::default(),
17254            smooth_lines: Bool32::default(),
17255            stippled_rectangular_lines: Bool32::default(),
17256            stippled_bresenham_lines: Bool32::default(),
17257            stippled_smooth_lines: Bool32::default(),
17258        }
17259    }
17260}
17261
17262unsafe impl Send for PhysicalDeviceLineRasterizationFeatures {}
17263unsafe impl Sync for PhysicalDeviceLineRasterizationFeatures {}
17264
17265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html>
17266#[repr(C)]
17267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17268pub struct PhysicalDeviceLineRasterizationProperties {
17269    pub s_type: StructureType,
17270    pub next: *mut c_void,
17271    pub line_sub_pixel_precision_bits: u32,
17272}
17273
17274impl Default for PhysicalDeviceLineRasterizationProperties {
17275    #[inline]
17276    fn default() -> Self {
17277        Self {
17278            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,
17279            next: ptr::null_mut(),
17280            line_sub_pixel_precision_bits: u32::default(),
17281        }
17282    }
17283}
17284
17285unsafe impl Send for PhysicalDeviceLineRasterizationProperties {}
17286unsafe impl Sync for PhysicalDeviceLineRasterizationProperties {}
17287
17288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>
17289#[repr(C)]
17290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17291pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
17292    pub s_type: StructureType,
17293    pub next: *mut c_void,
17294    pub linear_color_attachment: Bool32,
17295}
17296
17297impl Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
17298    #[inline]
17299    fn default() -> Self {
17300        Self {
17301            s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
17302            next: ptr::null_mut(),
17303            linear_color_attachment: Bool32::default(),
17304        }
17305    }
17306}
17307
17308unsafe impl Send for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17309unsafe impl Sync for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
17310
17311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html>
17312#[repr(C)]
17313#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17314pub struct PhysicalDeviceMaintenance3Properties {
17315    pub s_type: StructureType,
17316    pub next: *mut c_void,
17317    pub max_per_set_descriptors: u32,
17318    pub max_memory_allocation_size: DeviceSize,
17319}
17320
17321impl Default for PhysicalDeviceMaintenance3Properties {
17322    #[inline]
17323    fn default() -> Self {
17324        Self {
17325            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
17326            next: ptr::null_mut(),
17327            max_per_set_descriptors: u32::default(),
17328            max_memory_allocation_size: DeviceSize::default(),
17329        }
17330    }
17331}
17332
17333unsafe impl Send for PhysicalDeviceMaintenance3Properties {}
17334unsafe impl Sync for PhysicalDeviceMaintenance3Properties {}
17335
17336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html>
17337#[repr(C)]
17338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17339pub struct PhysicalDeviceMaintenance4Features {
17340    pub s_type: StructureType,
17341    pub next: *mut c_void,
17342    pub maintenance4: Bool32,
17343}
17344
17345impl Default for PhysicalDeviceMaintenance4Features {
17346    #[inline]
17347    fn default() -> Self {
17348        Self {
17349            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
17350            next: ptr::null_mut(),
17351            maintenance4: Bool32::default(),
17352        }
17353    }
17354}
17355
17356unsafe impl Send for PhysicalDeviceMaintenance4Features {}
17357unsafe impl Sync for PhysicalDeviceMaintenance4Features {}
17358
17359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html>
17360#[repr(C)]
17361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17362pub struct PhysicalDeviceMaintenance4Properties {
17363    pub s_type: StructureType,
17364    pub next: *mut c_void,
17365    pub max_buffer_size: DeviceSize,
17366}
17367
17368impl Default for PhysicalDeviceMaintenance4Properties {
17369    #[inline]
17370    fn default() -> Self {
17371        Self {
17372            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
17373            next: ptr::null_mut(),
17374            max_buffer_size: DeviceSize::default(),
17375        }
17376    }
17377}
17378
17379unsafe impl Send for PhysicalDeviceMaintenance4Properties {}
17380unsafe impl Sync for PhysicalDeviceMaintenance4Properties {}
17381
17382/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html>
17383#[repr(C)]
17384#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17385pub struct PhysicalDeviceMaintenance5Features {
17386    pub s_type: StructureType,
17387    pub next: *mut c_void,
17388    pub maintenance5: Bool32,
17389}
17390
17391impl Default for PhysicalDeviceMaintenance5Features {
17392    #[inline]
17393    fn default() -> Self {
17394        Self {
17395            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
17396            next: ptr::null_mut(),
17397            maintenance5: Bool32::default(),
17398        }
17399    }
17400}
17401
17402unsafe impl Send for PhysicalDeviceMaintenance5Features {}
17403unsafe impl Sync for PhysicalDeviceMaintenance5Features {}
17404
17405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html>
17406#[repr(C)]
17407#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17408pub struct PhysicalDeviceMaintenance5Properties {
17409    pub s_type: StructureType,
17410    pub next: *mut c_void,
17411    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
17412    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
17413    pub depth_stencil_swizzle_one_support: Bool32,
17414    pub polygon_mode_point_size: Bool32,
17415    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
17416    pub non_strict_wide_lines_use_parallelogram: Bool32,
17417}
17418
17419impl Default for PhysicalDeviceMaintenance5Properties {
17420    #[inline]
17421    fn default() -> Self {
17422        Self {
17423            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
17424            next: ptr::null_mut(),
17425            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
17426            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
17427            depth_stencil_swizzle_one_support: Bool32::default(),
17428            polygon_mode_point_size: Bool32::default(),
17429            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
17430            non_strict_wide_lines_use_parallelogram: Bool32::default(),
17431        }
17432    }
17433}
17434
17435unsafe impl Send for PhysicalDeviceMaintenance5Properties {}
17436unsafe impl Sync for PhysicalDeviceMaintenance5Properties {}
17437
17438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html>
17439#[repr(C)]
17440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17441pub struct PhysicalDeviceMaintenance6Features {
17442    pub s_type: StructureType,
17443    pub next: *mut c_void,
17444    pub maintenance6: Bool32,
17445}
17446
17447impl Default for PhysicalDeviceMaintenance6Features {
17448    #[inline]
17449    fn default() -> Self {
17450        Self {
17451            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,
17452            next: ptr::null_mut(),
17453            maintenance6: Bool32::default(),
17454        }
17455    }
17456}
17457
17458unsafe impl Send for PhysicalDeviceMaintenance6Features {}
17459unsafe impl Sync for PhysicalDeviceMaintenance6Features {}
17460
17461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html>
17462#[repr(C)]
17463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17464pub struct PhysicalDeviceMaintenance6Properties {
17465    pub s_type: StructureType,
17466    pub next: *mut c_void,
17467    pub block_texel_view_compatible_multiple_layers: Bool32,
17468    pub max_combined_image_sampler_descriptor_count: u32,
17469    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
17470}
17471
17472impl Default for PhysicalDeviceMaintenance6Properties {
17473    #[inline]
17474    fn default() -> Self {
17475        Self {
17476            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,
17477            next: ptr::null_mut(),
17478            block_texel_view_compatible_multiple_layers: Bool32::default(),
17479            max_combined_image_sampler_descriptor_count: u32::default(),
17480            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
17481        }
17482    }
17483}
17484
17485unsafe impl Send for PhysicalDeviceMaintenance6Properties {}
17486unsafe impl Sync for PhysicalDeviceMaintenance6Properties {}
17487
17488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html>
17489#[repr(C)]
17490#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17491pub struct PhysicalDeviceMaintenance7FeaturesKHR {
17492    pub s_type: StructureType,
17493    pub next: *mut c_void,
17494    pub maintenance7: Bool32,
17495}
17496
17497impl Default for PhysicalDeviceMaintenance7FeaturesKHR {
17498    #[inline]
17499    fn default() -> Self {
17500        Self {
17501            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR,
17502            next: ptr::null_mut(),
17503            maintenance7: Bool32::default(),
17504        }
17505    }
17506}
17507
17508unsafe impl Send for PhysicalDeviceMaintenance7FeaturesKHR {}
17509unsafe impl Sync for PhysicalDeviceMaintenance7FeaturesKHR {}
17510
17511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html>
17512#[repr(C)]
17513#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17514pub struct PhysicalDeviceMaintenance7PropertiesKHR {
17515    pub s_type: StructureType,
17516    pub next: *mut c_void,
17517    pub robust_fragment_shading_rate_attachment_access: Bool32,
17518    pub separate_depth_stencil_attachment_access: Bool32,
17519    pub max_descriptor_set_total_uniform_buffers_dynamic: u32,
17520    pub max_descriptor_set_total_storage_buffers_dynamic: u32,
17521    pub max_descriptor_set_total_buffers_dynamic: u32,
17522    pub max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32,
17523    pub max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32,
17524    pub max_descriptor_set_update_after_bind_total_buffers_dynamic: u32,
17525}
17526
17527impl Default for PhysicalDeviceMaintenance7PropertiesKHR {
17528    #[inline]
17529    fn default() -> Self {
17530        Self {
17531            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR,
17532            next: ptr::null_mut(),
17533            robust_fragment_shading_rate_attachment_access: Bool32::default(),
17534            separate_depth_stencil_attachment_access: Bool32::default(),
17535            max_descriptor_set_total_uniform_buffers_dynamic: u32::default(),
17536            max_descriptor_set_total_storage_buffers_dynamic: u32::default(),
17537            max_descriptor_set_total_buffers_dynamic: u32::default(),
17538            max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32::default(),
17539            max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32::default(),
17540            max_descriptor_set_update_after_bind_total_buffers_dynamic: u32::default(),
17541        }
17542    }
17543}
17544
17545unsafe impl Send for PhysicalDeviceMaintenance7PropertiesKHR {}
17546unsafe impl Sync for PhysicalDeviceMaintenance7PropertiesKHR {}
17547
17548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html>
17549#[repr(C)]
17550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17551pub struct PhysicalDeviceMaintenance8FeaturesKHR {
17552    pub s_type: StructureType,
17553    pub next: *mut c_void,
17554    pub maintenance8: Bool32,
17555}
17556
17557impl Default for PhysicalDeviceMaintenance8FeaturesKHR {
17558    #[inline]
17559    fn default() -> Self {
17560        Self {
17561            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR,
17562            next: ptr::null_mut(),
17563            maintenance8: Bool32::default(),
17564        }
17565    }
17566}
17567
17568unsafe impl Send for PhysicalDeviceMaintenance8FeaturesKHR {}
17569unsafe impl Sync for PhysicalDeviceMaintenance8FeaturesKHR {}
17570
17571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9FeaturesKHR.html>
17572#[repr(C)]
17573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17574pub struct PhysicalDeviceMaintenance9FeaturesKHR {
17575    pub s_type: StructureType,
17576    pub next: *mut c_void,
17577    pub maintenance9: Bool32,
17578}
17579
17580impl Default for PhysicalDeviceMaintenance9FeaturesKHR {
17581    #[inline]
17582    fn default() -> Self {
17583        Self {
17584            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR,
17585            next: ptr::null_mut(),
17586            maintenance9: Bool32::default(),
17587        }
17588    }
17589}
17590
17591unsafe impl Send for PhysicalDeviceMaintenance9FeaturesKHR {}
17592unsafe impl Sync for PhysicalDeviceMaintenance9FeaturesKHR {}
17593
17594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9PropertiesKHR.html>
17595#[repr(C)]
17596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17597pub struct PhysicalDeviceMaintenance9PropertiesKHR {
17598    pub s_type: StructureType,
17599    pub next: *mut c_void,
17600    pub image_2d_view_of_3d_sparse: Bool32,
17601    pub default_vertex_attribute_value: DefaultVertexAttributeValueKHR,
17602}
17603
17604impl Default for PhysicalDeviceMaintenance9PropertiesKHR {
17605    #[inline]
17606    fn default() -> Self {
17607        Self {
17608            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR,
17609            next: ptr::null_mut(),
17610            image_2d_view_of_3d_sparse: Bool32::default(),
17611            default_vertex_attribute_value: DefaultVertexAttributeValueKHR::default(),
17612        }
17613    }
17614}
17615
17616unsafe impl Send for PhysicalDeviceMaintenance9PropertiesKHR {}
17617unsafe impl Sync for PhysicalDeviceMaintenance9PropertiesKHR {}
17618
17619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html>
17620#[repr(C)]
17621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17622pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXT {
17623    pub s_type: StructureType,
17624    pub next: *mut c_void,
17625    pub memory_map_placed: Bool32,
17626    pub memory_map_range_placed: Bool32,
17627    pub memory_unmap_reserve: Bool32,
17628}
17629
17630impl Default for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
17631    #[inline]
17632    fn default() -> Self {
17633        Self {
17634            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT,
17635            next: ptr::null_mut(),
17636            memory_map_placed: Bool32::default(),
17637            memory_map_range_placed: Bool32::default(),
17638            memory_unmap_reserve: Bool32::default(),
17639        }
17640    }
17641}
17642
17643unsafe impl Send for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
17644unsafe impl Sync for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
17645
17646/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html>
17647#[repr(C)]
17648#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17649pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXT {
17650    pub s_type: StructureType,
17651    pub next: *mut c_void,
17652    pub min_placed_memory_map_alignment: DeviceSize,
17653}
17654
17655impl Default for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
17656    #[inline]
17657    fn default() -> Self {
17658        Self {
17659            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT,
17660            next: ptr::null_mut(),
17661            min_placed_memory_map_alignment: DeviceSize::default(),
17662        }
17663    }
17664}
17665
17666unsafe impl Send for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
17667unsafe impl Sync for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
17668
17669/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>
17670#[repr(C)]
17671#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17672pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
17673    pub s_type: StructureType,
17674    pub next: *mut c_void,
17675    pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS],
17676    pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS],
17677}
17678
17679impl Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
17680    #[inline]
17681    fn default() -> Self {
17682        Self {
17683            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
17684            next: ptr::null_mut(),
17685            heap_budget: [DeviceSize::default(); MAX_MEMORY_HEAPS],
17686            heap_usage: [DeviceSize::default(); MAX_MEMORY_HEAPS],
17687        }
17688    }
17689}
17690
17691unsafe impl Send for PhysicalDeviceMemoryBudgetPropertiesEXT {}
17692unsafe impl Sync for PhysicalDeviceMemoryBudgetPropertiesEXT {}
17693
17694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html>
17695#[repr(C)]
17696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17697pub struct PhysicalDeviceMemoryDecompressionFeaturesNV {
17698    pub s_type: StructureType,
17699    pub next: *mut c_void,
17700    pub memory_decompression: Bool32,
17701}
17702
17703impl Default for PhysicalDeviceMemoryDecompressionFeaturesNV {
17704    #[inline]
17705    fn default() -> Self {
17706        Self {
17707            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV,
17708            next: ptr::null_mut(),
17709            memory_decompression: Bool32::default(),
17710        }
17711    }
17712}
17713
17714unsafe impl Send for PhysicalDeviceMemoryDecompressionFeaturesNV {}
17715unsafe impl Sync for PhysicalDeviceMemoryDecompressionFeaturesNV {}
17716
17717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html>
17718#[repr(C)]
17719#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17720pub struct PhysicalDeviceMemoryDecompressionPropertiesNV {
17721    pub s_type: StructureType,
17722    pub next: *mut c_void,
17723    pub decompression_methods: MemoryDecompressionMethodFlagsNV,
17724    pub max_decompression_indirect_count: u64,
17725}
17726
17727impl Default for PhysicalDeviceMemoryDecompressionPropertiesNV {
17728    #[inline]
17729    fn default() -> Self {
17730        Self {
17731            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV,
17732            next: ptr::null_mut(),
17733            decompression_methods: MemoryDecompressionMethodFlagsNV::default(),
17734            max_decompression_indirect_count: u64::default(),
17735        }
17736    }
17737}
17738
17739unsafe impl Send for PhysicalDeviceMemoryDecompressionPropertiesNV {}
17740unsafe impl Sync for PhysicalDeviceMemoryDecompressionPropertiesNV {}
17741
17742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>
17743#[repr(C)]
17744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17745pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
17746    pub s_type: StructureType,
17747    pub next: *mut c_void,
17748    pub memory_priority: Bool32,
17749}
17750
17751impl Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
17752    #[inline]
17753    fn default() -> Self {
17754        Self {
17755            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
17756            next: ptr::null_mut(),
17757            memory_priority: Bool32::default(),
17758        }
17759    }
17760}
17761
17762unsafe impl Send for PhysicalDeviceMemoryPriorityFeaturesEXT {}
17763unsafe impl Sync for PhysicalDeviceMemoryPriorityFeaturesEXT {}
17764
17765/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html>
17766#[repr(C)]
17767#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
17768pub struct PhysicalDeviceMemoryProperties {
17769    pub memory_type_count: u32,
17770    pub memory_types: [MemoryType; MAX_MEMORY_TYPES],
17771    pub memory_heap_count: u32,
17772    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS],
17773}
17774
17775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html>
17776#[repr(C)]
17777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17778pub struct PhysicalDeviceMemoryProperties2 {
17779    pub s_type: StructureType,
17780    pub next: *mut c_void,
17781    pub memory_properties: PhysicalDeviceMemoryProperties,
17782}
17783
17784impl Default for PhysicalDeviceMemoryProperties2 {
17785    #[inline]
17786    fn default() -> Self {
17787        Self {
17788            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
17789            next: ptr::null_mut(),
17790            memory_properties: PhysicalDeviceMemoryProperties::default(),
17791        }
17792    }
17793}
17794
17795unsafe impl Send for PhysicalDeviceMemoryProperties2 {}
17796unsafe impl Sync for PhysicalDeviceMemoryProperties2 {}
17797
17798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html>
17799#[repr(C)]
17800#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17801pub struct PhysicalDeviceMeshShaderFeaturesEXT {
17802    pub s_type: StructureType,
17803    pub next: *mut c_void,
17804    pub task_shader: Bool32,
17805    pub mesh_shader: Bool32,
17806    pub multiview_mesh_shader: Bool32,
17807    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
17808    pub mesh_shader_queries: Bool32,
17809}
17810
17811impl Default for PhysicalDeviceMeshShaderFeaturesEXT {
17812    #[inline]
17813    fn default() -> Self {
17814        Self {
17815            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT,
17816            next: ptr::null_mut(),
17817            task_shader: Bool32::default(),
17818            mesh_shader: Bool32::default(),
17819            multiview_mesh_shader: Bool32::default(),
17820            primitive_fragment_shading_rate_mesh_shader: Bool32::default(),
17821            mesh_shader_queries: Bool32::default(),
17822        }
17823    }
17824}
17825
17826unsafe impl Send for PhysicalDeviceMeshShaderFeaturesEXT {}
17827unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesEXT {}
17828
17829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>
17830#[repr(C)]
17831#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17832pub struct PhysicalDeviceMeshShaderFeaturesNV {
17833    pub s_type: StructureType,
17834    pub next: *mut c_void,
17835    pub task_shader: Bool32,
17836    pub mesh_shader: Bool32,
17837}
17838
17839impl Default for PhysicalDeviceMeshShaderFeaturesNV {
17840    #[inline]
17841    fn default() -> Self {
17842        Self {
17843            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
17844            next: ptr::null_mut(),
17845            task_shader: Bool32::default(),
17846            mesh_shader: Bool32::default(),
17847        }
17848    }
17849}
17850
17851unsafe impl Send for PhysicalDeviceMeshShaderFeaturesNV {}
17852unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesNV {}
17853
17854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html>
17855#[repr(C)]
17856#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17857pub struct PhysicalDeviceMeshShaderPropertiesEXT {
17858    pub s_type: StructureType,
17859    pub next: *mut c_void,
17860    pub max_task_work_group_total_count: u32,
17861    pub max_task_work_group_count: [u32; 3],
17862    pub max_task_work_group_invocations: u32,
17863    pub max_task_work_group_size: [u32; 3],
17864    pub max_task_payload_size: u32,
17865    pub max_task_shared_memory_size: u32,
17866    pub max_task_payload_and_shared_memory_size: u32,
17867    pub max_mesh_work_group_total_count: u32,
17868    pub max_mesh_work_group_count: [u32; 3],
17869    pub max_mesh_work_group_invocations: u32,
17870    pub max_mesh_work_group_size: [u32; 3],
17871    pub max_mesh_shared_memory_size: u32,
17872    pub max_mesh_payload_and_shared_memory_size: u32,
17873    pub max_mesh_output_memory_size: u32,
17874    pub max_mesh_payload_and_output_memory_size: u32,
17875    pub max_mesh_output_components: u32,
17876    pub max_mesh_output_vertices: u32,
17877    pub max_mesh_output_primitives: u32,
17878    pub max_mesh_output_layers: u32,
17879    pub max_mesh_multiview_view_count: u32,
17880    pub mesh_output_per_vertex_granularity: u32,
17881    pub mesh_output_per_primitive_granularity: u32,
17882    pub max_preferred_task_work_group_invocations: u32,
17883    pub max_preferred_mesh_work_group_invocations: u32,
17884    pub prefers_local_invocation_vertex_output: Bool32,
17885    pub prefers_local_invocation_primitive_output: Bool32,
17886    pub prefers_compact_vertex_output: Bool32,
17887    pub prefers_compact_primitive_output: Bool32,
17888}
17889
17890impl Default for PhysicalDeviceMeshShaderPropertiesEXT {
17891    #[inline]
17892    fn default() -> Self {
17893        Self {
17894            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT,
17895            next: ptr::null_mut(),
17896            max_task_work_group_total_count: u32::default(),
17897            max_task_work_group_count: [u32::default(); 3],
17898            max_task_work_group_invocations: u32::default(),
17899            max_task_work_group_size: [u32::default(); 3],
17900            max_task_payload_size: u32::default(),
17901            max_task_shared_memory_size: u32::default(),
17902            max_task_payload_and_shared_memory_size: u32::default(),
17903            max_mesh_work_group_total_count: u32::default(),
17904            max_mesh_work_group_count: [u32::default(); 3],
17905            max_mesh_work_group_invocations: u32::default(),
17906            max_mesh_work_group_size: [u32::default(); 3],
17907            max_mesh_shared_memory_size: u32::default(),
17908            max_mesh_payload_and_shared_memory_size: u32::default(),
17909            max_mesh_output_memory_size: u32::default(),
17910            max_mesh_payload_and_output_memory_size: u32::default(),
17911            max_mesh_output_components: u32::default(),
17912            max_mesh_output_vertices: u32::default(),
17913            max_mesh_output_primitives: u32::default(),
17914            max_mesh_output_layers: u32::default(),
17915            max_mesh_multiview_view_count: u32::default(),
17916            mesh_output_per_vertex_granularity: u32::default(),
17917            mesh_output_per_primitive_granularity: u32::default(),
17918            max_preferred_task_work_group_invocations: u32::default(),
17919            max_preferred_mesh_work_group_invocations: u32::default(),
17920            prefers_local_invocation_vertex_output: Bool32::default(),
17921            prefers_local_invocation_primitive_output: Bool32::default(),
17922            prefers_compact_vertex_output: Bool32::default(),
17923            prefers_compact_primitive_output: Bool32::default(),
17924        }
17925    }
17926}
17927
17928unsafe impl Send for PhysicalDeviceMeshShaderPropertiesEXT {}
17929unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesEXT {}
17930
17931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>
17932#[repr(C)]
17933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17934pub struct PhysicalDeviceMeshShaderPropertiesNV {
17935    pub s_type: StructureType,
17936    pub next: *mut c_void,
17937    pub max_draw_mesh_tasks_count: u32,
17938    pub max_task_work_group_invocations: u32,
17939    pub max_task_work_group_size: [u32; 3],
17940    pub max_task_total_memory_size: u32,
17941    pub max_task_output_count: u32,
17942    pub max_mesh_work_group_invocations: u32,
17943    pub max_mesh_work_group_size: [u32; 3],
17944    pub max_mesh_total_memory_size: u32,
17945    pub max_mesh_output_vertices: u32,
17946    pub max_mesh_output_primitives: u32,
17947    pub max_mesh_multiview_view_count: u32,
17948    pub mesh_output_per_vertex_granularity: u32,
17949    pub mesh_output_per_primitive_granularity: u32,
17950}
17951
17952impl Default for PhysicalDeviceMeshShaderPropertiesNV {
17953    #[inline]
17954    fn default() -> Self {
17955        Self {
17956            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
17957            next: ptr::null_mut(),
17958            max_draw_mesh_tasks_count: u32::default(),
17959            max_task_work_group_invocations: u32::default(),
17960            max_task_work_group_size: [u32::default(); 3],
17961            max_task_total_memory_size: u32::default(),
17962            max_task_output_count: u32::default(),
17963            max_mesh_work_group_invocations: u32::default(),
17964            max_mesh_work_group_size: [u32::default(); 3],
17965            max_mesh_total_memory_size: u32::default(),
17966            max_mesh_output_vertices: u32::default(),
17967            max_mesh_output_primitives: u32::default(),
17968            max_mesh_multiview_view_count: u32::default(),
17969            mesh_output_per_vertex_granularity: u32::default(),
17970            mesh_output_per_primitive_granularity: u32::default(),
17971        }
17972    }
17973}
17974
17975unsafe impl Send for PhysicalDeviceMeshShaderPropertiesNV {}
17976unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesNV {}
17977
17978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>
17979#[repr(C)]
17980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17981pub struct PhysicalDeviceMultiDrawFeaturesEXT {
17982    pub s_type: StructureType,
17983    pub next: *mut c_void,
17984    pub multi_draw: Bool32,
17985}
17986
17987impl Default for PhysicalDeviceMultiDrawFeaturesEXT {
17988    #[inline]
17989    fn default() -> Self {
17990        Self {
17991            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
17992            next: ptr::null_mut(),
17993            multi_draw: Bool32::default(),
17994        }
17995    }
17996}
17997
17998unsafe impl Send for PhysicalDeviceMultiDrawFeaturesEXT {}
17999unsafe impl Sync for PhysicalDeviceMultiDrawFeaturesEXT {}
18000
18001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>
18002#[repr(C)]
18003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18004pub struct PhysicalDeviceMultiDrawPropertiesEXT {
18005    pub s_type: StructureType,
18006    pub next: *mut c_void,
18007    pub max_multi_draw_count: u32,
18008}
18009
18010impl Default for PhysicalDeviceMultiDrawPropertiesEXT {
18011    #[inline]
18012    fn default() -> Self {
18013        Self {
18014            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
18015            next: ptr::null_mut(),
18016            max_multi_draw_count: u32::default(),
18017        }
18018    }
18019}
18020
18021unsafe impl Send for PhysicalDeviceMultiDrawPropertiesEXT {}
18022unsafe impl Sync for PhysicalDeviceMultiDrawPropertiesEXT {}
18023
18024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html>
18025#[repr(C)]
18026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18027pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18028    pub s_type: StructureType,
18029    pub next: *mut c_void,
18030    pub multisampled_render_to_single_sampled: Bool32,
18031}
18032
18033impl Default for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
18034    #[inline]
18035    fn default() -> Self {
18036        Self {
18037            s_type:
18038                StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT,
18039            next: ptr::null_mut(),
18040            multisampled_render_to_single_sampled: Bool32::default(),
18041        }
18042    }
18043}
18044
18045unsafe impl Send for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18046unsafe impl Sync for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
18047
18048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html>
18049#[repr(C)]
18050#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18051pub struct PhysicalDeviceMultiviewFeatures {
18052    pub s_type: StructureType,
18053    pub next: *mut c_void,
18054    pub multiview: Bool32,
18055    pub multiview_geometry_shader: Bool32,
18056    pub multiview_tessellation_shader: Bool32,
18057}
18058
18059impl Default for PhysicalDeviceMultiviewFeatures {
18060    #[inline]
18061    fn default() -> Self {
18062        Self {
18063            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
18064            next: ptr::null_mut(),
18065            multiview: Bool32::default(),
18066            multiview_geometry_shader: Bool32::default(),
18067            multiview_tessellation_shader: Bool32::default(),
18068        }
18069    }
18070}
18071
18072unsafe impl Send for PhysicalDeviceMultiviewFeatures {}
18073unsafe impl Sync for PhysicalDeviceMultiviewFeatures {}
18074
18075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>
18076#[repr(C)]
18077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18078pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18079    pub s_type: StructureType,
18080    pub next: *mut c_void,
18081    pub per_view_position_all_components: Bool32,
18082}
18083
18084impl Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
18085    #[inline]
18086    fn default() -> Self {
18087        Self {
18088            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
18089            next: ptr::null_mut(),
18090            per_view_position_all_components: Bool32::default(),
18091        }
18092    }
18093}
18094
18095unsafe impl Send for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18096unsafe impl Sync for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
18097
18098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html>
18099#[repr(C)]
18100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18101pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18102    pub s_type: StructureType,
18103    pub next: *mut c_void,
18104    pub multiview_per_view_render_areas: Bool32,
18105}
18106
18107impl Default for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18108    #[inline]
18109    fn default() -> Self {
18110        Self {
18111            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM,
18112            next: ptr::null_mut(),
18113            multiview_per_view_render_areas: Bool32::default(),
18114        }
18115    }
18116}
18117
18118unsafe impl Send for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18119unsafe impl Sync for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
18120
18121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html>
18122#[repr(C)]
18123#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18124pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18125    pub s_type: StructureType,
18126    pub next: *mut c_void,
18127    pub multiview_per_view_viewports: Bool32,
18128}
18129
18130impl Default for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18131    #[inline]
18132    fn default() -> Self {
18133        Self {
18134            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM,
18135            next: ptr::null_mut(),
18136            multiview_per_view_viewports: Bool32::default(),
18137        }
18138    }
18139}
18140
18141unsafe impl Send for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18142unsafe impl Sync for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
18143
18144/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html>
18145#[repr(C)]
18146#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18147pub struct PhysicalDeviceMultiviewProperties {
18148    pub s_type: StructureType,
18149    pub next: *mut c_void,
18150    pub max_multiview_view_count: u32,
18151    pub max_multiview_instance_index: u32,
18152}
18153
18154impl Default for PhysicalDeviceMultiviewProperties {
18155    #[inline]
18156    fn default() -> Self {
18157        Self {
18158            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
18159            next: ptr::null_mut(),
18160            max_multiview_view_count: u32::default(),
18161            max_multiview_instance_index: u32::default(),
18162        }
18163    }
18164}
18165
18166unsafe impl Send for PhysicalDeviceMultiviewProperties {}
18167unsafe impl Sync for PhysicalDeviceMultiviewProperties {}
18168
18169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html>
18170#[repr(C)]
18171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18172pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18173    pub s_type: StructureType,
18174    pub next: *mut c_void,
18175    pub mutable_descriptor_type: Bool32,
18176}
18177
18178impl Default for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
18179    #[inline]
18180    fn default() -> Self {
18181        Self {
18182            s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
18183            next: ptr::null_mut(),
18184            mutable_descriptor_type: Bool32::default(),
18185        }
18186    }
18187}
18188
18189unsafe impl Send for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18190unsafe impl Sync for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
18191
18192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html>
18193#[repr(C)]
18194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18195pub struct PhysicalDeviceNestedCommandBufferFeaturesEXT {
18196    pub s_type: StructureType,
18197    pub next: *mut c_void,
18198    pub nested_command_buffer: Bool32,
18199    pub nested_command_buffer_rendering: Bool32,
18200    pub nested_command_buffer_simultaneous_use: Bool32,
18201}
18202
18203impl Default for PhysicalDeviceNestedCommandBufferFeaturesEXT {
18204    #[inline]
18205    fn default() -> Self {
18206        Self {
18207            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT,
18208            next: ptr::null_mut(),
18209            nested_command_buffer: Bool32::default(),
18210            nested_command_buffer_rendering: Bool32::default(),
18211            nested_command_buffer_simultaneous_use: Bool32::default(),
18212        }
18213    }
18214}
18215
18216unsafe impl Send for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18217unsafe impl Sync for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
18218
18219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html>
18220#[repr(C)]
18221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18222pub struct PhysicalDeviceNestedCommandBufferPropertiesEXT {
18223    pub s_type: StructureType,
18224    pub next: *mut c_void,
18225    pub max_command_buffer_nesting_level: u32,
18226}
18227
18228impl Default for PhysicalDeviceNestedCommandBufferPropertiesEXT {
18229    #[inline]
18230    fn default() -> Self {
18231        Self {
18232            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT,
18233            next: ptr::null_mut(),
18234            max_command_buffer_nesting_level: u32::default(),
18235        }
18236    }
18237}
18238
18239unsafe impl Send for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18240unsafe impl Sync for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
18241
18242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html>
18243#[repr(C)]
18244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18245pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18246    pub s_type: StructureType,
18247    pub next: *mut c_void,
18248    pub non_seamless_cube_map: Bool32,
18249}
18250
18251impl Default for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
18252    #[inline]
18253    fn default() -> Self {
18254        Self {
18255            s_type: StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
18256            next: ptr::null_mut(),
18257            non_seamless_cube_map: Bool32::default(),
18258        }
18259    }
18260}
18261
18262unsafe impl Send for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18263unsafe impl Sync for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
18264
18265/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html>
18266#[repr(C)]
18267#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18268pub struct PhysicalDeviceOpacityMicromapFeaturesEXT {
18269    pub s_type: StructureType,
18270    pub next: *mut c_void,
18271    pub micromap: Bool32,
18272    pub micromap_capture_replay: Bool32,
18273    pub micromap_host_commands: Bool32,
18274}
18275
18276impl Default for PhysicalDeviceOpacityMicromapFeaturesEXT {
18277    #[inline]
18278    fn default() -> Self {
18279        Self {
18280            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT,
18281            next: ptr::null_mut(),
18282            micromap: Bool32::default(),
18283            micromap_capture_replay: Bool32::default(),
18284            micromap_host_commands: Bool32::default(),
18285        }
18286    }
18287}
18288
18289unsafe impl Send for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18290unsafe impl Sync for PhysicalDeviceOpacityMicromapFeaturesEXT {}
18291
18292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html>
18293#[repr(C)]
18294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18295pub struct PhysicalDeviceOpacityMicromapPropertiesEXT {
18296    pub s_type: StructureType,
18297    pub next: *mut c_void,
18298    pub max_opacity2_state_subdivision_level: u32,
18299    pub max_opacity4_state_subdivision_level: u32,
18300}
18301
18302impl Default for PhysicalDeviceOpacityMicromapPropertiesEXT {
18303    #[inline]
18304    fn default() -> Self {
18305        Self {
18306            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT,
18307            next: ptr::null_mut(),
18308            max_opacity2_state_subdivision_level: u32::default(),
18309            max_opacity4_state_subdivision_level: u32::default(),
18310        }
18311    }
18312}
18313
18314unsafe impl Send for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18315unsafe impl Sync for PhysicalDeviceOpacityMicromapPropertiesEXT {}
18316
18317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html>
18318#[repr(C)]
18319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18320pub struct PhysicalDeviceOpticalFlowFeaturesNV {
18321    pub s_type: StructureType,
18322    pub next: *mut c_void,
18323    pub optical_flow: Bool32,
18324}
18325
18326impl Default for PhysicalDeviceOpticalFlowFeaturesNV {
18327    #[inline]
18328    fn default() -> Self {
18329        Self {
18330            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV,
18331            next: ptr::null_mut(),
18332            optical_flow: Bool32::default(),
18333        }
18334    }
18335}
18336
18337unsafe impl Send for PhysicalDeviceOpticalFlowFeaturesNV {}
18338unsafe impl Sync for PhysicalDeviceOpticalFlowFeaturesNV {}
18339
18340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html>
18341#[repr(C)]
18342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18343pub struct PhysicalDeviceOpticalFlowPropertiesNV {
18344    pub s_type: StructureType,
18345    pub next: *mut c_void,
18346    pub supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV,
18347    pub supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV,
18348    pub hint_supported: Bool32,
18349    pub cost_supported: Bool32,
18350    pub bidirectional_flow_supported: Bool32,
18351    pub global_flow_supported: Bool32,
18352    pub min_width: u32,
18353    pub min_height: u32,
18354    pub max_width: u32,
18355    pub max_height: u32,
18356    pub max_num_regions_of_interest: u32,
18357}
18358
18359impl Default for PhysicalDeviceOpticalFlowPropertiesNV {
18360    #[inline]
18361    fn default() -> Self {
18362        Self {
18363            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV,
18364            next: ptr::null_mut(),
18365            supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18366            supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
18367            hint_supported: Bool32::default(),
18368            cost_supported: Bool32::default(),
18369            bidirectional_flow_supported: Bool32::default(),
18370            global_flow_supported: Bool32::default(),
18371            min_width: u32::default(),
18372            min_height: u32::default(),
18373            max_width: u32::default(),
18374            max_height: u32::default(),
18375            max_num_regions_of_interest: u32::default(),
18376        }
18377    }
18378}
18379
18380unsafe impl Send for PhysicalDeviceOpticalFlowPropertiesNV {}
18381unsafe impl Sync for PhysicalDeviceOpticalFlowPropertiesNV {}
18382
18383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>
18384#[repr(C)]
18385#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18386pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
18387    pub s_type: StructureType,
18388    pub next: *mut c_void,
18389    pub pci_domain: u32,
18390    pub pci_bus: u32,
18391    pub pci_device: u32,
18392    pub pci_function: u32,
18393}
18394
18395impl Default for PhysicalDevicePCIBusInfoPropertiesEXT {
18396    #[inline]
18397    fn default() -> Self {
18398        Self {
18399            s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
18400            next: ptr::null_mut(),
18401            pci_domain: u32::default(),
18402            pci_bus: u32::default(),
18403            pci_device: u32::default(),
18404            pci_function: u32::default(),
18405        }
18406    }
18407}
18408
18409unsafe impl Send for PhysicalDevicePCIBusInfoPropertiesEXT {}
18410unsafe impl Sync for PhysicalDevicePCIBusInfoPropertiesEXT {}
18411
18412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>
18413#[repr(C)]
18414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18415pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18416    pub s_type: StructureType,
18417    pub next: *mut c_void,
18418    pub pageable_device_local_memory: Bool32,
18419}
18420
18421impl Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
18422    #[inline]
18423    fn default() -> Self {
18424        Self {
18425            s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
18426            next: ptr::null_mut(),
18427            pageable_device_local_memory: Bool32::default(),
18428        }
18429    }
18430}
18431
18432unsafe impl Send for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18433unsafe impl Sync for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
18434
18435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html>
18436#[repr(C)]
18437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18438pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18439    pub s_type: StructureType,
18440    pub next: *mut c_void,
18441    pub partitioned_acceleration_structure: Bool32,
18442}
18443
18444impl Default for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
18445    #[inline]
18446    fn default() -> Self {
18447        Self {
18448            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV,
18449            next: ptr::null_mut(),
18450            partitioned_acceleration_structure: Bool32::default(),
18451        }
18452    }
18453}
18454
18455unsafe impl Send for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
18456unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
18457
18458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html>
18459#[repr(C)]
18460#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18461pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
18462    pub s_type: StructureType,
18463    pub next: *mut c_void,
18464    pub max_partition_count: u32,
18465}
18466
18467impl Default for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
18468    #[inline]
18469    fn default() -> Self {
18470        Self {
18471            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV,
18472            next: ptr::null_mut(),
18473            max_partition_count: u32::default(),
18474        }
18475    }
18476}
18477
18478unsafe impl Send for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
18479unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
18480
18481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html>
18482#[repr(C)]
18483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18484pub struct PhysicalDevicePerStageDescriptorSetFeaturesNV {
18485    pub s_type: StructureType,
18486    pub next: *mut c_void,
18487    pub per_stage_descriptor_set: Bool32,
18488    pub dynamic_pipeline_layout: Bool32,
18489}
18490
18491impl Default for PhysicalDevicePerStageDescriptorSetFeaturesNV {
18492    #[inline]
18493    fn default() -> Self {
18494        Self {
18495            s_type: StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV,
18496            next: ptr::null_mut(),
18497            per_stage_descriptor_set: Bool32::default(),
18498            dynamic_pipeline_layout: Bool32::default(),
18499        }
18500    }
18501}
18502
18503unsafe impl Send for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
18504unsafe impl Sync for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
18505
18506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>
18507#[repr(C)]
18508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18509pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
18510    pub s_type: StructureType,
18511    pub next: *mut c_void,
18512    pub performance_counter_query_pools: Bool32,
18513    pub performance_counter_multiple_query_pools: Bool32,
18514}
18515
18516impl Default for PhysicalDevicePerformanceQueryFeaturesKHR {
18517    #[inline]
18518    fn default() -> Self {
18519        Self {
18520            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
18521            next: ptr::null_mut(),
18522            performance_counter_query_pools: Bool32::default(),
18523            performance_counter_multiple_query_pools: Bool32::default(),
18524        }
18525    }
18526}
18527
18528unsafe impl Send for PhysicalDevicePerformanceQueryFeaturesKHR {}
18529unsafe impl Sync for PhysicalDevicePerformanceQueryFeaturesKHR {}
18530
18531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>
18532#[repr(C)]
18533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18534pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
18535    pub s_type: StructureType,
18536    pub next: *mut c_void,
18537    pub allow_command_buffer_query_copies: Bool32,
18538}
18539
18540impl Default for PhysicalDevicePerformanceQueryPropertiesKHR {
18541    #[inline]
18542    fn default() -> Self {
18543        Self {
18544            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
18545            next: ptr::null_mut(),
18546            allow_command_buffer_query_copies: Bool32::default(),
18547        }
18548    }
18549}
18550
18551unsafe impl Send for PhysicalDevicePerformanceQueryPropertiesKHR {}
18552unsafe impl Sync for PhysicalDevicePerformanceQueryPropertiesKHR {}
18553
18554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html>
18555#[repr(C)]
18556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18557pub struct PhysicalDevicePipelineBinaryFeaturesKHR {
18558    pub s_type: StructureType,
18559    pub next: *mut c_void,
18560    pub pipeline_binaries: Bool32,
18561}
18562
18563impl Default for PhysicalDevicePipelineBinaryFeaturesKHR {
18564    #[inline]
18565    fn default() -> Self {
18566        Self {
18567            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR,
18568            next: ptr::null_mut(),
18569            pipeline_binaries: Bool32::default(),
18570        }
18571    }
18572}
18573
18574unsafe impl Send for PhysicalDevicePipelineBinaryFeaturesKHR {}
18575unsafe impl Sync for PhysicalDevicePipelineBinaryFeaturesKHR {}
18576
18577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html>
18578#[repr(C)]
18579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18580pub struct PhysicalDevicePipelineBinaryPropertiesKHR {
18581    pub s_type: StructureType,
18582    pub next: *mut c_void,
18583    pub pipeline_binary_internal_cache: Bool32,
18584    pub pipeline_binary_internal_cache_control: Bool32,
18585    pub pipeline_binary_prefers_internal_cache: Bool32,
18586    pub pipeline_binary_precompiled_internal_cache: Bool32,
18587    pub pipeline_binary_compressed_data: Bool32,
18588}
18589
18590impl Default for PhysicalDevicePipelineBinaryPropertiesKHR {
18591    #[inline]
18592    fn default() -> Self {
18593        Self {
18594            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR,
18595            next: ptr::null_mut(),
18596            pipeline_binary_internal_cache: Bool32::default(),
18597            pipeline_binary_internal_cache_control: Bool32::default(),
18598            pipeline_binary_prefers_internal_cache: Bool32::default(),
18599            pipeline_binary_precompiled_internal_cache: Bool32::default(),
18600            pipeline_binary_compressed_data: Bool32::default(),
18601        }
18602    }
18603}
18604
18605unsafe impl Send for PhysicalDevicePipelineBinaryPropertiesKHR {}
18606unsafe impl Sync for PhysicalDevicePipelineBinaryPropertiesKHR {}
18607
18608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC.html>
18609#[repr(C)]
18610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18611pub struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
18612    pub s_type: StructureType,
18613    pub next: *mut c_void,
18614    pub pipeline_cache_incremental_mode: Bool32,
18615}
18616
18617impl Default for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
18618    #[inline]
18619    fn default() -> Self {
18620        Self {
18621            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC,
18622            next: ptr::null_mut(),
18623            pipeline_cache_incremental_mode: Bool32::default(),
18624        }
18625    }
18626}
18627
18628unsafe impl Send for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
18629unsafe impl Sync for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
18630
18631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html>
18632#[repr(C)]
18633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18634pub struct PhysicalDevicePipelineCreationCacheControlFeatures {
18635    pub s_type: StructureType,
18636    pub next: *mut c_void,
18637    pub pipeline_creation_cache_control: Bool32,
18638}
18639
18640impl Default for PhysicalDevicePipelineCreationCacheControlFeatures {
18641    #[inline]
18642    fn default() -> Self {
18643        Self {
18644            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
18645            next: ptr::null_mut(),
18646            pipeline_creation_cache_control: Bool32::default(),
18647        }
18648    }
18649}
18650
18651unsafe impl Send for PhysicalDevicePipelineCreationCacheControlFeatures {}
18652unsafe impl Sync for PhysicalDevicePipelineCreationCacheControlFeatures {}
18653
18654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>
18655#[repr(C)]
18656#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18657pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
18658    pub s_type: StructureType,
18659    pub next: *mut c_void,
18660    pub pipeline_executable_info: Bool32,
18661}
18662
18663impl Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
18664    #[inline]
18665    fn default() -> Self {
18666        Self {
18667            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
18668            next: ptr::null_mut(),
18669            pipeline_executable_info: Bool32::default(),
18670        }
18671    }
18672}
18673
18674unsafe impl Send for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
18675unsafe impl Sync for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
18676
18677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html>
18678#[repr(C)]
18679#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18680pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
18681    pub s_type: StructureType,
18682    pub next: *mut c_void,
18683    pub pipeline_library_group_handles: Bool32,
18684}
18685
18686impl Default for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
18687    #[inline]
18688    fn default() -> Self {
18689        Self {
18690            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
18691            next: ptr::null_mut(),
18692            pipeline_library_group_handles: Bool32::default(),
18693        }
18694    }
18695}
18696
18697unsafe impl Send for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
18698unsafe impl Sync for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
18699
18700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html>
18701#[repr(C)]
18702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18703pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARM {
18704    pub s_type: StructureType,
18705    pub next: *mut c_void,
18706    pub pipeline_opacity_micromap: Bool32,
18707}
18708
18709impl Default for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
18710    #[inline]
18711    fn default() -> Self {
18712        Self {
18713            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM,
18714            next: ptr::null_mut(),
18715            pipeline_opacity_micromap: Bool32::default(),
18716        }
18717    }
18718}
18719
18720unsafe impl Send for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
18721unsafe impl Sync for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
18722
18723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html>
18724#[repr(C)]
18725#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18726pub struct PhysicalDevicePipelinePropertiesFeaturesEXT {
18727    pub s_type: StructureType,
18728    pub next: *mut c_void,
18729    pub pipeline_properties_identifier: Bool32,
18730}
18731
18732impl Default for PhysicalDevicePipelinePropertiesFeaturesEXT {
18733    #[inline]
18734    fn default() -> Self {
18735        Self {
18736            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT,
18737            next: ptr::null_mut(),
18738            pipeline_properties_identifier: Bool32::default(),
18739        }
18740    }
18741}
18742
18743unsafe impl Send for PhysicalDevicePipelinePropertiesFeaturesEXT {}
18744unsafe impl Sync for PhysicalDevicePipelinePropertiesFeaturesEXT {}
18745
18746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html>
18747#[repr(C)]
18748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18749pub struct PhysicalDevicePipelineProtectedAccessFeatures {
18750    pub s_type: StructureType,
18751    pub next: *mut c_void,
18752    pub pipeline_protected_access: Bool32,
18753}
18754
18755impl Default for PhysicalDevicePipelineProtectedAccessFeatures {
18756    #[inline]
18757    fn default() -> Self {
18758        Self {
18759            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
18760            next: ptr::null_mut(),
18761            pipeline_protected_access: Bool32::default(),
18762        }
18763    }
18764}
18765
18766unsafe impl Send for PhysicalDevicePipelineProtectedAccessFeatures {}
18767unsafe impl Sync for PhysicalDevicePipelineProtectedAccessFeatures {}
18768
18769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html>
18770#[repr(C)]
18771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18772pub struct PhysicalDevicePipelineRobustnessFeatures {
18773    pub s_type: StructureType,
18774    pub next: *mut c_void,
18775    pub pipeline_robustness: Bool32,
18776}
18777
18778impl Default for PhysicalDevicePipelineRobustnessFeatures {
18779    #[inline]
18780    fn default() -> Self {
18781        Self {
18782            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,
18783            next: ptr::null_mut(),
18784            pipeline_robustness: Bool32::default(),
18785        }
18786    }
18787}
18788
18789unsafe impl Send for PhysicalDevicePipelineRobustnessFeatures {}
18790unsafe impl Sync for PhysicalDevicePipelineRobustnessFeatures {}
18791
18792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html>
18793#[repr(C)]
18794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18795pub struct PhysicalDevicePipelineRobustnessProperties {
18796    pub s_type: StructureType,
18797    pub next: *mut c_void,
18798    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
18799    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
18800    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
18801    pub default_robustness_images: PipelineRobustnessImageBehavior,
18802}
18803
18804impl Default for PhysicalDevicePipelineRobustnessProperties {
18805    #[inline]
18806    fn default() -> Self {
18807        Self {
18808            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,
18809            next: ptr::null_mut(),
18810            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
18811            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
18812            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
18813            default_robustness_images: PipelineRobustnessImageBehavior::default(),
18814        }
18815    }
18816}
18817
18818unsafe impl Send for PhysicalDevicePipelineRobustnessProperties {}
18819unsafe impl Sync for PhysicalDevicePipelineRobustnessProperties {}
18820
18821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html>
18822#[repr(C)]
18823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18824pub struct PhysicalDevicePointClippingProperties {
18825    pub s_type: StructureType,
18826    pub next: *mut c_void,
18827    pub point_clipping_behavior: PointClippingBehavior,
18828}
18829
18830impl Default for PhysicalDevicePointClippingProperties {
18831    #[inline]
18832    fn default() -> Self {
18833        Self {
18834            s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
18835            next: ptr::null_mut(),
18836            point_clipping_behavior: PointClippingBehavior::default(),
18837        }
18838    }
18839}
18840
18841unsafe impl Send for PhysicalDevicePointClippingProperties {}
18842unsafe impl Sync for PhysicalDevicePointClippingProperties {}
18843
18844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>
18845#[repr(C)]
18846#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18847pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
18848    pub s_type: StructureType,
18849    pub next: *mut c_void,
18850    pub constant_alpha_color_blend_factors: Bool32,
18851    pub events: Bool32,
18852    pub image_view_format_reinterpretation: Bool32,
18853    pub image_view_format_swizzle: Bool32,
18854    pub image_view_2d_on_3d_image: Bool32,
18855    pub multisample_array_image: Bool32,
18856    pub mutable_comparison_samplers: Bool32,
18857    pub point_polygons: Bool32,
18858    pub sampler_mip_lod_bias: Bool32,
18859    pub separate_stencil_mask_ref: Bool32,
18860    pub shader_sample_rate_interpolation_functions: Bool32,
18861    pub tessellation_isolines: Bool32,
18862    pub tessellation_point_mode: Bool32,
18863    pub triangle_fans: Bool32,
18864    pub vertex_attribute_access_beyond_stride: Bool32,
18865}
18866
18867impl Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
18868    #[inline]
18869    fn default() -> Self {
18870        Self {
18871            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
18872            next: ptr::null_mut(),
18873            constant_alpha_color_blend_factors: Bool32::default(),
18874            events: Bool32::default(),
18875            image_view_format_reinterpretation: Bool32::default(),
18876            image_view_format_swizzle: Bool32::default(),
18877            image_view_2d_on_3d_image: Bool32::default(),
18878            multisample_array_image: Bool32::default(),
18879            mutable_comparison_samplers: Bool32::default(),
18880            point_polygons: Bool32::default(),
18881            sampler_mip_lod_bias: Bool32::default(),
18882            separate_stencil_mask_ref: Bool32::default(),
18883            shader_sample_rate_interpolation_functions: Bool32::default(),
18884            tessellation_isolines: Bool32::default(),
18885            tessellation_point_mode: Bool32::default(),
18886            triangle_fans: Bool32::default(),
18887            vertex_attribute_access_beyond_stride: Bool32::default(),
18888        }
18889    }
18890}
18891
18892unsafe impl Send for PhysicalDevicePortabilitySubsetFeaturesKHR {}
18893unsafe impl Sync for PhysicalDevicePortabilitySubsetFeaturesKHR {}
18894
18895/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>
18896#[repr(C)]
18897#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18898pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
18899    pub s_type: StructureType,
18900    pub next: *mut c_void,
18901    pub min_vertex_input_binding_stride_alignment: u32,
18902}
18903
18904impl Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
18905    #[inline]
18906    fn default() -> Self {
18907        Self {
18908            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
18909            next: ptr::null_mut(),
18910            min_vertex_input_binding_stride_alignment: u32::default(),
18911        }
18912    }
18913}
18914
18915unsafe impl Send for PhysicalDevicePortabilitySubsetPropertiesKHR {}
18916unsafe impl Sync for PhysicalDevicePortabilitySubsetPropertiesKHR {}
18917
18918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html>
18919#[repr(C)]
18920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18921pub struct PhysicalDevicePresentBarrierFeaturesNV {
18922    pub s_type: StructureType,
18923    pub next: *mut c_void,
18924    pub present_barrier: Bool32,
18925}
18926
18927impl Default for PhysicalDevicePresentBarrierFeaturesNV {
18928    #[inline]
18929    fn default() -> Self {
18930        Self {
18931            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV,
18932            next: ptr::null_mut(),
18933            present_barrier: Bool32::default(),
18934        }
18935    }
18936}
18937
18938unsafe impl Send for PhysicalDevicePresentBarrierFeaturesNV {}
18939unsafe impl Sync for PhysicalDevicePresentBarrierFeaturesNV {}
18940
18941/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentId2FeaturesKHR.html>
18942#[repr(C)]
18943#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18944pub struct PhysicalDevicePresentId2FeaturesKHR {
18945    pub s_type: StructureType,
18946    pub next: *mut c_void,
18947    pub present_id2: Bool32,
18948}
18949
18950impl Default for PhysicalDevicePresentId2FeaturesKHR {
18951    #[inline]
18952    fn default() -> Self {
18953        Self {
18954            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR,
18955            next: ptr::null_mut(),
18956            present_id2: Bool32::default(),
18957        }
18958    }
18959}
18960
18961unsafe impl Send for PhysicalDevicePresentId2FeaturesKHR {}
18962unsafe impl Sync for PhysicalDevicePresentId2FeaturesKHR {}
18963
18964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>
18965#[repr(C)]
18966#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18967pub struct PhysicalDevicePresentIdFeaturesKHR {
18968    pub s_type: StructureType,
18969    pub next: *mut c_void,
18970    pub present_id: Bool32,
18971}
18972
18973impl Default for PhysicalDevicePresentIdFeaturesKHR {
18974    #[inline]
18975    fn default() -> Self {
18976        Self {
18977            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
18978            next: ptr::null_mut(),
18979            present_id: Bool32::default(),
18980        }
18981    }
18982}
18983
18984unsafe impl Send for PhysicalDevicePresentIdFeaturesKHR {}
18985unsafe impl Sync for PhysicalDevicePresentIdFeaturesKHR {}
18986
18987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html>
18988#[repr(C)]
18989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18990pub struct PhysicalDevicePresentMeteringFeaturesNV {
18991    pub s_type: StructureType,
18992    pub next: *mut c_void,
18993    pub present_metering: Bool32,
18994}
18995
18996impl Default for PhysicalDevicePresentMeteringFeaturesNV {
18997    #[inline]
18998    fn default() -> Self {
18999        Self {
19000            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV,
19001            next: ptr::null_mut(),
19002            present_metering: Bool32::default(),
19003        }
19004    }
19005}
19006
19007unsafe impl Send for PhysicalDevicePresentMeteringFeaturesNV {}
19008unsafe impl Sync for PhysicalDevicePresentMeteringFeaturesNV {}
19009
19010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.html>
19011#[repr(C)]
19012#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19013pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19014    pub s_type: StructureType,
19015    pub next: *mut c_void,
19016    pub present_mode_fifo_latest_ready: Bool32,
19017}
19018
19019impl Default for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
19020    #[inline]
19021    fn default() -> Self {
19022        Self {
19023            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR,
19024            next: ptr::null_mut(),
19025            present_mode_fifo_latest_ready: Bool32::default(),
19026        }
19027    }
19028}
19029
19030unsafe impl Send for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19031unsafe impl Sync for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
19032
19033/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWait2FeaturesKHR.html>
19034#[repr(C)]
19035#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19036pub struct PhysicalDevicePresentWait2FeaturesKHR {
19037    pub s_type: StructureType,
19038    pub next: *mut c_void,
19039    pub present_wait2: Bool32,
19040}
19041
19042impl Default for PhysicalDevicePresentWait2FeaturesKHR {
19043    #[inline]
19044    fn default() -> Self {
19045        Self {
19046            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR,
19047            next: ptr::null_mut(),
19048            present_wait2: Bool32::default(),
19049        }
19050    }
19051}
19052
19053unsafe impl Send for PhysicalDevicePresentWait2FeaturesKHR {}
19054unsafe impl Sync for PhysicalDevicePresentWait2FeaturesKHR {}
19055
19056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>
19057#[repr(C)]
19058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19059pub struct PhysicalDevicePresentWaitFeaturesKHR {
19060    pub s_type: StructureType,
19061    pub next: *mut c_void,
19062    pub present_wait: Bool32,
19063}
19064
19065impl Default for PhysicalDevicePresentWaitFeaturesKHR {
19066    #[inline]
19067    fn default() -> Self {
19068        Self {
19069            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
19070            next: ptr::null_mut(),
19071            present_wait: Bool32::default(),
19072        }
19073    }
19074}
19075
19076unsafe impl Send for PhysicalDevicePresentWaitFeaturesKHR {}
19077unsafe impl Sync for PhysicalDevicePresentWaitFeaturesKHR {}
19078
19079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>
19080#[repr(C)]
19081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19082pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19083    pub s_type: StructureType,
19084    pub next: *mut c_void,
19085    pub primitive_topology_list_restart: Bool32,
19086    pub primitive_topology_patch_list_restart: Bool32,
19087}
19088
19089impl Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
19090    #[inline]
19091    fn default() -> Self {
19092        Self {
19093            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
19094            next: ptr::null_mut(),
19095            primitive_topology_list_restart: Bool32::default(),
19096            primitive_topology_patch_list_restart: Bool32::default(),
19097        }
19098    }
19099}
19100
19101unsafe impl Send for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19102unsafe impl Sync for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
19103
19104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html>
19105#[repr(C)]
19106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19107pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19108    pub s_type: StructureType,
19109    pub next: *mut c_void,
19110    pub primitives_generated_query: Bool32,
19111    pub primitives_generated_query_with_rasterizer_discard: Bool32,
19112    pub primitives_generated_query_with_non_zero_streams: Bool32,
19113}
19114
19115impl Default for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
19116    #[inline]
19117    fn default() -> Self {
19118        Self {
19119            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,
19120            next: ptr::null_mut(),
19121            primitives_generated_query: Bool32::default(),
19122            primitives_generated_query_with_rasterizer_discard: Bool32::default(),
19123            primitives_generated_query_with_non_zero_streams: Bool32::default(),
19124        }
19125    }
19126}
19127
19128unsafe impl Send for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19129unsafe impl Sync for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
19130
19131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html>
19132#[repr(C)]
19133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19134pub struct PhysicalDevicePrivateDataFeatures {
19135    pub s_type: StructureType,
19136    pub next: *mut c_void,
19137    pub private_data: Bool32,
19138}
19139
19140impl Default for PhysicalDevicePrivateDataFeatures {
19141    #[inline]
19142    fn default() -> Self {
19143        Self {
19144            s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
19145            next: ptr::null_mut(),
19146            private_data: Bool32::default(),
19147        }
19148    }
19149}
19150
19151unsafe impl Send for PhysicalDevicePrivateDataFeatures {}
19152unsafe impl Sync for PhysicalDevicePrivateDataFeatures {}
19153
19154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html>
19155#[repr(C)]
19156#[derive(Copy, Clone, Default, Debug, PartialEq)]
19157pub struct PhysicalDeviceProperties {
19158    pub api_version: u32,
19159    pub driver_version: u32,
19160    pub vendor_id: u32,
19161    pub device_id: u32,
19162    pub device_type: PhysicalDeviceType,
19163    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
19164    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
19165    pub limits: PhysicalDeviceLimits,
19166    pub sparse_properties: PhysicalDeviceSparseProperties,
19167}
19168
19169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html>
19170#[repr(C)]
19171#[derive(Copy, Clone, Debug, PartialEq)]
19172pub struct PhysicalDeviceProperties2 {
19173    pub s_type: StructureType,
19174    pub next: *mut c_void,
19175    pub properties: PhysicalDeviceProperties,
19176}
19177
19178impl Default for PhysicalDeviceProperties2 {
19179    #[inline]
19180    fn default() -> Self {
19181        Self {
19182            s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
19183            next: ptr::null_mut(),
19184            properties: PhysicalDeviceProperties::default(),
19185        }
19186    }
19187}
19188
19189unsafe impl Send for PhysicalDeviceProperties2 {}
19190unsafe impl Sync for PhysicalDeviceProperties2 {}
19191
19192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>
19193#[repr(C)]
19194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19195pub struct PhysicalDeviceProtectedMemoryFeatures {
19196    pub s_type: StructureType,
19197    pub next: *mut c_void,
19198    pub protected_memory: Bool32,
19199}
19200
19201impl Default for PhysicalDeviceProtectedMemoryFeatures {
19202    #[inline]
19203    fn default() -> Self {
19204        Self {
19205            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
19206            next: ptr::null_mut(),
19207            protected_memory: Bool32::default(),
19208        }
19209    }
19210}
19211
19212unsafe impl Send for PhysicalDeviceProtectedMemoryFeatures {}
19213unsafe impl Sync for PhysicalDeviceProtectedMemoryFeatures {}
19214
19215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>
19216#[repr(C)]
19217#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19218pub struct PhysicalDeviceProtectedMemoryProperties {
19219    pub s_type: StructureType,
19220    pub next: *mut c_void,
19221    pub protected_no_fault: Bool32,
19222}
19223
19224impl Default for PhysicalDeviceProtectedMemoryProperties {
19225    #[inline]
19226    fn default() -> Self {
19227        Self {
19228            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
19229            next: ptr::null_mut(),
19230            protected_no_fault: Bool32::default(),
19231        }
19232    }
19233}
19234
19235unsafe impl Send for PhysicalDeviceProtectedMemoryProperties {}
19236unsafe impl Sync for PhysicalDeviceProtectedMemoryProperties {}
19237
19238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>
19239#[repr(C)]
19240#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19241pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
19242    pub s_type: StructureType,
19243    pub next: *mut c_void,
19244    pub provoking_vertex_last: Bool32,
19245    pub transform_feedback_preserves_provoking_vertex: Bool32,
19246}
19247
19248impl Default for PhysicalDeviceProvokingVertexFeaturesEXT {
19249    #[inline]
19250    fn default() -> Self {
19251        Self {
19252            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
19253            next: ptr::null_mut(),
19254            provoking_vertex_last: Bool32::default(),
19255            transform_feedback_preserves_provoking_vertex: Bool32::default(),
19256        }
19257    }
19258}
19259
19260unsafe impl Send for PhysicalDeviceProvokingVertexFeaturesEXT {}
19261unsafe impl Sync for PhysicalDeviceProvokingVertexFeaturesEXT {}
19262
19263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>
19264#[repr(C)]
19265#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19266pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
19267    pub s_type: StructureType,
19268    pub next: *mut c_void,
19269    pub provoking_vertex_mode_per_pipeline: Bool32,
19270    pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
19271}
19272
19273impl Default for PhysicalDeviceProvokingVertexPropertiesEXT {
19274    #[inline]
19275    fn default() -> Self {
19276        Self {
19277            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
19278            next: ptr::null_mut(),
19279            provoking_vertex_mode_per_pipeline: Bool32::default(),
19280            transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
19281        }
19282    }
19283}
19284
19285unsafe impl Send for PhysicalDeviceProvokingVertexPropertiesEXT {}
19286unsafe impl Sync for PhysicalDeviceProvokingVertexPropertiesEXT {}
19287
19288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html>
19289#[repr(C)]
19290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19291pub struct PhysicalDevicePushDescriptorProperties {
19292    pub s_type: StructureType,
19293    pub next: *mut c_void,
19294    pub max_push_descriptors: u32,
19295}
19296
19297impl Default for PhysicalDevicePushDescriptorProperties {
19298    #[inline]
19299    fn default() -> Self {
19300        Self {
19301            s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,
19302            next: ptr::null_mut(),
19303            max_push_descriptors: u32::default(),
19304        }
19305    }
19306}
19307
19308unsafe impl Send for PhysicalDevicePushDescriptorProperties {}
19309unsafe impl Sync for PhysicalDevicePushDescriptorProperties {}
19310
19311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.html>
19312#[repr(C)]
19313#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19314pub struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19315    pub s_type: StructureType,
19316    pub next: *const c_void,
19317    pub queue_family_index: u32,
19318    pub engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM,
19319}
19320
19321impl Default for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
19322    #[inline]
19323    fn default() -> Self {
19324        Self {
19325            s_type:
19326                StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM,
19327            next: ptr::null(),
19328            queue_family_index: u32::default(),
19329            engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM::default(),
19330        }
19331    }
19332}
19333
19334unsafe impl Send for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19335unsafe impl Sync for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
19336
19337/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>
19338#[repr(C)]
19339#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19340pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19341    pub s_type: StructureType,
19342    pub next: *mut c_void,
19343    pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
19344}
19345
19346impl Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
19347    #[inline]
19348    fn default() -> Self {
19349        Self {
19350            s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
19351            next: ptr::null_mut(),
19352            format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
19353        }
19354    }
19355}
19356
19357unsafe impl Send for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19358unsafe impl Sync for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
19359
19360/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html>
19361#[repr(C)]
19362#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19363pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
19364    pub s_type: StructureType,
19365    pub next: *mut c_void,
19366    pub rasterization_order_color_attachment_access: Bool32,
19367    pub rasterization_order_depth_attachment_access: Bool32,
19368    pub rasterization_order_stencil_attachment_access: Bool32,
19369}
19370
19371impl Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
19372    #[inline]
19373    fn default() -> Self {
19374        Self {
19375            s_type:
19376                StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
19377            next: ptr::null_mut(),
19378            rasterization_order_color_attachment_access: Bool32::default(),
19379            rasterization_order_depth_attachment_access: Bool32::default(),
19380            rasterization_order_stencil_attachment_access: Bool32::default(),
19381        }
19382    }
19383}
19384
19385unsafe impl Send for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
19386unsafe impl Sync for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
19387
19388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html>
19389#[repr(C)]
19390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19391pub struct PhysicalDeviceRawAccessChainsFeaturesNV {
19392    pub s_type: StructureType,
19393    pub next: *mut c_void,
19394    pub shader_raw_access_chains: Bool32,
19395}
19396
19397impl Default for PhysicalDeviceRawAccessChainsFeaturesNV {
19398    #[inline]
19399    fn default() -> Self {
19400        Self {
19401            s_type: StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV,
19402            next: ptr::null_mut(),
19403            shader_raw_access_chains: Bool32::default(),
19404        }
19405    }
19406}
19407
19408unsafe impl Send for PhysicalDeviceRawAccessChainsFeaturesNV {}
19409unsafe impl Sync for PhysicalDeviceRawAccessChainsFeaturesNV {}
19410
19411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>
19412#[repr(C)]
19413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19414pub struct PhysicalDeviceRayQueryFeaturesKHR {
19415    pub s_type: StructureType,
19416    pub next: *mut c_void,
19417    pub ray_query: Bool32,
19418}
19419
19420impl Default for PhysicalDeviceRayQueryFeaturesKHR {
19421    #[inline]
19422    fn default() -> Self {
19423        Self {
19424            s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
19425            next: ptr::null_mut(),
19426            ray_query: Bool32::default(),
19427        }
19428    }
19429}
19430
19431unsafe impl Send for PhysicalDeviceRayQueryFeaturesKHR {}
19432unsafe impl Sync for PhysicalDeviceRayQueryFeaturesKHR {}
19433
19434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html>
19435#[repr(C)]
19436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19437pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
19438    pub s_type: StructureType,
19439    pub next: *mut c_void,
19440    pub ray_tracing_invocation_reorder: Bool32,
19441}
19442
19443impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
19444    #[inline]
19445    fn default() -> Self {
19446        Self {
19447            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV,
19448            next: ptr::null_mut(),
19449            ray_tracing_invocation_reorder: Bool32::default(),
19450        }
19451    }
19452}
19453
19454unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
19455unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
19456
19457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html>
19458#[repr(C)]
19459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19460pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
19461    pub s_type: StructureType,
19462    pub next: *mut c_void,
19463    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeNV,
19464}
19465
19466impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
19467    #[inline]
19468    fn default() -> Self {
19469        Self {
19470            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV,
19471            next: ptr::null_mut(),
19472            ray_tracing_invocation_reorder_reordering_hint:
19473                RayTracingInvocationReorderModeNV::default(),
19474        }
19475    }
19476}
19477
19478unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
19479unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
19480
19481/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html>
19482#[repr(C)]
19483#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19484pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
19485    pub s_type: StructureType,
19486    pub next: *mut c_void,
19487    pub spheres: Bool32,
19488    pub linear_swept_spheres: Bool32,
19489}
19490
19491impl Default for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
19492    #[inline]
19493    fn default() -> Self {
19494        Self {
19495            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV,
19496            next: ptr::null_mut(),
19497            spheres: Bool32::default(),
19498            linear_swept_spheres: Bool32::default(),
19499        }
19500    }
19501}
19502
19503unsafe impl Send for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
19504unsafe impl Sync for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
19505
19506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html>
19507#[repr(C)]
19508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19509pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
19510    pub s_type: StructureType,
19511    pub next: *mut c_void,
19512    pub ray_tracing_maintenance1: Bool32,
19513    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
19514}
19515
19516impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
19517    #[inline]
19518    fn default() -> Self {
19519        Self {
19520            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR,
19521            next: ptr::null_mut(),
19522            ray_tracing_maintenance1: Bool32::default(),
19523            ray_tracing_pipeline_trace_rays_indirect2: Bool32::default(),
19524        }
19525    }
19526}
19527
19528unsafe impl Send for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
19529unsafe impl Sync for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
19530
19531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>
19532#[repr(C)]
19533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19534pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
19535    pub s_type: StructureType,
19536    pub next: *mut c_void,
19537    pub ray_tracing_motion_blur: Bool32,
19538    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
19539}
19540
19541impl Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
19542    #[inline]
19543    fn default() -> Self {
19544        Self {
19545            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
19546            next: ptr::null_mut(),
19547            ray_tracing_motion_blur: Bool32::default(),
19548            ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
19549        }
19550    }
19551}
19552
19553unsafe impl Send for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
19554unsafe impl Sync for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
19555
19556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>
19557#[repr(C)]
19558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19559pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
19560    pub s_type: StructureType,
19561    pub next: *mut c_void,
19562    pub ray_tracing_pipeline: Bool32,
19563    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
19564    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
19565    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
19566    pub ray_traversal_primitive_culling: Bool32,
19567}
19568
19569impl Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
19570    #[inline]
19571    fn default() -> Self {
19572        Self {
19573            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
19574            next: ptr::null_mut(),
19575            ray_tracing_pipeline: Bool32::default(),
19576            ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
19577            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
19578            ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
19579            ray_traversal_primitive_culling: Bool32::default(),
19580        }
19581    }
19582}
19583
19584unsafe impl Send for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
19585unsafe impl Sync for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
19586
19587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>
19588#[repr(C)]
19589#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19590pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
19591    pub s_type: StructureType,
19592    pub next: *mut c_void,
19593    pub shader_group_handle_size: u32,
19594    pub max_ray_recursion_depth: u32,
19595    pub max_shader_group_stride: u32,
19596    pub shader_group_base_alignment: u32,
19597    pub shader_group_handle_capture_replay_size: u32,
19598    pub max_ray_dispatch_invocation_count: u32,
19599    pub shader_group_handle_alignment: u32,
19600    pub max_ray_hit_attribute_size: u32,
19601}
19602
19603impl Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
19604    #[inline]
19605    fn default() -> Self {
19606        Self {
19607            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
19608            next: ptr::null_mut(),
19609            shader_group_handle_size: u32::default(),
19610            max_ray_recursion_depth: u32::default(),
19611            max_shader_group_stride: u32::default(),
19612            shader_group_base_alignment: u32::default(),
19613            shader_group_handle_capture_replay_size: u32::default(),
19614            max_ray_dispatch_invocation_count: u32::default(),
19615            shader_group_handle_alignment: u32::default(),
19616            max_ray_hit_attribute_size: u32::default(),
19617        }
19618    }
19619}
19620
19621unsafe impl Send for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
19622unsafe impl Sync for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
19623
19624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html>
19625#[repr(C)]
19626#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19627pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
19628    pub s_type: StructureType,
19629    pub next: *mut c_void,
19630    pub ray_tracing_position_fetch: Bool32,
19631}
19632
19633impl Default for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
19634    #[inline]
19635    fn default() -> Self {
19636        Self {
19637            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR,
19638            next: ptr::null_mut(),
19639            ray_tracing_position_fetch: Bool32::default(),
19640        }
19641    }
19642}
19643
19644unsafe impl Send for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
19645unsafe impl Sync for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
19646
19647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>
19648#[repr(C)]
19649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19650pub struct PhysicalDeviceRayTracingPropertiesNV {
19651    pub s_type: StructureType,
19652    pub next: *mut c_void,
19653    pub shader_group_handle_size: u32,
19654    pub max_recursion_depth: u32,
19655    pub max_shader_group_stride: u32,
19656    pub shader_group_base_alignment: u32,
19657    pub max_geometry_count: u64,
19658    pub max_instance_count: u64,
19659    pub max_triangle_count: u64,
19660    pub max_descriptor_set_acceleration_structures: u32,
19661}
19662
19663impl Default for PhysicalDeviceRayTracingPropertiesNV {
19664    #[inline]
19665    fn default() -> Self {
19666        Self {
19667            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
19668            next: ptr::null_mut(),
19669            shader_group_handle_size: u32::default(),
19670            max_recursion_depth: u32::default(),
19671            max_shader_group_stride: u32::default(),
19672            shader_group_base_alignment: u32::default(),
19673            max_geometry_count: u64::default(),
19674            max_instance_count: u64::default(),
19675            max_triangle_count: u64::default(),
19676            max_descriptor_set_acceleration_structures: u32::default(),
19677        }
19678    }
19679}
19680
19681unsafe impl Send for PhysicalDeviceRayTracingPropertiesNV {}
19682unsafe impl Sync for PhysicalDeviceRayTracingPropertiesNV {}
19683
19684/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html>
19685#[repr(C)]
19686#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19687pub struct PhysicalDeviceRayTracingValidationFeaturesNV {
19688    pub s_type: StructureType,
19689    pub next: *mut c_void,
19690    pub ray_tracing_validation: Bool32,
19691}
19692
19693impl Default for PhysicalDeviceRayTracingValidationFeaturesNV {
19694    #[inline]
19695    fn default() -> Self {
19696        Self {
19697            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV,
19698            next: ptr::null_mut(),
19699            ray_tracing_validation: Bool32::default(),
19700        }
19701    }
19702}
19703
19704unsafe impl Send for PhysicalDeviceRayTracingValidationFeaturesNV {}
19705unsafe impl Sync for PhysicalDeviceRayTracingValidationFeaturesNV {}
19706
19707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html>
19708#[repr(C)]
19709#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19710pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
19711    pub s_type: StructureType,
19712    pub next: *mut c_void,
19713    pub relaxed_line_rasterization: Bool32,
19714}
19715
19716impl Default for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
19717    #[inline]
19718    fn default() -> Self {
19719        Self {
19720            s_type: StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG,
19721            next: ptr::null_mut(),
19722            relaxed_line_rasterization: Bool32::default(),
19723        }
19724    }
19725}
19726
19727unsafe impl Send for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
19728unsafe impl Sync for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
19729
19730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html>
19731#[repr(C)]
19732#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19733pub struct PhysicalDeviceRenderPassStripedFeaturesARM {
19734    pub s_type: StructureType,
19735    pub next: *mut c_void,
19736    pub render_pass_striped: Bool32,
19737}
19738
19739impl Default for PhysicalDeviceRenderPassStripedFeaturesARM {
19740    #[inline]
19741    fn default() -> Self {
19742        Self {
19743            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
19744            next: ptr::null_mut(),
19745            render_pass_striped: Bool32::default(),
19746        }
19747    }
19748}
19749
19750unsafe impl Send for PhysicalDeviceRenderPassStripedFeaturesARM {}
19751unsafe impl Sync for PhysicalDeviceRenderPassStripedFeaturesARM {}
19752
19753/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html>
19754#[repr(C)]
19755#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19756pub struct PhysicalDeviceRenderPassStripedPropertiesARM {
19757    pub s_type: StructureType,
19758    pub next: *mut c_void,
19759    pub render_pass_stripe_granularity: Extent2D,
19760    pub max_render_pass_stripes: u32,
19761}
19762
19763impl Default for PhysicalDeviceRenderPassStripedPropertiesARM {
19764    #[inline]
19765    fn default() -> Self {
19766        Self {
19767            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
19768            next: ptr::null_mut(),
19769            render_pass_stripe_granularity: Extent2D::default(),
19770            max_render_pass_stripes: u32::default(),
19771        }
19772    }
19773}
19774
19775unsafe impl Send for PhysicalDeviceRenderPassStripedPropertiesARM {}
19776unsafe impl Sync for PhysicalDeviceRenderPassStripedPropertiesARM {}
19777
19778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>
19779#[repr(C)]
19780#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19781pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
19782    pub s_type: StructureType,
19783    pub next: *mut c_void,
19784    pub representative_fragment_test: Bool32,
19785}
19786
19787impl Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
19788    #[inline]
19789    fn default() -> Self {
19790        Self {
19791            s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
19792            next: ptr::null_mut(),
19793            representative_fragment_test: Bool32::default(),
19794        }
19795    }
19796}
19797
19798unsafe impl Send for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
19799unsafe impl Sync for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
19800
19801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesKHR.html>
19802#[repr(C)]
19803#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19804pub struct PhysicalDeviceRobustness2FeaturesKHR {
19805    pub s_type: StructureType,
19806    pub next: *mut c_void,
19807    pub robust_buffer_access2: Bool32,
19808    pub robust_image_access2: Bool32,
19809    pub null_descriptor: Bool32,
19810}
19811
19812impl Default for PhysicalDeviceRobustness2FeaturesKHR {
19813    #[inline]
19814    fn default() -> Self {
19815        Self {
19816            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR,
19817            next: ptr::null_mut(),
19818            robust_buffer_access2: Bool32::default(),
19819            robust_image_access2: Bool32::default(),
19820            null_descriptor: Bool32::default(),
19821        }
19822    }
19823}
19824
19825unsafe impl Send for PhysicalDeviceRobustness2FeaturesKHR {}
19826unsafe impl Sync for PhysicalDeviceRobustness2FeaturesKHR {}
19827
19828/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesKHR.html>
19829#[repr(C)]
19830#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19831pub struct PhysicalDeviceRobustness2PropertiesKHR {
19832    pub s_type: StructureType,
19833    pub next: *mut c_void,
19834    pub robust_storage_buffer_access_size_alignment: DeviceSize,
19835    pub robust_uniform_buffer_access_size_alignment: DeviceSize,
19836}
19837
19838impl Default for PhysicalDeviceRobustness2PropertiesKHR {
19839    #[inline]
19840    fn default() -> Self {
19841        Self {
19842            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR,
19843            next: ptr::null_mut(),
19844            robust_storage_buffer_access_size_alignment: DeviceSize::default(),
19845            robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
19846        }
19847    }
19848}
19849
19850unsafe impl Send for PhysicalDeviceRobustness2PropertiesKHR {}
19851unsafe impl Sync for PhysicalDeviceRobustness2PropertiesKHR {}
19852
19853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>
19854#[repr(C)]
19855#[derive(Copy, Clone, Debug, PartialEq)]
19856pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
19857    pub s_type: StructureType,
19858    pub next: *mut c_void,
19859    pub sample_location_sample_counts: SampleCountFlags,
19860    pub max_sample_location_grid_size: Extent2D,
19861    pub sample_location_coordinate_range: [f32; 2],
19862    pub sample_location_sub_pixel_bits: u32,
19863    pub variable_sample_locations: Bool32,
19864}
19865
19866impl Default for PhysicalDeviceSampleLocationsPropertiesEXT {
19867    #[inline]
19868    fn default() -> Self {
19869        Self {
19870            s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
19871            next: ptr::null_mut(),
19872            sample_location_sample_counts: SampleCountFlags::default(),
19873            max_sample_location_grid_size: Extent2D::default(),
19874            sample_location_coordinate_range: [f32::default(); 2],
19875            sample_location_sub_pixel_bits: u32::default(),
19876            variable_sample_locations: Bool32::default(),
19877        }
19878    }
19879}
19880
19881unsafe impl Send for PhysicalDeviceSampleLocationsPropertiesEXT {}
19882unsafe impl Sync for PhysicalDeviceSampleLocationsPropertiesEXT {}
19883
19884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>
19885#[repr(C)]
19886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19887pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
19888    pub s_type: StructureType,
19889    pub next: *mut c_void,
19890    pub filter_minmax_single_component_formats: Bool32,
19891    pub filter_minmax_image_component_mapping: Bool32,
19892}
19893
19894impl Default for PhysicalDeviceSamplerFilterMinmaxProperties {
19895    #[inline]
19896    fn default() -> Self {
19897        Self {
19898            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
19899            next: ptr::null_mut(),
19900            filter_minmax_single_component_formats: Bool32::default(),
19901            filter_minmax_image_component_mapping: Bool32::default(),
19902        }
19903    }
19904}
19905
19906unsafe impl Send for PhysicalDeviceSamplerFilterMinmaxProperties {}
19907unsafe impl Sync for PhysicalDeviceSamplerFilterMinmaxProperties {}
19908
19909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>
19910#[repr(C)]
19911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19912pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
19913    pub s_type: StructureType,
19914    pub next: *mut c_void,
19915    pub sampler_ycbcr_conversion: Bool32,
19916}
19917
19918impl Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
19919    #[inline]
19920    fn default() -> Self {
19921        Self {
19922            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
19923            next: ptr::null_mut(),
19924            sampler_ycbcr_conversion: Bool32::default(),
19925        }
19926    }
19927}
19928
19929unsafe impl Send for PhysicalDeviceSamplerYcbcrConversionFeatures {}
19930unsafe impl Sync for PhysicalDeviceSamplerYcbcrConversionFeatures {}
19931
19932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>
19933#[repr(C)]
19934#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19935pub struct PhysicalDeviceScalarBlockLayoutFeatures {
19936    pub s_type: StructureType,
19937    pub next: *mut c_void,
19938    pub scalar_block_layout: Bool32,
19939}
19940
19941impl Default for PhysicalDeviceScalarBlockLayoutFeatures {
19942    #[inline]
19943    fn default() -> Self {
19944        Self {
19945            s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
19946            next: ptr::null_mut(),
19947            scalar_block_layout: Bool32::default(),
19948        }
19949    }
19950}
19951
19952unsafe impl Send for PhysicalDeviceScalarBlockLayoutFeatures {}
19953unsafe impl Sync for PhysicalDeviceScalarBlockLayoutFeatures {}
19954
19955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html>
19956#[repr(C)]
19957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19958pub struct PhysicalDeviceSchedulingControlsFeaturesARM {
19959    pub s_type: StructureType,
19960    pub next: *mut c_void,
19961    pub scheduling_controls: Bool32,
19962}
19963
19964impl Default for PhysicalDeviceSchedulingControlsFeaturesARM {
19965    #[inline]
19966    fn default() -> Self {
19967        Self {
19968            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM,
19969            next: ptr::null_mut(),
19970            scheduling_controls: Bool32::default(),
19971        }
19972    }
19973}
19974
19975unsafe impl Send for PhysicalDeviceSchedulingControlsFeaturesARM {}
19976unsafe impl Sync for PhysicalDeviceSchedulingControlsFeaturesARM {}
19977
19978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html>
19979#[repr(C)]
19980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19981pub struct PhysicalDeviceSchedulingControlsPropertiesARM {
19982    pub s_type: StructureType,
19983    pub next: *mut c_void,
19984    pub scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM,
19985}
19986
19987impl Default for PhysicalDeviceSchedulingControlsPropertiesARM {
19988    #[inline]
19989    fn default() -> Self {
19990        Self {
19991            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM,
19992            next: ptr::null_mut(),
19993            scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM::default(),
19994        }
19995    }
19996}
19997
19998unsafe impl Send for PhysicalDeviceSchedulingControlsPropertiesARM {}
19999unsafe impl Sync for PhysicalDeviceSchedulingControlsPropertiesARM {}
20000
20001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>
20002#[repr(C)]
20003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20004pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20005    pub s_type: StructureType,
20006    pub next: *mut c_void,
20007    pub separate_depth_stencil_layouts: Bool32,
20008}
20009
20010impl Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
20011    #[inline]
20012    fn default() -> Self {
20013        Self {
20014            s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
20015            next: ptr::null_mut(),
20016            separate_depth_stencil_layouts: Bool32::default(),
20017        }
20018    }
20019}
20020
20021unsafe impl Send for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20022unsafe impl Sync for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
20023
20024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html>
20025#[repr(C)]
20026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20027pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20028    pub s_type: StructureType,
20029    pub next: *mut c_void,
20030    pub shader_float16_vector_atomics: Bool32,
20031}
20032
20033impl Default for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
20034    #[inline]
20035    fn default() -> Self {
20036        Self {
20037            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV,
20038            next: ptr::null_mut(),
20039            shader_float16_vector_atomics: Bool32::default(),
20040        }
20041    }
20042}
20043
20044unsafe impl Send for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20045unsafe impl Sync for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
20046
20047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>
20048#[repr(C)]
20049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20050pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20051    pub s_type: StructureType,
20052    pub next: *mut c_void,
20053    pub shader_buffer_float16_atomics: Bool32,
20054    pub shader_buffer_float16_atomic_add: Bool32,
20055    pub shader_buffer_float16_atomic_min_max: Bool32,
20056    pub shader_buffer_float32_atomic_min_max: Bool32,
20057    pub shader_buffer_float64_atomic_min_max: Bool32,
20058    pub shader_shared_float16_atomics: Bool32,
20059    pub shader_shared_float16_atomic_add: Bool32,
20060    pub shader_shared_float16_atomic_min_max: Bool32,
20061    pub shader_shared_float32_atomic_min_max: Bool32,
20062    pub shader_shared_float64_atomic_min_max: Bool32,
20063    pub shader_image_float32_atomic_min_max: Bool32,
20064    pub sparse_image_float32_atomic_min_max: Bool32,
20065}
20066
20067impl Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
20068    #[inline]
20069    fn default() -> Self {
20070        Self {
20071            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
20072            next: ptr::null_mut(),
20073            shader_buffer_float16_atomics: Bool32::default(),
20074            shader_buffer_float16_atomic_add: Bool32::default(),
20075            shader_buffer_float16_atomic_min_max: Bool32::default(),
20076            shader_buffer_float32_atomic_min_max: Bool32::default(),
20077            shader_buffer_float64_atomic_min_max: Bool32::default(),
20078            shader_shared_float16_atomics: Bool32::default(),
20079            shader_shared_float16_atomic_add: Bool32::default(),
20080            shader_shared_float16_atomic_min_max: Bool32::default(),
20081            shader_shared_float32_atomic_min_max: Bool32::default(),
20082            shader_shared_float64_atomic_min_max: Bool32::default(),
20083            shader_image_float32_atomic_min_max: Bool32::default(),
20084            sparse_image_float32_atomic_min_max: Bool32::default(),
20085        }
20086    }
20087}
20088
20089unsafe impl Send for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20090unsafe impl Sync for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
20091
20092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>
20093#[repr(C)]
20094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20095pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20096    pub s_type: StructureType,
20097    pub next: *mut c_void,
20098    pub shader_buffer_float32_atomics: Bool32,
20099    pub shader_buffer_float32_atomic_add: Bool32,
20100    pub shader_buffer_float64_atomics: Bool32,
20101    pub shader_buffer_float64_atomic_add: Bool32,
20102    pub shader_shared_float32_atomics: Bool32,
20103    pub shader_shared_float32_atomic_add: Bool32,
20104    pub shader_shared_float64_atomics: Bool32,
20105    pub shader_shared_float64_atomic_add: Bool32,
20106    pub shader_image_float32_atomics: Bool32,
20107    pub shader_image_float32_atomic_add: Bool32,
20108    pub sparse_image_float32_atomics: Bool32,
20109    pub sparse_image_float32_atomic_add: Bool32,
20110}
20111
20112impl Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
20113    #[inline]
20114    fn default() -> Self {
20115        Self {
20116            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
20117            next: ptr::null_mut(),
20118            shader_buffer_float32_atomics: Bool32::default(),
20119            shader_buffer_float32_atomic_add: Bool32::default(),
20120            shader_buffer_float64_atomics: Bool32::default(),
20121            shader_buffer_float64_atomic_add: Bool32::default(),
20122            shader_shared_float32_atomics: Bool32::default(),
20123            shader_shared_float32_atomic_add: Bool32::default(),
20124            shader_shared_float64_atomics: Bool32::default(),
20125            shader_shared_float64_atomic_add: Bool32::default(),
20126            shader_image_float32_atomics: Bool32::default(),
20127            shader_image_float32_atomic_add: Bool32::default(),
20128            sparse_image_float32_atomics: Bool32::default(),
20129            sparse_image_float32_atomic_add: Bool32::default(),
20130        }
20131    }
20132}
20133
20134unsafe impl Send for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20135unsafe impl Sync for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
20136
20137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>
20138#[repr(C)]
20139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20140pub struct PhysicalDeviceShaderAtomicInt64Features {
20141    pub s_type: StructureType,
20142    pub next: *mut c_void,
20143    pub shader_buffer_int64_atomics: Bool32,
20144    pub shader_shared_int64_atomics: Bool32,
20145}
20146
20147impl Default for PhysicalDeviceShaderAtomicInt64Features {
20148    #[inline]
20149    fn default() -> Self {
20150        Self {
20151            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
20152            next: ptr::null_mut(),
20153            shader_buffer_int64_atomics: Bool32::default(),
20154            shader_shared_int64_atomics: Bool32::default(),
20155        }
20156    }
20157}
20158
20159unsafe impl Send for PhysicalDeviceShaderAtomicInt64Features {}
20160unsafe impl Sync for PhysicalDeviceShaderAtomicInt64Features {}
20161
20162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderBfloat16FeaturesKHR.html>
20163#[repr(C)]
20164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20165pub struct PhysicalDeviceShaderBfloat16FeaturesKHR {
20166    pub s_type: StructureType,
20167    pub next: *mut c_void,
20168    pub shader_b_float16_type: Bool32,
20169    pub shader_b_float_16dot_product: Bool32,
20170    pub shader_b_float16_cooperative_matrix: Bool32,
20171}
20172
20173impl Default for PhysicalDeviceShaderBfloat16FeaturesKHR {
20174    #[inline]
20175    fn default() -> Self {
20176        Self {
20177            s_type: StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR,
20178            next: ptr::null_mut(),
20179            shader_b_float16_type: Bool32::default(),
20180            shader_b_float_16dot_product: Bool32::default(),
20181            shader_b_float16_cooperative_matrix: Bool32::default(),
20182        }
20183    }
20184}
20185
20186unsafe impl Send for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20187unsafe impl Sync for PhysicalDeviceShaderBfloat16FeaturesKHR {}
20188
20189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>
20190#[repr(C)]
20191#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20192pub struct PhysicalDeviceShaderClockFeaturesKHR {
20193    pub s_type: StructureType,
20194    pub next: *mut c_void,
20195    pub shader_subgroup_clock: Bool32,
20196    pub shader_device_clock: Bool32,
20197}
20198
20199impl Default for PhysicalDeviceShaderClockFeaturesKHR {
20200    #[inline]
20201    fn default() -> Self {
20202        Self {
20203            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
20204            next: ptr::null_mut(),
20205            shader_subgroup_clock: Bool32::default(),
20206            shader_device_clock: Bool32::default(),
20207        }
20208    }
20209}
20210
20211unsafe impl Send for PhysicalDeviceShaderClockFeaturesKHR {}
20212unsafe impl Sync for PhysicalDeviceShaderClockFeaturesKHR {}
20213
20214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html>
20215#[repr(C)]
20216#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20217pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20218    pub s_type: StructureType,
20219    pub next: *mut c_void,
20220    pub shader_core_builtins: Bool32,
20221}
20222
20223impl Default for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
20224    #[inline]
20225    fn default() -> Self {
20226        Self {
20227            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
20228            next: ptr::null_mut(),
20229            shader_core_builtins: Bool32::default(),
20230        }
20231    }
20232}
20233
20234unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20235unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
20236
20237/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html>
20238#[repr(C)]
20239#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20240pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20241    pub s_type: StructureType,
20242    pub next: *mut c_void,
20243    pub shader_core_mask: u64,
20244    pub shader_core_count: u32,
20245    pub shader_warps_per_core: u32,
20246}
20247
20248impl Default for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
20249    #[inline]
20250    fn default() -> Self {
20251        Self {
20252            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
20253            next: ptr::null_mut(),
20254            shader_core_mask: u64::default(),
20255            shader_core_count: u32::default(),
20256            shader_warps_per_core: u32::default(),
20257        }
20258    }
20259}
20260
20261unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20262unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
20263
20264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>
20265#[repr(C)]
20266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20267pub struct PhysicalDeviceShaderCoreProperties2AMD {
20268    pub s_type: StructureType,
20269    pub next: *mut c_void,
20270    pub shader_core_features: ShaderCorePropertiesFlagsAMD,
20271    pub active_compute_unit_count: u32,
20272}
20273
20274impl Default for PhysicalDeviceShaderCoreProperties2AMD {
20275    #[inline]
20276    fn default() -> Self {
20277        Self {
20278            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
20279            next: ptr::null_mut(),
20280            shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
20281            active_compute_unit_count: u32::default(),
20282        }
20283    }
20284}
20285
20286unsafe impl Send for PhysicalDeviceShaderCoreProperties2AMD {}
20287unsafe impl Sync for PhysicalDeviceShaderCoreProperties2AMD {}
20288
20289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>
20290#[repr(C)]
20291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20292pub struct PhysicalDeviceShaderCorePropertiesAMD {
20293    pub s_type: StructureType,
20294    pub next: *mut c_void,
20295    pub shader_engine_count: u32,
20296    pub shader_arrays_per_engine_count: u32,
20297    pub compute_units_per_shader_array: u32,
20298    pub simd_per_compute_unit: u32,
20299    pub wavefronts_per_simd: u32,
20300    pub wavefront_size: u32,
20301    pub sgprs_per_simd: u32,
20302    pub min_sgpr_allocation: u32,
20303    pub max_sgpr_allocation: u32,
20304    pub sgpr_allocation_granularity: u32,
20305    pub vgprs_per_simd: u32,
20306    pub min_vgpr_allocation: u32,
20307    pub max_vgpr_allocation: u32,
20308    pub vgpr_allocation_granularity: u32,
20309}
20310
20311impl Default for PhysicalDeviceShaderCorePropertiesAMD {
20312    #[inline]
20313    fn default() -> Self {
20314        Self {
20315            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
20316            next: ptr::null_mut(),
20317            shader_engine_count: u32::default(),
20318            shader_arrays_per_engine_count: u32::default(),
20319            compute_units_per_shader_array: u32::default(),
20320            simd_per_compute_unit: u32::default(),
20321            wavefronts_per_simd: u32::default(),
20322            wavefront_size: u32::default(),
20323            sgprs_per_simd: u32::default(),
20324            min_sgpr_allocation: u32::default(),
20325            max_sgpr_allocation: u32::default(),
20326            sgpr_allocation_granularity: u32::default(),
20327            vgprs_per_simd: u32::default(),
20328            min_vgpr_allocation: u32::default(),
20329            max_vgpr_allocation: u32::default(),
20330            vgpr_allocation_granularity: u32::default(),
20331        }
20332    }
20333}
20334
20335unsafe impl Send for PhysicalDeviceShaderCorePropertiesAMD {}
20336unsafe impl Sync for PhysicalDeviceShaderCorePropertiesAMD {}
20337
20338/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html>
20339#[repr(C)]
20340#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20341pub struct PhysicalDeviceShaderCorePropertiesARM {
20342    pub s_type: StructureType,
20343    pub next: *mut c_void,
20344    pub pixel_rate: u32,
20345    pub texel_rate: u32,
20346    pub fma_rate: u32,
20347}
20348
20349impl Default for PhysicalDeviceShaderCorePropertiesARM {
20350    #[inline]
20351    fn default() -> Self {
20352        Self {
20353            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM,
20354            next: ptr::null_mut(),
20355            pixel_rate: u32::default(),
20356            texel_rate: u32::default(),
20357            fma_rate: u32::default(),
20358        }
20359    }
20360}
20361
20362unsafe impl Send for PhysicalDeviceShaderCorePropertiesARM {}
20363unsafe impl Sync for PhysicalDeviceShaderCorePropertiesARM {}
20364
20365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html>
20366#[repr(C)]
20367#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20368pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
20369    pub s_type: StructureType,
20370    pub next: *mut c_void,
20371    pub shader_demote_to_helper_invocation: Bool32,
20372}
20373
20374impl Default for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
20375    #[inline]
20376    fn default() -> Self {
20377        Self {
20378            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
20379            next: ptr::null_mut(),
20380            shader_demote_to_helper_invocation: Bool32::default(),
20381        }
20382    }
20383}
20384
20385unsafe impl Send for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
20386unsafe impl Sync for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
20387
20388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>
20389#[repr(C)]
20390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20391pub struct PhysicalDeviceShaderDrawParametersFeatures {
20392    pub s_type: StructureType,
20393    pub next: *mut c_void,
20394    pub shader_draw_parameters: Bool32,
20395}
20396
20397impl Default for PhysicalDeviceShaderDrawParametersFeatures {
20398    #[inline]
20399    fn default() -> Self {
20400        Self {
20401            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
20402            next: ptr::null_mut(),
20403            shader_draw_parameters: Bool32::default(),
20404        }
20405    }
20406}
20407
20408unsafe impl Send for PhysicalDeviceShaderDrawParametersFeatures {}
20409unsafe impl Sync for PhysicalDeviceShaderDrawParametersFeatures {}
20410
20411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html>
20412#[repr(C)]
20413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20414pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
20415    pub s_type: StructureType,
20416    pub next: *mut c_void,
20417    pub shader_early_and_late_fragment_tests: Bool32,
20418}
20419
20420impl Default for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
20421    #[inline]
20422    fn default() -> Self {
20423        Self {
20424            s_type:
20425                StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD,
20426            next: ptr::null_mut(),
20427            shader_early_and_late_fragment_tests: Bool32::default(),
20428        }
20429    }
20430}
20431
20432unsafe impl Send for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
20433unsafe impl Sync for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
20434
20435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html>
20436#[repr(C)]
20437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20438pub struct PhysicalDeviceShaderEnqueueFeaturesAMDX {
20439    pub s_type: StructureType,
20440    pub next: *mut c_void,
20441    pub shader_enqueue: Bool32,
20442    pub shader_mesh_enqueue: Bool32,
20443}
20444
20445impl Default for PhysicalDeviceShaderEnqueueFeaturesAMDX {
20446    #[inline]
20447    fn default() -> Self {
20448        Self {
20449            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX,
20450            next: ptr::null_mut(),
20451            shader_enqueue: Bool32::default(),
20452            shader_mesh_enqueue: Bool32::default(),
20453        }
20454    }
20455}
20456
20457unsafe impl Send for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
20458unsafe impl Sync for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
20459
20460/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html>
20461#[repr(C)]
20462#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20463pub struct PhysicalDeviceShaderEnqueuePropertiesAMDX {
20464    pub s_type: StructureType,
20465    pub next: *mut c_void,
20466    pub max_execution_graph_depth: u32,
20467    pub max_execution_graph_shader_output_nodes: u32,
20468    pub max_execution_graph_shader_payload_size: u32,
20469    pub max_execution_graph_shader_payload_count: u32,
20470    pub execution_graph_dispatch_address_alignment: u32,
20471    pub max_execution_graph_workgroup_count: [u32; 3],
20472    pub max_execution_graph_workgroups: u32,
20473}
20474
20475impl Default for PhysicalDeviceShaderEnqueuePropertiesAMDX {
20476    #[inline]
20477    fn default() -> Self {
20478        Self {
20479            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX,
20480            next: ptr::null_mut(),
20481            max_execution_graph_depth: u32::default(),
20482            max_execution_graph_shader_output_nodes: u32::default(),
20483            max_execution_graph_shader_payload_size: u32::default(),
20484            max_execution_graph_shader_payload_count: u32::default(),
20485            execution_graph_dispatch_address_alignment: u32::default(),
20486            max_execution_graph_workgroup_count: [u32::default(); 3],
20487            max_execution_graph_workgroups: u32::default(),
20488        }
20489    }
20490}
20491
20492unsafe impl Send for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
20493unsafe impl Sync for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
20494
20495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html>
20496#[repr(C)]
20497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20498pub struct PhysicalDeviceShaderExpectAssumeFeatures {
20499    pub s_type: StructureType,
20500    pub next: *mut c_void,
20501    pub shader_expect_assume: Bool32,
20502}
20503
20504impl Default for PhysicalDeviceShaderExpectAssumeFeatures {
20505    #[inline]
20506    fn default() -> Self {
20507        Self {
20508            s_type: StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,
20509            next: ptr::null_mut(),
20510            shader_expect_assume: Bool32::default(),
20511        }
20512    }
20513}
20514
20515unsafe impl Send for PhysicalDeviceShaderExpectAssumeFeatures {}
20516unsafe impl Sync for PhysicalDeviceShaderExpectAssumeFeatures {}
20517
20518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>
20519#[repr(C)]
20520#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20521pub struct PhysicalDeviceShaderFloat16Int8Features {
20522    pub s_type: StructureType,
20523    pub next: *mut c_void,
20524    pub shader_float16: Bool32,
20525    pub shader_int8: Bool32,
20526}
20527
20528impl Default for PhysicalDeviceShaderFloat16Int8Features {
20529    #[inline]
20530    fn default() -> Self {
20531        Self {
20532            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
20533            next: ptr::null_mut(),
20534            shader_float16: Bool32::default(),
20535            shader_int8: Bool32::default(),
20536        }
20537    }
20538}
20539
20540unsafe impl Send for PhysicalDeviceShaderFloat16Int8Features {}
20541unsafe impl Sync for PhysicalDeviceShaderFloat16Int8Features {}
20542
20543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat8FeaturesEXT.html>
20544#[repr(C)]
20545#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20546pub struct PhysicalDeviceShaderFloat8FeaturesEXT {
20547    pub s_type: StructureType,
20548    pub next: *mut c_void,
20549    pub shader_float8: Bool32,
20550    pub shader_float8_cooperative_matrix: Bool32,
20551}
20552
20553impl Default for PhysicalDeviceShaderFloat8FeaturesEXT {
20554    #[inline]
20555    fn default() -> Self {
20556        Self {
20557            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT,
20558            next: ptr::null_mut(),
20559            shader_float8: Bool32::default(),
20560            shader_float8_cooperative_matrix: Bool32::default(),
20561        }
20562    }
20563}
20564
20565unsafe impl Send for PhysicalDeviceShaderFloat8FeaturesEXT {}
20566unsafe impl Sync for PhysicalDeviceShaderFloat8FeaturesEXT {}
20567
20568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html>
20569#[repr(C)]
20570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20571pub struct PhysicalDeviceShaderFloatControls2Features {
20572    pub s_type: StructureType,
20573    pub next: *mut c_void,
20574    pub shader_float_controls2: Bool32,
20575}
20576
20577impl Default for PhysicalDeviceShaderFloatControls2Features {
20578    #[inline]
20579    fn default() -> Self {
20580        Self {
20581            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,
20582            next: ptr::null_mut(),
20583            shader_float_controls2: Bool32::default(),
20584        }
20585    }
20586}
20587
20588unsafe impl Send for PhysicalDeviceShaderFloatControls2Features {}
20589unsafe impl Sync for PhysicalDeviceShaderFloatControls2Features {}
20590
20591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>
20592#[repr(C)]
20593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20594pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
20595    pub s_type: StructureType,
20596    pub next: *mut c_void,
20597    pub shader_image_int64_atomics: Bool32,
20598    pub sparse_image_int64_atomics: Bool32,
20599}
20600
20601impl Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
20602    #[inline]
20603    fn default() -> Self {
20604        Self {
20605            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
20606            next: ptr::null_mut(),
20607            shader_image_int64_atomics: Bool32::default(),
20608            sparse_image_int64_atomics: Bool32::default(),
20609        }
20610    }
20611}
20612
20613unsafe impl Send for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
20614unsafe impl Sync for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
20615
20616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>
20617#[repr(C)]
20618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20619pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
20620    pub s_type: StructureType,
20621    pub next: *mut c_void,
20622    pub image_footprint: Bool32,
20623}
20624
20625impl Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
20626    #[inline]
20627    fn default() -> Self {
20628        Self {
20629            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
20630            next: ptr::null_mut(),
20631            image_footprint: Bool32::default(),
20632        }
20633    }
20634}
20635
20636unsafe impl Send for PhysicalDeviceShaderImageFootprintFeaturesNV {}
20637unsafe impl Sync for PhysicalDeviceShaderImageFootprintFeaturesNV {}
20638
20639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html>
20640#[repr(C)]
20641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20642pub struct PhysicalDeviceShaderIntegerDotProductFeatures {
20643    pub s_type: StructureType,
20644    pub next: *mut c_void,
20645    pub shader_integer_dot_product: Bool32,
20646}
20647
20648impl Default for PhysicalDeviceShaderIntegerDotProductFeatures {
20649    #[inline]
20650    fn default() -> Self {
20651        Self {
20652            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
20653            next: ptr::null_mut(),
20654            shader_integer_dot_product: Bool32::default(),
20655        }
20656    }
20657}
20658
20659unsafe impl Send for PhysicalDeviceShaderIntegerDotProductFeatures {}
20660unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductFeatures {}
20661
20662/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html>
20663#[repr(C)]
20664#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20665pub struct PhysicalDeviceShaderIntegerDotProductProperties {
20666    pub s_type: StructureType,
20667    pub next: *mut c_void,
20668    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
20669    pub integer_dot_product_8bit_signed_accelerated: Bool32,
20670    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
20671    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
20672    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
20673    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
20674    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
20675    pub integer_dot_product_16bit_signed_accelerated: Bool32,
20676    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
20677    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
20678    pub integer_dot_product_32bit_signed_accelerated: Bool32,
20679    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
20680    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
20681    pub integer_dot_product_64bit_signed_accelerated: Bool32,
20682    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
20683    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
20684    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
20685    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
20686    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
20687    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
20688    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
20689        Bool32,
20690    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
20691    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
20692    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
20693    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
20694    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
20695    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
20696    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
20697    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
20698    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
20699}
20700
20701impl Default for PhysicalDeviceShaderIntegerDotProductProperties {
20702    #[inline]
20703    fn default() -> Self {
20704        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() }
20705    }
20706}
20707
20708unsafe impl Send for PhysicalDeviceShaderIntegerDotProductProperties {}
20709unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductProperties {}
20710
20711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>
20712#[repr(C)]
20713#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20714pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
20715    pub s_type: StructureType,
20716    pub next: *mut c_void,
20717    pub shader_integer_functions2: Bool32,
20718}
20719
20720impl Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
20721    #[inline]
20722    fn default() -> Self {
20723        Self {
20724            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
20725            next: ptr::null_mut(),
20726            shader_integer_functions2: Bool32::default(),
20727        }
20728    }
20729}
20730
20731unsafe impl Send for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
20732unsafe impl Sync for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
20733
20734/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html>
20735#[repr(C)]
20736#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20737pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
20738    pub s_type: StructureType,
20739    pub next: *mut c_void,
20740    pub shader_maximal_reconvergence: Bool32,
20741}
20742
20743impl Default for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
20744    #[inline]
20745    fn default() -> Self {
20746        Self {
20747            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR,
20748            next: ptr::null_mut(),
20749            shader_maximal_reconvergence: Bool32::default(),
20750        }
20751    }
20752}
20753
20754unsafe impl Send for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
20755unsafe impl Sync for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
20756
20757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html>
20758#[repr(C)]
20759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20760pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
20761    pub s_type: StructureType,
20762    pub next: *mut c_void,
20763    pub shader_module_identifier: Bool32,
20764}
20765
20766impl Default for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
20767    #[inline]
20768    fn default() -> Self {
20769        Self {
20770            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT,
20771            next: ptr::null_mut(),
20772            shader_module_identifier: Bool32::default(),
20773        }
20774    }
20775}
20776
20777unsafe impl Send for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
20778unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
20779
20780/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html>
20781#[repr(C)]
20782#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20783pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
20784    pub s_type: StructureType,
20785    pub next: *mut c_void,
20786    pub shader_module_identifier_algorithm_uuid: ByteArray<UUID_SIZE>,
20787}
20788
20789impl Default for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
20790    #[inline]
20791    fn default() -> Self {
20792        Self {
20793            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT,
20794            next: ptr::null_mut(),
20795            shader_module_identifier_algorithm_uuid: ByteArray::default(),
20796        }
20797    }
20798}
20799
20800unsafe impl Send for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
20801unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
20802
20803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html>
20804#[repr(C)]
20805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20806pub struct PhysicalDeviceShaderObjectFeaturesEXT {
20807    pub s_type: StructureType,
20808    pub next: *mut c_void,
20809    pub shader_object: Bool32,
20810}
20811
20812impl Default for PhysicalDeviceShaderObjectFeaturesEXT {
20813    #[inline]
20814    fn default() -> Self {
20815        Self {
20816            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT,
20817            next: ptr::null_mut(),
20818            shader_object: Bool32::default(),
20819        }
20820    }
20821}
20822
20823unsafe impl Send for PhysicalDeviceShaderObjectFeaturesEXT {}
20824unsafe impl Sync for PhysicalDeviceShaderObjectFeaturesEXT {}
20825
20826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html>
20827#[repr(C)]
20828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20829pub struct PhysicalDeviceShaderObjectPropertiesEXT {
20830    pub s_type: StructureType,
20831    pub next: *mut c_void,
20832    pub shader_binary_uuid: ByteArray<UUID_SIZE>,
20833    pub shader_binary_version: u32,
20834}
20835
20836impl Default for PhysicalDeviceShaderObjectPropertiesEXT {
20837    #[inline]
20838    fn default() -> Self {
20839        Self {
20840            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT,
20841            next: ptr::null_mut(),
20842            shader_binary_uuid: ByteArray::default(),
20843            shader_binary_version: u32::default(),
20844        }
20845    }
20846}
20847
20848unsafe impl Send for PhysicalDeviceShaderObjectPropertiesEXT {}
20849unsafe impl Sync for PhysicalDeviceShaderObjectPropertiesEXT {}
20850
20851/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html>
20852#[repr(C)]
20853#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20854pub struct PhysicalDeviceShaderQuadControlFeaturesKHR {
20855    pub s_type: StructureType,
20856    pub next: *mut c_void,
20857    pub shader_quad_control: Bool32,
20858}
20859
20860impl Default for PhysicalDeviceShaderQuadControlFeaturesKHR {
20861    #[inline]
20862    fn default() -> Self {
20863        Self {
20864            s_type: StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR,
20865            next: ptr::null_mut(),
20866            shader_quad_control: Bool32::default(),
20867        }
20868    }
20869}
20870
20871unsafe impl Send for PhysicalDeviceShaderQuadControlFeaturesKHR {}
20872unsafe impl Sync for PhysicalDeviceShaderQuadControlFeaturesKHR {}
20873
20874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html>
20875#[repr(C)]
20876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20877pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
20878    pub s_type: StructureType,
20879    pub next: *mut c_void,
20880    pub shader_relaxed_extended_instruction: Bool32,
20881}
20882
20883impl Default for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
20884    #[inline]
20885    fn default() -> Self {
20886        Self {
20887            s_type: StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR,
20888            next: ptr::null_mut(),
20889            shader_relaxed_extended_instruction: Bool32::default(),
20890        }
20891    }
20892}
20893
20894unsafe impl Send for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
20895unsafe impl Sync for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
20896
20897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html>
20898#[repr(C)]
20899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20900pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
20901    pub s_type: StructureType,
20902    pub next: *mut c_void,
20903    pub shader_replicated_composites: Bool32,
20904}
20905
20906impl Default for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
20907    #[inline]
20908    fn default() -> Self {
20909        Self {
20910            s_type: StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT,
20911            next: ptr::null_mut(),
20912            shader_replicated_composites: Bool32::default(),
20913        }
20914    }
20915}
20916
20917unsafe impl Send for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
20918unsafe impl Sync for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
20919
20920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>
20921#[repr(C)]
20922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20923pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
20924    pub s_type: StructureType,
20925    pub next: *mut c_void,
20926    pub shader_sm_builtins: Bool32,
20927}
20928
20929impl Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
20930    #[inline]
20931    fn default() -> Self {
20932        Self {
20933            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
20934            next: ptr::null_mut(),
20935            shader_sm_builtins: Bool32::default(),
20936        }
20937    }
20938}
20939
20940unsafe impl Send for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
20941unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
20942
20943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>
20944#[repr(C)]
20945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20946pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
20947    pub s_type: StructureType,
20948    pub next: *mut c_void,
20949    pub shader_sm_count: u32,
20950    pub shader_warps_per_sm: u32,
20951}
20952
20953impl Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
20954    #[inline]
20955    fn default() -> Self {
20956        Self {
20957            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
20958            next: ptr::null_mut(),
20959            shader_sm_count: u32::default(),
20960            shader_warps_per_sm: u32::default(),
20961        }
20962    }
20963}
20964
20965unsafe impl Send for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
20966unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
20967
20968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>
20969#[repr(C)]
20970#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20971pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
20972    pub s_type: StructureType,
20973    pub next: *mut c_void,
20974    pub shader_subgroup_extended_types: Bool32,
20975}
20976
20977impl Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
20978    #[inline]
20979    fn default() -> Self {
20980        Self {
20981            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
20982            next: ptr::null_mut(),
20983            shader_subgroup_extended_types: Bool32::default(),
20984        }
20985    }
20986}
20987
20988unsafe impl Send for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
20989unsafe impl Sync for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
20990
20991/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html>
20992#[repr(C)]
20993#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20994pub struct PhysicalDeviceShaderSubgroupRotateFeatures {
20995    pub s_type: StructureType,
20996    pub next: *mut c_void,
20997    pub shader_subgroup_rotate: Bool32,
20998    pub shader_subgroup_rotate_clustered: Bool32,
20999}
21000
21001impl Default for PhysicalDeviceShaderSubgroupRotateFeatures {
21002    #[inline]
21003    fn default() -> Self {
21004        Self {
21005            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
21006            next: ptr::null_mut(),
21007            shader_subgroup_rotate: Bool32::default(),
21008            shader_subgroup_rotate_clustered: Bool32::default(),
21009        }
21010    }
21011}
21012
21013unsafe impl Send for PhysicalDeviceShaderSubgroupRotateFeatures {}
21014unsafe impl Sync for PhysicalDeviceShaderSubgroupRotateFeatures {}
21015
21016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>
21017#[repr(C)]
21018#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21019pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21020    pub s_type: StructureType,
21021    pub next: *mut c_void,
21022    pub shader_subgroup_uniform_control_flow: Bool32,
21023}
21024
21025impl Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
21026    #[inline]
21027    fn default() -> Self {
21028        Self {
21029            s_type:
21030                StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
21031            next: ptr::null_mut(),
21032            shader_subgroup_uniform_control_flow: Bool32::default(),
21033        }
21034    }
21035}
21036
21037unsafe impl Send for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21038unsafe impl Sync for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
21039
21040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html>
21041#[repr(C)]
21042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21043pub struct PhysicalDeviceShaderTerminateInvocationFeatures {
21044    pub s_type: StructureType,
21045    pub next: *mut c_void,
21046    pub shader_terminate_invocation: Bool32,
21047}
21048
21049impl Default for PhysicalDeviceShaderTerminateInvocationFeatures {
21050    #[inline]
21051    fn default() -> Self {
21052        Self {
21053            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
21054            next: ptr::null_mut(),
21055            shader_terminate_invocation: Bool32::default(),
21056        }
21057    }
21058}
21059
21060unsafe impl Send for PhysicalDeviceShaderTerminateInvocationFeatures {}
21061unsafe impl Sync for PhysicalDeviceShaderTerminateInvocationFeatures {}
21062
21063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html>
21064#[repr(C)]
21065#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21066pub struct PhysicalDeviceShaderTileImageFeaturesEXT {
21067    pub s_type: StructureType,
21068    pub next: *mut c_void,
21069    pub shader_tile_image_color_read_access: Bool32,
21070    pub shader_tile_image_depth_read_access: Bool32,
21071    pub shader_tile_image_stencil_read_access: Bool32,
21072}
21073
21074impl Default for PhysicalDeviceShaderTileImageFeaturesEXT {
21075    #[inline]
21076    fn default() -> Self {
21077        Self {
21078            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT,
21079            next: ptr::null_mut(),
21080            shader_tile_image_color_read_access: Bool32::default(),
21081            shader_tile_image_depth_read_access: Bool32::default(),
21082            shader_tile_image_stencil_read_access: Bool32::default(),
21083        }
21084    }
21085}
21086
21087unsafe impl Send for PhysicalDeviceShaderTileImageFeaturesEXT {}
21088unsafe impl Sync for PhysicalDeviceShaderTileImageFeaturesEXT {}
21089
21090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html>
21091#[repr(C)]
21092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21093pub struct PhysicalDeviceShaderTileImagePropertiesEXT {
21094    pub s_type: StructureType,
21095    pub next: *mut c_void,
21096    pub shader_tile_image_coherent_read_accelerated: Bool32,
21097    pub shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32,
21098    pub shader_tile_image_read_from_helper_invocation: Bool32,
21099}
21100
21101impl Default for PhysicalDeviceShaderTileImagePropertiesEXT {
21102    #[inline]
21103    fn default() -> Self {
21104        Self {
21105            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT,
21106            next: ptr::null_mut(),
21107            shader_tile_image_coherent_read_accelerated: Bool32::default(),
21108            shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32::default(),
21109            shader_tile_image_read_from_helper_invocation: Bool32::default(),
21110        }
21111    }
21112}
21113
21114unsafe impl Send for PhysicalDeviceShaderTileImagePropertiesEXT {}
21115unsafe impl Sync for PhysicalDeviceShaderTileImagePropertiesEXT {}
21116
21117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUntypedPointersFeaturesKHR.html>
21118#[repr(C)]
21119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21120pub struct PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21121    pub s_type: StructureType,
21122    pub next: *mut c_void,
21123    pub shader_untyped_pointers: Bool32,
21124}
21125
21126impl Default for PhysicalDeviceShaderUntypedPointersFeaturesKHR {
21127    #[inline]
21128    fn default() -> Self {
21129        Self {
21130            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR,
21131            next: ptr::null_mut(),
21132            shader_untyped_pointers: Bool32::default(),
21133        }
21134    }
21135}
21136
21137unsafe impl Send for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21138unsafe impl Sync for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
21139
21140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>
21141#[repr(C)]
21142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21143pub struct PhysicalDeviceShadingRateImageFeaturesNV {
21144    pub s_type: StructureType,
21145    pub next: *mut c_void,
21146    pub shading_rate_image: Bool32,
21147    pub shading_rate_coarse_sample_order: Bool32,
21148}
21149
21150impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
21151    #[inline]
21152    fn default() -> Self {
21153        Self {
21154            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
21155            next: ptr::null_mut(),
21156            shading_rate_image: Bool32::default(),
21157            shading_rate_coarse_sample_order: Bool32::default(),
21158        }
21159    }
21160}
21161
21162unsafe impl Send for PhysicalDeviceShadingRateImageFeaturesNV {}
21163unsafe impl Sync for PhysicalDeviceShadingRateImageFeaturesNV {}
21164
21165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>
21166#[repr(C)]
21167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21168pub struct PhysicalDeviceShadingRateImagePropertiesNV {
21169    pub s_type: StructureType,
21170    pub next: *mut c_void,
21171    pub shading_rate_texel_size: Extent2D,
21172    pub shading_rate_palette_size: u32,
21173    pub shading_rate_max_coarse_samples: u32,
21174}
21175
21176impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
21177    #[inline]
21178    fn default() -> Self {
21179        Self {
21180            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
21181            next: ptr::null_mut(),
21182            shading_rate_texel_size: Extent2D::default(),
21183            shading_rate_palette_size: u32::default(),
21184            shading_rate_max_coarse_samples: u32::default(),
21185        }
21186    }
21187}
21188
21189unsafe impl Send for PhysicalDeviceShadingRateImagePropertiesNV {}
21190unsafe impl Sync for PhysicalDeviceShadingRateImagePropertiesNV {}
21191
21192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>
21193#[repr(C)]
21194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21195pub struct PhysicalDeviceSparseImageFormatInfo2 {
21196    pub s_type: StructureType,
21197    pub next: *const c_void,
21198    pub format: Format,
21199    pub type_: ImageType,
21200    pub samples: SampleCountFlags,
21201    pub usage: ImageUsageFlags,
21202    pub tiling: ImageTiling,
21203}
21204
21205impl Default for PhysicalDeviceSparseImageFormatInfo2 {
21206    #[inline]
21207    fn default() -> Self {
21208        Self {
21209            s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
21210            next: ptr::null(),
21211            format: Format::default(),
21212            type_: ImageType::default(),
21213            samples: SampleCountFlags::default(),
21214            usage: ImageUsageFlags::default(),
21215            tiling: ImageTiling::default(),
21216        }
21217    }
21218}
21219
21220unsafe impl Send for PhysicalDeviceSparseImageFormatInfo2 {}
21221unsafe impl Sync for PhysicalDeviceSparseImageFormatInfo2 {}
21222
21223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html>
21224#[repr(C)]
21225#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
21226pub struct PhysicalDeviceSparseProperties {
21227    pub residency_standard_2d_block_shape: Bool32,
21228    pub residency_standard_2d_multisample_block_shape: Bool32,
21229    pub residency_standard_3d_block_shape: Bool32,
21230    pub residency_aligned_mip_size: Bool32,
21231    pub residency_non_resident_strict: Bool32,
21232}
21233
21234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html>
21235#[repr(C)]
21236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21237pub struct PhysicalDeviceSubgroupProperties {
21238    pub s_type: StructureType,
21239    pub next: *mut c_void,
21240    pub subgroup_size: u32,
21241    pub supported_stages: ShaderStageFlags,
21242    pub supported_operations: SubgroupFeatureFlags,
21243    pub quad_operations_in_all_stages: Bool32,
21244}
21245
21246impl Default for PhysicalDeviceSubgroupProperties {
21247    #[inline]
21248    fn default() -> Self {
21249        Self {
21250            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
21251            next: ptr::null_mut(),
21252            subgroup_size: u32::default(),
21253            supported_stages: ShaderStageFlags::default(),
21254            supported_operations: SubgroupFeatureFlags::default(),
21255            quad_operations_in_all_stages: Bool32::default(),
21256        }
21257    }
21258}
21259
21260unsafe impl Send for PhysicalDeviceSubgroupProperties {}
21261unsafe impl Sync for PhysicalDeviceSubgroupProperties {}
21262
21263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html>
21264#[repr(C)]
21265#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21266pub struct PhysicalDeviceSubgroupSizeControlFeatures {
21267    pub s_type: StructureType,
21268    pub next: *mut c_void,
21269    pub subgroup_size_control: Bool32,
21270    pub compute_full_subgroups: Bool32,
21271}
21272
21273impl Default for PhysicalDeviceSubgroupSizeControlFeatures {
21274    #[inline]
21275    fn default() -> Self {
21276        Self {
21277            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
21278            next: ptr::null_mut(),
21279            subgroup_size_control: Bool32::default(),
21280            compute_full_subgroups: Bool32::default(),
21281        }
21282    }
21283}
21284
21285unsafe impl Send for PhysicalDeviceSubgroupSizeControlFeatures {}
21286unsafe impl Sync for PhysicalDeviceSubgroupSizeControlFeatures {}
21287
21288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html>
21289#[repr(C)]
21290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21291pub struct PhysicalDeviceSubgroupSizeControlProperties {
21292    pub s_type: StructureType,
21293    pub next: *mut c_void,
21294    pub min_subgroup_size: u32,
21295    pub max_subgroup_size: u32,
21296    pub max_compute_workgroup_subgroups: u32,
21297    pub required_subgroup_size_stages: ShaderStageFlags,
21298}
21299
21300impl Default for PhysicalDeviceSubgroupSizeControlProperties {
21301    #[inline]
21302    fn default() -> Self {
21303        Self {
21304            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
21305            next: ptr::null_mut(),
21306            min_subgroup_size: u32::default(),
21307            max_subgroup_size: u32::default(),
21308            max_compute_workgroup_subgroups: u32::default(),
21309            required_subgroup_size_stages: ShaderStageFlags::default(),
21310        }
21311    }
21312}
21313
21314unsafe impl Send for PhysicalDeviceSubgroupSizeControlProperties {}
21315unsafe impl Sync for PhysicalDeviceSubgroupSizeControlProperties {}
21316
21317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html>
21318#[repr(C)]
21319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21320pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
21321    pub s_type: StructureType,
21322    pub next: *mut c_void,
21323    pub subpass_merge_feedback: Bool32,
21324}
21325
21326impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
21327    #[inline]
21328    fn default() -> Self {
21329        Self {
21330            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT,
21331            next: ptr::null_mut(),
21332            subpass_merge_feedback: Bool32::default(),
21333        }
21334    }
21335}
21336
21337unsafe impl Send for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
21338unsafe impl Sync for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
21339
21340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>
21341#[repr(C)]
21342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21343pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
21344    pub s_type: StructureType,
21345    pub next: *mut c_void,
21346    pub subpass_shading: Bool32,
21347}
21348
21349impl Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
21350    #[inline]
21351    fn default() -> Self {
21352        Self {
21353            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
21354            next: ptr::null_mut(),
21355            subpass_shading: Bool32::default(),
21356        }
21357    }
21358}
21359
21360unsafe impl Send for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
21361unsafe impl Sync for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
21362
21363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>
21364#[repr(C)]
21365#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21366pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
21367    pub s_type: StructureType,
21368    pub next: *mut c_void,
21369    pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
21370}
21371
21372impl Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
21373    #[inline]
21374    fn default() -> Self {
21375        Self {
21376            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
21377            next: ptr::null_mut(),
21378            max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
21379        }
21380    }
21381}
21382
21383unsafe impl Send for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
21384unsafe impl Sync for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
21385
21386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>
21387#[repr(C)]
21388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21389pub struct PhysicalDeviceSurfaceInfo2KHR {
21390    pub s_type: StructureType,
21391    pub next: *const c_void,
21392    pub surface: SurfaceKHR,
21393}
21394
21395impl Default for PhysicalDeviceSurfaceInfo2KHR {
21396    #[inline]
21397    fn default() -> Self {
21398        Self {
21399            s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
21400            next: ptr::null(),
21401            surface: SurfaceKHR::default(),
21402        }
21403    }
21404}
21405
21406unsafe impl Send for PhysicalDeviceSurfaceInfo2KHR {}
21407unsafe impl Sync for PhysicalDeviceSurfaceInfo2KHR {}
21408
21409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR.html>
21410#[repr(C)]
21411#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21412pub struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
21413    pub s_type: StructureType,
21414    pub next: *mut c_void,
21415    pub swapchain_maintenance1: Bool32,
21416}
21417
21418impl Default for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
21419    #[inline]
21420    fn default() -> Self {
21421        Self {
21422            s_type: StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR,
21423            next: ptr::null_mut(),
21424            swapchain_maintenance1: Bool32::default(),
21425        }
21426    }
21427}
21428
21429unsafe impl Send for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
21430unsafe impl Sync for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
21431
21432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html>
21433#[repr(C)]
21434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21435pub struct PhysicalDeviceSynchronization2Features {
21436    pub s_type: StructureType,
21437    pub next: *mut c_void,
21438    pub synchronization2: Bool32,
21439}
21440
21441impl Default for PhysicalDeviceSynchronization2Features {
21442    #[inline]
21443    fn default() -> Self {
21444        Self {
21445            s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
21446            next: ptr::null_mut(),
21447            synchronization2: Bool32::default(),
21448        }
21449    }
21450}
21451
21452unsafe impl Send for PhysicalDeviceSynchronization2Features {}
21453unsafe impl Sync for PhysicalDeviceSynchronization2Features {}
21454
21455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorFeaturesARM.html>
21456#[repr(C)]
21457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21458pub struct PhysicalDeviceTensorFeaturesARM {
21459    pub s_type: StructureType,
21460    pub next: *mut c_void,
21461    pub tensor_non_packed: Bool32,
21462    pub shader_tensor_access: Bool32,
21463    pub shader_storage_tensor_array_dynamic_indexing: Bool32,
21464    pub shader_storage_tensor_array_non_uniform_indexing: Bool32,
21465    pub descriptor_binding_storage_tensor_update_after_bind: Bool32,
21466    pub tensors: Bool32,
21467}
21468
21469impl Default for PhysicalDeviceTensorFeaturesARM {
21470    #[inline]
21471    fn default() -> Self {
21472        Self {
21473            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM,
21474            next: ptr::null_mut(),
21475            tensor_non_packed: Bool32::default(),
21476            shader_tensor_access: Bool32::default(),
21477            shader_storage_tensor_array_dynamic_indexing: Bool32::default(),
21478            shader_storage_tensor_array_non_uniform_indexing: Bool32::default(),
21479            descriptor_binding_storage_tensor_update_after_bind: Bool32::default(),
21480            tensors: Bool32::default(),
21481        }
21482    }
21483}
21484
21485unsafe impl Send for PhysicalDeviceTensorFeaturesARM {}
21486unsafe impl Sync for PhysicalDeviceTensorFeaturesARM {}
21487
21488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorPropertiesARM.html>
21489#[repr(C)]
21490#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21491pub struct PhysicalDeviceTensorPropertiesARM {
21492    pub s_type: StructureType,
21493    pub next: *mut c_void,
21494    pub max_tensor_dimension_count: u32,
21495    pub max_tensor_elements: u64,
21496    pub max_per_dimension_tensor_elements: u64,
21497    pub max_tensor_stride: i64,
21498    pub max_tensor_size: u64,
21499    pub max_tensor_shader_access_array_length: u32,
21500    pub max_tensor_shader_access_size: u32,
21501    pub max_descriptor_set_storage_tensors: u32,
21502    pub max_per_stage_descriptor_set_storage_tensors: u32,
21503    pub max_descriptor_set_update_after_bind_storage_tensors: u32,
21504    pub max_per_stage_descriptor_update_after_bind_storage_tensors: u32,
21505    pub shader_storage_tensor_array_non_uniform_indexing_native: Bool32,
21506    pub shader_tensor_supported_stages: ShaderStageFlags,
21507}
21508
21509impl Default for PhysicalDeviceTensorPropertiesARM {
21510    #[inline]
21511    fn default() -> Self {
21512        Self {
21513            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM,
21514            next: ptr::null_mut(),
21515            max_tensor_dimension_count: u32::default(),
21516            max_tensor_elements: u64::default(),
21517            max_per_dimension_tensor_elements: u64::default(),
21518            max_tensor_stride: i64::default(),
21519            max_tensor_size: u64::default(),
21520            max_tensor_shader_access_array_length: u32::default(),
21521            max_tensor_shader_access_size: u32::default(),
21522            max_descriptor_set_storage_tensors: u32::default(),
21523            max_per_stage_descriptor_set_storage_tensors: u32::default(),
21524            max_descriptor_set_update_after_bind_storage_tensors: u32::default(),
21525            max_per_stage_descriptor_update_after_bind_storage_tensors: u32::default(),
21526            shader_storage_tensor_array_non_uniform_indexing_native: Bool32::default(),
21527            shader_tensor_supported_stages: ShaderStageFlags::default(),
21528        }
21529    }
21530}
21531
21532unsafe impl Send for PhysicalDeviceTensorPropertiesARM {}
21533unsafe impl Sync for PhysicalDeviceTensorPropertiesARM {}
21534
21535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>
21536#[repr(C)]
21537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21538pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
21539    pub s_type: StructureType,
21540    pub next: *mut c_void,
21541    pub texel_buffer_alignment: Bool32,
21542}
21543
21544impl Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
21545    #[inline]
21546    fn default() -> Self {
21547        Self {
21548            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
21549            next: ptr::null_mut(),
21550            texel_buffer_alignment: Bool32::default(),
21551        }
21552    }
21553}
21554
21555unsafe impl Send for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
21556unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
21557
21558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html>
21559#[repr(C)]
21560#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21561pub struct PhysicalDeviceTexelBufferAlignmentProperties {
21562    pub s_type: StructureType,
21563    pub next: *mut c_void,
21564    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
21565    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
21566    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
21567    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
21568}
21569
21570impl Default for PhysicalDeviceTexelBufferAlignmentProperties {
21571    #[inline]
21572    fn default() -> Self {
21573        Self {
21574            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
21575            next: ptr::null_mut(),
21576            storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
21577            storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
21578            uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
21579            uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
21580        }
21581    }
21582}
21583
21584unsafe impl Send for PhysicalDeviceTexelBufferAlignmentProperties {}
21585unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentProperties {}
21586
21587/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html>
21588#[repr(C)]
21589#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21590pub struct PhysicalDeviceTextureCompressionASTCHDRFeatures {
21591    pub s_type: StructureType,
21592    pub next: *mut c_void,
21593    pub texture_compression_astc_hdr: Bool32,
21594}
21595
21596impl Default for PhysicalDeviceTextureCompressionASTCHDRFeatures {
21597    #[inline]
21598    fn default() -> Self {
21599        Self {
21600            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
21601            next: ptr::null_mut(),
21602            texture_compression_astc_hdr: Bool32::default(),
21603        }
21604    }
21605}
21606
21607unsafe impl Send for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
21608unsafe impl Sync for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
21609
21610/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapFeaturesQCOM.html>
21611#[repr(C)]
21612#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21613pub struct PhysicalDeviceTileMemoryHeapFeaturesQCOM {
21614    pub s_type: StructureType,
21615    pub next: *mut c_void,
21616    pub tile_memory_heap: Bool32,
21617}
21618
21619impl Default for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
21620    #[inline]
21621    fn default() -> Self {
21622        Self {
21623            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM,
21624            next: ptr::null_mut(),
21625            tile_memory_heap: Bool32::default(),
21626        }
21627    }
21628}
21629
21630unsafe impl Send for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
21631unsafe impl Sync for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
21632
21633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapPropertiesQCOM.html>
21634#[repr(C)]
21635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21636pub struct PhysicalDeviceTileMemoryHeapPropertiesQCOM {
21637    pub s_type: StructureType,
21638    pub next: *mut c_void,
21639    pub queue_submit_boundary: Bool32,
21640    pub tile_buffer_transfers: Bool32,
21641}
21642
21643impl Default for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
21644    #[inline]
21645    fn default() -> Self {
21646        Self {
21647            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM,
21648            next: ptr::null_mut(),
21649            queue_submit_boundary: Bool32::default(),
21650            tile_buffer_transfers: Bool32::default(),
21651        }
21652    }
21653}
21654
21655unsafe impl Send for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
21656unsafe impl Sync for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
21657
21658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html>
21659#[repr(C)]
21660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21661pub struct PhysicalDeviceTilePropertiesFeaturesQCOM {
21662    pub s_type: StructureType,
21663    pub next: *mut c_void,
21664    pub tile_properties: Bool32,
21665}
21666
21667impl Default for PhysicalDeviceTilePropertiesFeaturesQCOM {
21668    #[inline]
21669    fn default() -> Self {
21670        Self {
21671            s_type: StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM,
21672            next: ptr::null_mut(),
21673            tile_properties: Bool32::default(),
21674        }
21675    }
21676}
21677
21678unsafe impl Send for PhysicalDeviceTilePropertiesFeaturesQCOM {}
21679unsafe impl Sync for PhysicalDeviceTilePropertiesFeaturesQCOM {}
21680
21681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingFeaturesQCOM.html>
21682#[repr(C)]
21683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21684pub struct PhysicalDeviceTileShadingFeaturesQCOM {
21685    pub s_type: StructureType,
21686    pub next: *mut c_void,
21687    pub tile_shading: Bool32,
21688    pub tile_shading_fragment_stage: Bool32,
21689    pub tile_shading_color_attachments: Bool32,
21690    pub tile_shading_depth_attachments: Bool32,
21691    pub tile_shading_stencil_attachments: Bool32,
21692    pub tile_shading_input_attachments: Bool32,
21693    pub tile_shading_sampled_attachments: Bool32,
21694    pub tile_shading_per_tile_draw: Bool32,
21695    pub tile_shading_per_tile_dispatch: Bool32,
21696    pub tile_shading_dispatch_tile: Bool32,
21697    pub tile_shading_apron: Bool32,
21698    pub tile_shading_anisotropic_apron: Bool32,
21699    pub tile_shading_atomic_ops: Bool32,
21700    pub tile_shading_image_processing: Bool32,
21701}
21702
21703impl Default for PhysicalDeviceTileShadingFeaturesQCOM {
21704    #[inline]
21705    fn default() -> Self {
21706        Self {
21707            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM,
21708            next: ptr::null_mut(),
21709            tile_shading: Bool32::default(),
21710            tile_shading_fragment_stage: Bool32::default(),
21711            tile_shading_color_attachments: Bool32::default(),
21712            tile_shading_depth_attachments: Bool32::default(),
21713            tile_shading_stencil_attachments: Bool32::default(),
21714            tile_shading_input_attachments: Bool32::default(),
21715            tile_shading_sampled_attachments: Bool32::default(),
21716            tile_shading_per_tile_draw: Bool32::default(),
21717            tile_shading_per_tile_dispatch: Bool32::default(),
21718            tile_shading_dispatch_tile: Bool32::default(),
21719            tile_shading_apron: Bool32::default(),
21720            tile_shading_anisotropic_apron: Bool32::default(),
21721            tile_shading_atomic_ops: Bool32::default(),
21722            tile_shading_image_processing: Bool32::default(),
21723        }
21724    }
21725}
21726
21727unsafe impl Send for PhysicalDeviceTileShadingFeaturesQCOM {}
21728unsafe impl Sync for PhysicalDeviceTileShadingFeaturesQCOM {}
21729
21730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingPropertiesQCOM.html>
21731#[repr(C)]
21732#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21733pub struct PhysicalDeviceTileShadingPropertiesQCOM {
21734    pub s_type: StructureType,
21735    pub next: *mut c_void,
21736    pub max_apron_size: u32,
21737    pub prefer_non_coherent: Bool32,
21738    pub tile_granularity: Extent2D,
21739    pub max_tile_shading_rate: Extent2D,
21740}
21741
21742impl Default for PhysicalDeviceTileShadingPropertiesQCOM {
21743    #[inline]
21744    fn default() -> Self {
21745        Self {
21746            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM,
21747            next: ptr::null_mut(),
21748            max_apron_size: u32::default(),
21749            prefer_non_coherent: Bool32::default(),
21750            tile_granularity: Extent2D::default(),
21751            max_tile_shading_rate: Extent2D::default(),
21752        }
21753    }
21754}
21755
21756unsafe impl Send for PhysicalDeviceTileShadingPropertiesQCOM {}
21757unsafe impl Sync for PhysicalDeviceTileShadingPropertiesQCOM {}
21758
21759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>
21760#[repr(C)]
21761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21762pub struct PhysicalDeviceTimelineSemaphoreFeatures {
21763    pub s_type: StructureType,
21764    pub next: *mut c_void,
21765    pub timeline_semaphore: Bool32,
21766}
21767
21768impl Default for PhysicalDeviceTimelineSemaphoreFeatures {
21769    #[inline]
21770    fn default() -> Self {
21771        Self {
21772            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
21773            next: ptr::null_mut(),
21774            timeline_semaphore: Bool32::default(),
21775        }
21776    }
21777}
21778
21779unsafe impl Send for PhysicalDeviceTimelineSemaphoreFeatures {}
21780unsafe impl Sync for PhysicalDeviceTimelineSemaphoreFeatures {}
21781
21782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>
21783#[repr(C)]
21784#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21785pub struct PhysicalDeviceTimelineSemaphoreProperties {
21786    pub s_type: StructureType,
21787    pub next: *mut c_void,
21788    pub max_timeline_semaphore_value_difference: u64,
21789}
21790
21791impl Default for PhysicalDeviceTimelineSemaphoreProperties {
21792    #[inline]
21793    fn default() -> Self {
21794        Self {
21795            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
21796            next: ptr::null_mut(),
21797            max_timeline_semaphore_value_difference: u64::default(),
21798        }
21799    }
21800}
21801
21802unsafe impl Send for PhysicalDeviceTimelineSemaphoreProperties {}
21803unsafe impl Sync for PhysicalDeviceTimelineSemaphoreProperties {}
21804
21805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html>
21806#[repr(C)]
21807#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21808pub struct PhysicalDeviceToolProperties {
21809    pub s_type: StructureType,
21810    pub next: *mut c_void,
21811    pub name: StringArray<MAX_EXTENSION_NAME_SIZE>,
21812    pub version: StringArray<MAX_EXTENSION_NAME_SIZE>,
21813    pub purposes: ToolPurposeFlags,
21814    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
21815    pub layer: StringArray<MAX_EXTENSION_NAME_SIZE>,
21816}
21817
21818impl Default for PhysicalDeviceToolProperties {
21819    #[inline]
21820    fn default() -> Self {
21821        Self {
21822            s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES,
21823            next: ptr::null_mut(),
21824            name: StringArray::default(),
21825            version: StringArray::default(),
21826            purposes: ToolPurposeFlags::default(),
21827            description: StringArray::default(),
21828            layer: StringArray::default(),
21829        }
21830    }
21831}
21832
21833unsafe impl Send for PhysicalDeviceToolProperties {}
21834unsafe impl Sync for PhysicalDeviceToolProperties {}
21835
21836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>
21837#[repr(C)]
21838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21839pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
21840    pub s_type: StructureType,
21841    pub next: *mut c_void,
21842    pub transform_feedback: Bool32,
21843    pub geometry_streams: Bool32,
21844}
21845
21846impl Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
21847    #[inline]
21848    fn default() -> Self {
21849        Self {
21850            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
21851            next: ptr::null_mut(),
21852            transform_feedback: Bool32::default(),
21853            geometry_streams: Bool32::default(),
21854        }
21855    }
21856}
21857
21858unsafe impl Send for PhysicalDeviceTransformFeedbackFeaturesEXT {}
21859unsafe impl Sync for PhysicalDeviceTransformFeedbackFeaturesEXT {}
21860
21861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>
21862#[repr(C)]
21863#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21864pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
21865    pub s_type: StructureType,
21866    pub next: *mut c_void,
21867    pub max_transform_feedback_streams: u32,
21868    pub max_transform_feedback_buffers: u32,
21869    pub max_transform_feedback_buffer_size: DeviceSize,
21870    pub max_transform_feedback_stream_data_size: u32,
21871    pub max_transform_feedback_buffer_data_size: u32,
21872    pub max_transform_feedback_buffer_data_stride: u32,
21873    pub transform_feedback_queries: Bool32,
21874    pub transform_feedback_streams_lines_triangles: Bool32,
21875    pub transform_feedback_rasterization_stream_select: Bool32,
21876    pub transform_feedback_draw: Bool32,
21877}
21878
21879impl Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
21880    #[inline]
21881    fn default() -> Self {
21882        Self {
21883            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
21884            next: ptr::null_mut(),
21885            max_transform_feedback_streams: u32::default(),
21886            max_transform_feedback_buffers: u32::default(),
21887            max_transform_feedback_buffer_size: DeviceSize::default(),
21888            max_transform_feedback_stream_data_size: u32::default(),
21889            max_transform_feedback_buffer_data_size: u32::default(),
21890            max_transform_feedback_buffer_data_stride: u32::default(),
21891            transform_feedback_queries: Bool32::default(),
21892            transform_feedback_streams_lines_triangles: Bool32::default(),
21893            transform_feedback_rasterization_stream_select: Bool32::default(),
21894            transform_feedback_draw: Bool32::default(),
21895        }
21896    }
21897}
21898
21899unsafe impl Send for PhysicalDeviceTransformFeedbackPropertiesEXT {}
21900unsafe impl Sync for PhysicalDeviceTransformFeedbackPropertiesEXT {}
21901
21902/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR.html>
21903#[repr(C)]
21904#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21905pub struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
21906    pub s_type: StructureType,
21907    pub next: *mut c_void,
21908    pub unified_image_layouts: Bool32,
21909    pub unified_image_layouts_video: Bool32,
21910}
21911
21912impl Default for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
21913    #[inline]
21914    fn default() -> Self {
21915        Self {
21916            s_type: StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR,
21917            next: ptr::null_mut(),
21918            unified_image_layouts: Bool32::default(),
21919            unified_image_layouts_video: Bool32::default(),
21920        }
21921    }
21922}
21923
21924unsafe impl Send for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
21925unsafe impl Sync for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
21926
21927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>
21928#[repr(C)]
21929#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21930pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
21931    pub s_type: StructureType,
21932    pub next: *mut c_void,
21933    pub uniform_buffer_standard_layout: Bool32,
21934}
21935
21936impl Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
21937    #[inline]
21938    fn default() -> Self {
21939        Self {
21940            s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
21941            next: ptr::null_mut(),
21942            uniform_buffer_standard_layout: Bool32::default(),
21943        }
21944    }
21945}
21946
21947unsafe impl Send for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
21948unsafe impl Sync for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
21949
21950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html>
21951#[repr(C)]
21952#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21953pub struct PhysicalDeviceVariablePointersFeatures {
21954    pub s_type: StructureType,
21955    pub next: *mut c_void,
21956    pub variable_pointers_storage_buffer: Bool32,
21957    pub variable_pointers: Bool32,
21958}
21959
21960impl Default for PhysicalDeviceVariablePointersFeatures {
21961    #[inline]
21962    fn default() -> Self {
21963        Self {
21964            s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
21965            next: ptr::null_mut(),
21966            variable_pointers_storage_buffer: Bool32::default(),
21967            variable_pointers: Bool32::default(),
21968        }
21969    }
21970}
21971
21972unsafe impl Send for PhysicalDeviceVariablePointersFeatures {}
21973unsafe impl Sync for PhysicalDeviceVariablePointersFeatures {}
21974
21975/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html>
21976#[repr(C)]
21977#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21978pub struct PhysicalDeviceVertexAttributeDivisorFeatures {
21979    pub s_type: StructureType,
21980    pub next: *mut c_void,
21981    pub vertex_attribute_instance_rate_divisor: Bool32,
21982    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
21983}
21984
21985impl Default for PhysicalDeviceVertexAttributeDivisorFeatures {
21986    #[inline]
21987    fn default() -> Self {
21988        Self {
21989            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,
21990            next: ptr::null_mut(),
21991            vertex_attribute_instance_rate_divisor: Bool32::default(),
21992            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
21993        }
21994    }
21995}
21996
21997unsafe impl Send for PhysicalDeviceVertexAttributeDivisorFeatures {}
21998unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorFeatures {}
21999
22000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html>
22001#[repr(C)]
22002#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22003pub struct PhysicalDeviceVertexAttributeDivisorProperties {
22004    pub s_type: StructureType,
22005    pub next: *mut c_void,
22006    pub max_vertex_attrib_divisor: u32,
22007    pub supports_non_zero_first_instance: Bool32,
22008}
22009
22010impl Default for PhysicalDeviceVertexAttributeDivisorProperties {
22011    #[inline]
22012    fn default() -> Self {
22013        Self {
22014            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,
22015            next: ptr::null_mut(),
22016            max_vertex_attrib_divisor: u32::default(),
22017            supports_non_zero_first_instance: Bool32::default(),
22018        }
22019    }
22020}
22021
22022unsafe impl Send for PhysicalDeviceVertexAttributeDivisorProperties {}
22023unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorProperties {}
22024
22025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>
22026#[repr(C)]
22027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22028pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22029    pub s_type: StructureType,
22030    pub next: *mut c_void,
22031    pub max_vertex_attrib_divisor: u32,
22032}
22033
22034impl Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
22035    #[inline]
22036    fn default() -> Self {
22037        Self {
22038            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
22039            next: ptr::null_mut(),
22040            max_vertex_attrib_divisor: u32::default(),
22041        }
22042    }
22043}
22044
22045unsafe impl Send for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22046unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
22047
22048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html>
22049#[repr(C)]
22050#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22051pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22052    pub s_type: StructureType,
22053    pub next: *mut c_void,
22054    pub vertex_attribute_robustness: Bool32,
22055}
22056
22057impl Default for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
22058    #[inline]
22059    fn default() -> Self {
22060        Self {
22061            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT,
22062            next: ptr::null_mut(),
22063            vertex_attribute_robustness: Bool32::default(),
22064        }
22065    }
22066}
22067
22068unsafe impl Send for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22069unsafe impl Sync for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
22070
22071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>
22072#[repr(C)]
22073#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22074pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22075    pub s_type: StructureType,
22076    pub next: *mut c_void,
22077    pub vertex_input_dynamic_state: Bool32,
22078}
22079
22080impl Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
22081    #[inline]
22082    fn default() -> Self {
22083        Self {
22084            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
22085            next: ptr::null_mut(),
22086            vertex_input_dynamic_state: Bool32::default(),
22087        }
22088    }
22089}
22090
22091unsafe impl Send for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22092unsafe impl Sync for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
22093
22094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoDecodeVP9FeaturesKHR.html>
22095#[repr(C)]
22096#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22097pub struct PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22098    pub s_type: StructureType,
22099    pub next: *mut c_void,
22100    pub video_decode_vp9: Bool32,
22101}
22102
22103impl Default for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
22104    #[inline]
22105    fn default() -> Self {
22106        Self {
22107            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR,
22108            next: ptr::null_mut(),
22109            video_decode_vp9: Bool32::default(),
22110        }
22111    }
22112}
22113
22114unsafe impl Send for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22115unsafe impl Sync for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
22116
22117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html>
22118#[repr(C)]
22119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22120pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22121    pub s_type: StructureType,
22122    pub next: *mut c_void,
22123    pub video_encode_av1: Bool32,
22124}
22125
22126impl Default for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
22127    #[inline]
22128    fn default() -> Self {
22129        Self {
22130            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR,
22131            next: ptr::null_mut(),
22132            video_encode_av1: Bool32::default(),
22133        }
22134    }
22135}
22136
22137unsafe impl Send for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22138unsafe impl Sync for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
22139
22140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.html>
22141#[repr(C)]
22142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22143pub struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22144    pub s_type: StructureType,
22145    pub next: *mut c_void,
22146    pub video_encode_intra_refresh: Bool32,
22147}
22148
22149impl Default for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
22150    #[inline]
22151    fn default() -> Self {
22152        Self {
22153            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR,
22154            next: ptr::null_mut(),
22155            video_encode_intra_refresh: Bool32::default(),
22156        }
22157    }
22158}
22159
22160unsafe impl Send for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22161unsafe impl Sync for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
22162
22163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html>
22164#[repr(C)]
22165#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22166pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22167    pub s_type: StructureType,
22168    pub next: *const c_void,
22169    pub video_profile: *const VideoProfileInfoKHR,
22170    pub quality_level: u32,
22171}
22172
22173impl Default for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
22174    #[inline]
22175    fn default() -> Self {
22176        Self {
22177            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
22178            next: ptr::null(),
22179            video_profile: ptr::null(),
22180            quality_level: u32::default(),
22181        }
22182    }
22183}
22184
22185unsafe impl Send for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
22186unsafe impl Sync for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
22187
22188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html>
22189#[repr(C)]
22190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22191pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
22192    pub s_type: StructureType,
22193    pub next: *mut c_void,
22194    pub video_encode_quantization_map: Bool32,
22195}
22196
22197impl Default for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
22198    #[inline]
22199    fn default() -> Self {
22200        Self {
22201            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR,
22202            next: ptr::null_mut(),
22203            video_encode_quantization_map: Bool32::default(),
22204        }
22205    }
22206}
22207
22208unsafe impl Send for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
22209unsafe impl Sync for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
22210
22211/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE.html>
22212#[repr(C)]
22213#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22214pub struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
22215    pub s_type: StructureType,
22216    pub next: *mut c_void,
22217    pub video_encode_rgb_conversion: Bool32,
22218}
22219
22220impl Default for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
22221    #[inline]
22222    fn default() -> Self {
22223        Self {
22224            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE,
22225            next: ptr::null_mut(),
22226            video_encode_rgb_conversion: Bool32::default(),
22227        }
22228    }
22229}
22230
22231unsafe impl Send for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
22232unsafe impl Sync for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
22233
22234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>
22235#[repr(C)]
22236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22237pub struct PhysicalDeviceVideoFormatInfoKHR {
22238    pub s_type: StructureType,
22239    pub next: *const c_void,
22240    pub image_usage: ImageUsageFlags,
22241}
22242
22243impl Default for PhysicalDeviceVideoFormatInfoKHR {
22244    #[inline]
22245    fn default() -> Self {
22246        Self {
22247            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
22248            next: ptr::null(),
22249            image_usage: ImageUsageFlags::default(),
22250        }
22251    }
22252}
22253
22254unsafe impl Send for PhysicalDeviceVideoFormatInfoKHR {}
22255unsafe impl Sync for PhysicalDeviceVideoFormatInfoKHR {}
22256
22257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html>
22258#[repr(C)]
22259#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22260pub struct PhysicalDeviceVideoMaintenance1FeaturesKHR {
22261    pub s_type: StructureType,
22262    pub next: *mut c_void,
22263    pub video_maintenance1: Bool32,
22264}
22265
22266impl Default for PhysicalDeviceVideoMaintenance1FeaturesKHR {
22267    #[inline]
22268    fn default() -> Self {
22269        Self {
22270            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR,
22271            next: ptr::null_mut(),
22272            video_maintenance1: Bool32::default(),
22273        }
22274    }
22275}
22276
22277unsafe impl Send for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
22278unsafe impl Sync for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
22279
22280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html>
22281#[repr(C)]
22282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22283pub struct PhysicalDeviceVideoMaintenance2FeaturesKHR {
22284    pub s_type: StructureType,
22285    pub next: *mut c_void,
22286    pub video_maintenance2: Bool32,
22287}
22288
22289impl Default for PhysicalDeviceVideoMaintenance2FeaturesKHR {
22290    #[inline]
22291    fn default() -> Self {
22292        Self {
22293            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR,
22294            next: ptr::null_mut(),
22295            video_maintenance2: Bool32::default(),
22296        }
22297    }
22298}
22299
22300unsafe impl Send for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
22301unsafe impl Sync for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
22302
22303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html>
22304#[repr(C)]
22305#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22306pub struct PhysicalDeviceVulkan11Features {
22307    pub s_type: StructureType,
22308    pub next: *mut c_void,
22309    pub storage_buffer_16bit_access: Bool32,
22310    pub uniform_and_storage_buffer_16bit_access: Bool32,
22311    pub storage_push_constant16: Bool32,
22312    pub storage_input_output16: Bool32,
22313    pub multiview: Bool32,
22314    pub multiview_geometry_shader: Bool32,
22315    pub multiview_tessellation_shader: Bool32,
22316    pub variable_pointers_storage_buffer: Bool32,
22317    pub variable_pointers: Bool32,
22318    pub protected_memory: Bool32,
22319    pub sampler_ycbcr_conversion: Bool32,
22320    pub shader_draw_parameters: Bool32,
22321}
22322
22323impl Default for PhysicalDeviceVulkan11Features {
22324    #[inline]
22325    fn default() -> Self {
22326        Self {
22327            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
22328            next: ptr::null_mut(),
22329            storage_buffer_16bit_access: Bool32::default(),
22330            uniform_and_storage_buffer_16bit_access: Bool32::default(),
22331            storage_push_constant16: Bool32::default(),
22332            storage_input_output16: Bool32::default(),
22333            multiview: Bool32::default(),
22334            multiview_geometry_shader: Bool32::default(),
22335            multiview_tessellation_shader: Bool32::default(),
22336            variable_pointers_storage_buffer: Bool32::default(),
22337            variable_pointers: Bool32::default(),
22338            protected_memory: Bool32::default(),
22339            sampler_ycbcr_conversion: Bool32::default(),
22340            shader_draw_parameters: Bool32::default(),
22341        }
22342    }
22343}
22344
22345unsafe impl Send for PhysicalDeviceVulkan11Features {}
22346unsafe impl Sync for PhysicalDeviceVulkan11Features {}
22347
22348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html>
22349#[repr(C)]
22350#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22351pub struct PhysicalDeviceVulkan11Properties {
22352    pub s_type: StructureType,
22353    pub next: *mut c_void,
22354    pub device_uuid: ByteArray<UUID_SIZE>,
22355    pub driver_uuid: ByteArray<UUID_SIZE>,
22356    pub device_luid: ByteArray<LUID_SIZE>,
22357    pub device_node_mask: u32,
22358    pub device_luid_valid: Bool32,
22359    pub subgroup_size: u32,
22360    pub subgroup_supported_stages: ShaderStageFlags,
22361    pub subgroup_supported_operations: SubgroupFeatureFlags,
22362    pub subgroup_quad_operations_in_all_stages: Bool32,
22363    pub point_clipping_behavior: PointClippingBehavior,
22364    pub max_multiview_view_count: u32,
22365    pub max_multiview_instance_index: u32,
22366    pub protected_no_fault: Bool32,
22367    pub max_per_set_descriptors: u32,
22368    pub max_memory_allocation_size: DeviceSize,
22369}
22370
22371impl Default for PhysicalDeviceVulkan11Properties {
22372    #[inline]
22373    fn default() -> Self {
22374        Self {
22375            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
22376            next: ptr::null_mut(),
22377            device_uuid: ByteArray::default(),
22378            driver_uuid: ByteArray::default(),
22379            device_luid: ByteArray::default(),
22380            device_node_mask: u32::default(),
22381            device_luid_valid: Bool32::default(),
22382            subgroup_size: u32::default(),
22383            subgroup_supported_stages: ShaderStageFlags::default(),
22384            subgroup_supported_operations: SubgroupFeatureFlags::default(),
22385            subgroup_quad_operations_in_all_stages: Bool32::default(),
22386            point_clipping_behavior: PointClippingBehavior::default(),
22387            max_multiview_view_count: u32::default(),
22388            max_multiview_instance_index: u32::default(),
22389            protected_no_fault: Bool32::default(),
22390            max_per_set_descriptors: u32::default(),
22391            max_memory_allocation_size: DeviceSize::default(),
22392        }
22393    }
22394}
22395
22396unsafe impl Send for PhysicalDeviceVulkan11Properties {}
22397unsafe impl Sync for PhysicalDeviceVulkan11Properties {}
22398
22399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html>
22400#[repr(C)]
22401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22402pub struct PhysicalDeviceVulkan12Features {
22403    pub s_type: StructureType,
22404    pub next: *mut c_void,
22405    pub sampler_mirror_clamp_to_edge: Bool32,
22406    pub draw_indirect_count: Bool32,
22407    pub storage_buffer_8bit_access: Bool32,
22408    pub uniform_and_storage_buffer_8bit_access: Bool32,
22409    pub storage_push_constant8: Bool32,
22410    pub shader_buffer_int64_atomics: Bool32,
22411    pub shader_shared_int64_atomics: Bool32,
22412    pub shader_float16: Bool32,
22413    pub shader_int8: Bool32,
22414    pub descriptor_indexing: Bool32,
22415    pub shader_input_attachment_array_dynamic_indexing: Bool32,
22416    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
22417    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
22418    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
22419    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
22420    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
22421    pub shader_storage_image_array_non_uniform_indexing: Bool32,
22422    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
22423    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
22424    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
22425    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
22426    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
22427    pub descriptor_binding_storage_image_update_after_bind: Bool32,
22428    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
22429    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
22430    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
22431    pub descriptor_binding_update_unused_while_pending: Bool32,
22432    pub descriptor_binding_partially_bound: Bool32,
22433    pub descriptor_binding_variable_descriptor_count: Bool32,
22434    pub runtime_descriptor_array: Bool32,
22435    pub sampler_filter_minmax: Bool32,
22436    pub scalar_block_layout: Bool32,
22437    pub imageless_framebuffer: Bool32,
22438    pub uniform_buffer_standard_layout: Bool32,
22439    pub shader_subgroup_extended_types: Bool32,
22440    pub separate_depth_stencil_layouts: Bool32,
22441    pub host_query_reset: Bool32,
22442    pub timeline_semaphore: Bool32,
22443    pub buffer_device_address: Bool32,
22444    pub buffer_device_address_capture_replay: Bool32,
22445    pub buffer_device_address_multi_device: Bool32,
22446    pub vulkan_memory_model: Bool32,
22447    pub vulkan_memory_model_device_scope: Bool32,
22448    pub vulkan_memory_model_availability_visibility_chains: Bool32,
22449    pub shader_output_viewport_index: Bool32,
22450    pub shader_output_layer: Bool32,
22451    pub subgroup_broadcast_dynamic_id: Bool32,
22452}
22453
22454impl Default for PhysicalDeviceVulkan12Features {
22455    #[inline]
22456    fn default() -> Self {
22457        Self {
22458            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
22459            next: ptr::null_mut(),
22460            sampler_mirror_clamp_to_edge: Bool32::default(),
22461            draw_indirect_count: Bool32::default(),
22462            storage_buffer_8bit_access: Bool32::default(),
22463            uniform_and_storage_buffer_8bit_access: Bool32::default(),
22464            storage_push_constant8: Bool32::default(),
22465            shader_buffer_int64_atomics: Bool32::default(),
22466            shader_shared_int64_atomics: Bool32::default(),
22467            shader_float16: Bool32::default(),
22468            shader_int8: Bool32::default(),
22469            descriptor_indexing: Bool32::default(),
22470            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
22471            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
22472            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
22473            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
22474            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
22475            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
22476            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
22477            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
22478            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
22479            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
22480            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
22481            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
22482            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
22483            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
22484            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
22485            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
22486            descriptor_binding_update_unused_while_pending: Bool32::default(),
22487            descriptor_binding_partially_bound: Bool32::default(),
22488            descriptor_binding_variable_descriptor_count: Bool32::default(),
22489            runtime_descriptor_array: Bool32::default(),
22490            sampler_filter_minmax: Bool32::default(),
22491            scalar_block_layout: Bool32::default(),
22492            imageless_framebuffer: Bool32::default(),
22493            uniform_buffer_standard_layout: Bool32::default(),
22494            shader_subgroup_extended_types: Bool32::default(),
22495            separate_depth_stencil_layouts: Bool32::default(),
22496            host_query_reset: Bool32::default(),
22497            timeline_semaphore: Bool32::default(),
22498            buffer_device_address: Bool32::default(),
22499            buffer_device_address_capture_replay: Bool32::default(),
22500            buffer_device_address_multi_device: Bool32::default(),
22501            vulkan_memory_model: Bool32::default(),
22502            vulkan_memory_model_device_scope: Bool32::default(),
22503            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
22504            shader_output_viewport_index: Bool32::default(),
22505            shader_output_layer: Bool32::default(),
22506            subgroup_broadcast_dynamic_id: Bool32::default(),
22507        }
22508    }
22509}
22510
22511unsafe impl Send for PhysicalDeviceVulkan12Features {}
22512unsafe impl Sync for PhysicalDeviceVulkan12Features {}
22513
22514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html>
22515#[repr(C)]
22516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22517pub struct PhysicalDeviceVulkan12Properties {
22518    pub s_type: StructureType,
22519    pub next: *mut c_void,
22520    pub driver_id: DriverId,
22521    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
22522    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
22523    pub conformance_version: ConformanceVersion,
22524    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
22525    pub rounding_mode_independence: ShaderFloatControlsIndependence,
22526    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
22527    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
22528    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
22529    pub shader_denorm_preserve_float16: Bool32,
22530    pub shader_denorm_preserve_float32: Bool32,
22531    pub shader_denorm_preserve_float64: Bool32,
22532    pub shader_denorm_flush_to_zero_float16: Bool32,
22533    pub shader_denorm_flush_to_zero_float32: Bool32,
22534    pub shader_denorm_flush_to_zero_float64: Bool32,
22535    pub shader_rounding_mode_rte_float16: Bool32,
22536    pub shader_rounding_mode_rte_float32: Bool32,
22537    pub shader_rounding_mode_rte_float64: Bool32,
22538    pub shader_rounding_mode_rtz_float16: Bool32,
22539    pub shader_rounding_mode_rtz_float32: Bool32,
22540    pub shader_rounding_mode_rtz_float64: Bool32,
22541    pub max_update_after_bind_descriptors_in_all_pools: u32,
22542    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
22543    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
22544    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
22545    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
22546    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
22547    pub robust_buffer_access_update_after_bind: Bool32,
22548    pub quad_divergent_implicit_lod: Bool32,
22549    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
22550    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
22551    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
22552    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
22553    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
22554    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
22555    pub max_per_stage_update_after_bind_resources: u32,
22556    pub max_descriptor_set_update_after_bind_samplers: u32,
22557    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
22558    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
22559    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
22560    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
22561    pub max_descriptor_set_update_after_bind_sampled_images: u32,
22562    pub max_descriptor_set_update_after_bind_storage_images: u32,
22563    pub max_descriptor_set_update_after_bind_input_attachments: u32,
22564    pub supported_depth_resolve_modes: ResolveModeFlags,
22565    pub supported_stencil_resolve_modes: ResolveModeFlags,
22566    pub independent_resolve_none: Bool32,
22567    pub independent_resolve: Bool32,
22568    pub filter_minmax_single_component_formats: Bool32,
22569    pub filter_minmax_image_component_mapping: Bool32,
22570    pub max_timeline_semaphore_value_difference: u64,
22571    pub framebuffer_integer_color_sample_counts: SampleCountFlags,
22572}
22573
22574impl Default for PhysicalDeviceVulkan12Properties {
22575    #[inline]
22576    fn default() -> Self {
22577        Self {
22578            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
22579            next: ptr::null_mut(),
22580            driver_id: DriverId::default(),
22581            driver_name: StringArray::default(),
22582            driver_info: StringArray::default(),
22583            conformance_version: ConformanceVersion::default(),
22584            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
22585            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
22586            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
22587            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
22588            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
22589            shader_denorm_preserve_float16: Bool32::default(),
22590            shader_denorm_preserve_float32: Bool32::default(),
22591            shader_denorm_preserve_float64: Bool32::default(),
22592            shader_denorm_flush_to_zero_float16: Bool32::default(),
22593            shader_denorm_flush_to_zero_float32: Bool32::default(),
22594            shader_denorm_flush_to_zero_float64: Bool32::default(),
22595            shader_rounding_mode_rte_float16: Bool32::default(),
22596            shader_rounding_mode_rte_float32: Bool32::default(),
22597            shader_rounding_mode_rte_float64: Bool32::default(),
22598            shader_rounding_mode_rtz_float16: Bool32::default(),
22599            shader_rounding_mode_rtz_float32: Bool32::default(),
22600            shader_rounding_mode_rtz_float64: Bool32::default(),
22601            max_update_after_bind_descriptors_in_all_pools: u32::default(),
22602            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
22603            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
22604            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
22605            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
22606            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
22607            robust_buffer_access_update_after_bind: Bool32::default(),
22608            quad_divergent_implicit_lod: Bool32::default(),
22609            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
22610            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
22611            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
22612            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
22613            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
22614            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
22615            max_per_stage_update_after_bind_resources: u32::default(),
22616            max_descriptor_set_update_after_bind_samplers: u32::default(),
22617            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
22618            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
22619            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
22620            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
22621            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
22622            max_descriptor_set_update_after_bind_storage_images: u32::default(),
22623            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
22624            supported_depth_resolve_modes: ResolveModeFlags::default(),
22625            supported_stencil_resolve_modes: ResolveModeFlags::default(),
22626            independent_resolve_none: Bool32::default(),
22627            independent_resolve: Bool32::default(),
22628            filter_minmax_single_component_formats: Bool32::default(),
22629            filter_minmax_image_component_mapping: Bool32::default(),
22630            max_timeline_semaphore_value_difference: u64::default(),
22631            framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
22632        }
22633    }
22634}
22635
22636unsafe impl Send for PhysicalDeviceVulkan12Properties {}
22637unsafe impl Sync for PhysicalDeviceVulkan12Properties {}
22638
22639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html>
22640#[repr(C)]
22641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22642pub struct PhysicalDeviceVulkan13Features {
22643    pub s_type: StructureType,
22644    pub next: *mut c_void,
22645    pub robust_image_access: Bool32,
22646    pub inline_uniform_block: Bool32,
22647    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
22648    pub pipeline_creation_cache_control: Bool32,
22649    pub private_data: Bool32,
22650    pub shader_demote_to_helper_invocation: Bool32,
22651    pub shader_terminate_invocation: Bool32,
22652    pub subgroup_size_control: Bool32,
22653    pub compute_full_subgroups: Bool32,
22654    pub synchronization2: Bool32,
22655    pub texture_compression_astc_hdr: Bool32,
22656    pub shader_zero_initialize_workgroup_memory: Bool32,
22657    pub dynamic_rendering: Bool32,
22658    pub shader_integer_dot_product: Bool32,
22659    pub maintenance4: Bool32,
22660}
22661
22662impl Default for PhysicalDeviceVulkan13Features {
22663    #[inline]
22664    fn default() -> Self {
22665        Self {
22666            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
22667            next: ptr::null_mut(),
22668            robust_image_access: Bool32::default(),
22669            inline_uniform_block: Bool32::default(),
22670            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
22671            pipeline_creation_cache_control: Bool32::default(),
22672            private_data: Bool32::default(),
22673            shader_demote_to_helper_invocation: Bool32::default(),
22674            shader_terminate_invocation: Bool32::default(),
22675            subgroup_size_control: Bool32::default(),
22676            compute_full_subgroups: Bool32::default(),
22677            synchronization2: Bool32::default(),
22678            texture_compression_astc_hdr: Bool32::default(),
22679            shader_zero_initialize_workgroup_memory: Bool32::default(),
22680            dynamic_rendering: Bool32::default(),
22681            shader_integer_dot_product: Bool32::default(),
22682            maintenance4: Bool32::default(),
22683        }
22684    }
22685}
22686
22687unsafe impl Send for PhysicalDeviceVulkan13Features {}
22688unsafe impl Sync for PhysicalDeviceVulkan13Features {}
22689
22690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html>
22691#[repr(C)]
22692#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22693pub struct PhysicalDeviceVulkan13Properties {
22694    pub s_type: StructureType,
22695    pub next: *mut c_void,
22696    pub min_subgroup_size: u32,
22697    pub max_subgroup_size: u32,
22698    pub max_compute_workgroup_subgroups: u32,
22699    pub required_subgroup_size_stages: ShaderStageFlags,
22700    pub max_inline_uniform_block_size: u32,
22701    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
22702    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
22703    pub max_descriptor_set_inline_uniform_blocks: u32,
22704    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
22705    pub max_inline_uniform_total_size: u32,
22706    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
22707    pub integer_dot_product_8bit_signed_accelerated: Bool32,
22708    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
22709    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
22710    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
22711    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
22712    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
22713    pub integer_dot_product_16bit_signed_accelerated: Bool32,
22714    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
22715    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
22716    pub integer_dot_product_32bit_signed_accelerated: Bool32,
22717    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
22718    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
22719    pub integer_dot_product_64bit_signed_accelerated: Bool32,
22720    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
22721    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
22722    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
22723    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
22724    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
22725    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
22726    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
22727        Bool32,
22728    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
22729    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
22730    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
22731    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
22732    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
22733    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
22734    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
22735    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
22736    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
22737    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
22738    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
22739    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
22740    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
22741    pub max_buffer_size: DeviceSize,
22742}
22743
22744impl Default for PhysicalDeviceVulkan13Properties {
22745    #[inline]
22746    fn default() -> Self {
22747        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() }
22748    }
22749}
22750
22751unsafe impl Send for PhysicalDeviceVulkan13Properties {}
22752unsafe impl Sync for PhysicalDeviceVulkan13Properties {}
22753
22754/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html>
22755#[repr(C)]
22756#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22757pub struct PhysicalDeviceVulkan14Features {
22758    pub s_type: StructureType,
22759    pub next: *mut c_void,
22760    pub global_priority_query: Bool32,
22761    pub shader_subgroup_rotate: Bool32,
22762    pub shader_subgroup_rotate_clustered: Bool32,
22763    pub shader_float_controls2: Bool32,
22764    pub shader_expect_assume: Bool32,
22765    pub rectangular_lines: Bool32,
22766    pub bresenham_lines: Bool32,
22767    pub smooth_lines: Bool32,
22768    pub stippled_rectangular_lines: Bool32,
22769    pub stippled_bresenham_lines: Bool32,
22770    pub stippled_smooth_lines: Bool32,
22771    pub vertex_attribute_instance_rate_divisor: Bool32,
22772    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
22773    pub index_type_uint8: Bool32,
22774    pub dynamic_rendering_local_read: Bool32,
22775    pub maintenance5: Bool32,
22776    pub maintenance6: Bool32,
22777    pub pipeline_protected_access: Bool32,
22778    pub pipeline_robustness: Bool32,
22779    pub host_image_copy: Bool32,
22780    pub push_descriptor: Bool32,
22781}
22782
22783impl Default for PhysicalDeviceVulkan14Features {
22784    #[inline]
22785    fn default() -> Self {
22786        Self {
22787            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES,
22788            next: ptr::null_mut(),
22789            global_priority_query: Bool32::default(),
22790            shader_subgroup_rotate: Bool32::default(),
22791            shader_subgroup_rotate_clustered: Bool32::default(),
22792            shader_float_controls2: Bool32::default(),
22793            shader_expect_assume: Bool32::default(),
22794            rectangular_lines: Bool32::default(),
22795            bresenham_lines: Bool32::default(),
22796            smooth_lines: Bool32::default(),
22797            stippled_rectangular_lines: Bool32::default(),
22798            stippled_bresenham_lines: Bool32::default(),
22799            stippled_smooth_lines: Bool32::default(),
22800            vertex_attribute_instance_rate_divisor: Bool32::default(),
22801            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
22802            index_type_uint8: Bool32::default(),
22803            dynamic_rendering_local_read: Bool32::default(),
22804            maintenance5: Bool32::default(),
22805            maintenance6: Bool32::default(),
22806            pipeline_protected_access: Bool32::default(),
22807            pipeline_robustness: Bool32::default(),
22808            host_image_copy: Bool32::default(),
22809            push_descriptor: Bool32::default(),
22810        }
22811    }
22812}
22813
22814unsafe impl Send for PhysicalDeviceVulkan14Features {}
22815unsafe impl Sync for PhysicalDeviceVulkan14Features {}
22816
22817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html>
22818#[repr(C)]
22819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22820pub struct PhysicalDeviceVulkan14Properties {
22821    pub s_type: StructureType,
22822    pub next: *mut c_void,
22823    pub line_sub_pixel_precision_bits: u32,
22824    pub max_vertex_attrib_divisor: u32,
22825    pub supports_non_zero_first_instance: Bool32,
22826    pub max_push_descriptors: u32,
22827    pub dynamic_rendering_local_read_depth_stencil_attachments: Bool32,
22828    pub dynamic_rendering_local_read_multisampled_attachments: Bool32,
22829    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
22830    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
22831    pub depth_stencil_swizzle_one_support: Bool32,
22832    pub polygon_mode_point_size: Bool32,
22833    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
22834    pub non_strict_wide_lines_use_parallelogram: Bool32,
22835    pub block_texel_view_compatible_multiple_layers: Bool32,
22836    pub max_combined_image_sampler_descriptor_count: u32,
22837    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
22838    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
22839    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
22840    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
22841    pub default_robustness_images: PipelineRobustnessImageBehavior,
22842    pub copy_src_layout_count: u32,
22843    pub copy_src_layouts: *mut ImageLayout,
22844    pub copy_dst_layout_count: u32,
22845    pub copy_dst_layouts: *mut ImageLayout,
22846    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
22847    pub identical_memory_type_requirements: Bool32,
22848}
22849
22850impl Default for PhysicalDeviceVulkan14Properties {
22851    #[inline]
22852    fn default() -> Self {
22853        Self {
22854            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES,
22855            next: ptr::null_mut(),
22856            line_sub_pixel_precision_bits: u32::default(),
22857            max_vertex_attrib_divisor: u32::default(),
22858            supports_non_zero_first_instance: Bool32::default(),
22859            max_push_descriptors: u32::default(),
22860            dynamic_rendering_local_read_depth_stencil_attachments: Bool32::default(),
22861            dynamic_rendering_local_read_multisampled_attachments: Bool32::default(),
22862            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
22863            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
22864            depth_stencil_swizzle_one_support: Bool32::default(),
22865            polygon_mode_point_size: Bool32::default(),
22866            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
22867            non_strict_wide_lines_use_parallelogram: Bool32::default(),
22868            block_texel_view_compatible_multiple_layers: Bool32::default(),
22869            max_combined_image_sampler_descriptor_count: u32::default(),
22870            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
22871            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
22872            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
22873            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
22874            default_robustness_images: PipelineRobustnessImageBehavior::default(),
22875            copy_src_layout_count: u32::default(),
22876            copy_src_layouts: ptr::null_mut(),
22877            copy_dst_layout_count: u32::default(),
22878            copy_dst_layouts: ptr::null_mut(),
22879            optimal_tiling_layout_uuid: ByteArray::default(),
22880            identical_memory_type_requirements: Bool32::default(),
22881        }
22882    }
22883}
22884
22885unsafe impl Send for PhysicalDeviceVulkan14Properties {}
22886unsafe impl Sync for PhysicalDeviceVulkan14Properties {}
22887
22888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>
22889#[repr(C)]
22890#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22891pub struct PhysicalDeviceVulkanMemoryModelFeatures {
22892    pub s_type: StructureType,
22893    pub next: *mut c_void,
22894    pub vulkan_memory_model: Bool32,
22895    pub vulkan_memory_model_device_scope: Bool32,
22896    pub vulkan_memory_model_availability_visibility_chains: Bool32,
22897}
22898
22899impl Default for PhysicalDeviceVulkanMemoryModelFeatures {
22900    #[inline]
22901    fn default() -> Self {
22902        Self {
22903            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
22904            next: ptr::null_mut(),
22905            vulkan_memory_model: Bool32::default(),
22906            vulkan_memory_model_device_scope: Bool32::default(),
22907            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
22908        }
22909    }
22910}
22911
22912unsafe impl Send for PhysicalDeviceVulkanMemoryModelFeatures {}
22913unsafe impl Sync for PhysicalDeviceVulkanMemoryModelFeatures {}
22914
22915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>
22916#[repr(C)]
22917#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22918pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
22919    pub s_type: StructureType,
22920    pub next: *mut c_void,
22921    pub workgroup_memory_explicit_layout: Bool32,
22922    pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
22923    pub workgroup_memory_explicit_layout_8bit_access: Bool32,
22924    pub workgroup_memory_explicit_layout_16bit_access: Bool32,
22925}
22926
22927impl Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
22928    #[inline]
22929    fn default() -> Self {
22930        Self {
22931            s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
22932            next: ptr::null_mut(),
22933            workgroup_memory_explicit_layout: Bool32::default(),
22934            workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
22935            workgroup_memory_explicit_layout_8bit_access: Bool32::default(),
22936            workgroup_memory_explicit_layout_16bit_access: Bool32::default(),
22937        }
22938    }
22939}
22940
22941unsafe impl Send for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
22942unsafe impl Sync for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
22943
22944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>
22945#[repr(C)]
22946#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22947pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
22948    pub s_type: StructureType,
22949    pub next: *mut c_void,
22950    pub ycbcr2plane444_formats: Bool32,
22951}
22952
22953impl Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
22954    #[inline]
22955    fn default() -> Self {
22956        Self {
22957            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
22958            next: ptr::null_mut(),
22959            ycbcr2plane444_formats: Bool32::default(),
22960        }
22961    }
22962}
22963
22964unsafe impl Send for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
22965unsafe impl Sync for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
22966
22967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html>
22968#[repr(C)]
22969#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22970pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOM {
22971    pub s_type: StructureType,
22972    pub next: *mut c_void,
22973    pub ycbcr_degamma: Bool32,
22974}
22975
22976impl Default for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
22977    #[inline]
22978    fn default() -> Self {
22979        Self {
22980            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM,
22981            next: ptr::null_mut(),
22982            ycbcr_degamma: Bool32::default(),
22983        }
22984    }
22985}
22986
22987unsafe impl Send for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
22988unsafe impl Sync for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
22989
22990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>
22991#[repr(C)]
22992#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22993pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
22994    pub s_type: StructureType,
22995    pub next: *mut c_void,
22996    pub ycbcr_image_arrays: Bool32,
22997}
22998
22999impl Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
23000    #[inline]
23001    fn default() -> Self {
23002        Self {
23003            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
23004            next: ptr::null_mut(),
23005            ycbcr_image_arrays: Bool32::default(),
23006        }
23007    }
23008}
23009
23010unsafe impl Send for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23011unsafe impl Sync for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
23012
23013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.html>
23014#[repr(C)]
23015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23016pub struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23017    pub s_type: StructureType,
23018    pub next: *mut c_void,
23019    pub zero_initialize_device_memory: Bool32,
23020}
23021
23022impl Default for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
23023    #[inline]
23024    fn default() -> Self {
23025        Self {
23026            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT,
23027            next: ptr::null_mut(),
23028            zero_initialize_device_memory: Bool32::default(),
23029        }
23030    }
23031}
23032
23033unsafe impl Send for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23034unsafe impl Sync for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
23035
23036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html>
23037#[repr(C)]
23038#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23039pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23040    pub s_type: StructureType,
23041    pub next: *mut c_void,
23042    pub shader_zero_initialize_workgroup_memory: Bool32,
23043}
23044
23045impl Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
23046    #[inline]
23047    fn default() -> Self {
23048        Self {
23049            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
23050            next: ptr::null_mut(),
23051            shader_zero_initialize_workgroup_memory: Bool32::default(),
23052        }
23053    }
23054}
23055
23056unsafe impl Send for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23057unsafe impl Sync for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
23058
23059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html>
23060#[repr(C)]
23061#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23062pub struct PipelineBinaryCreateInfoKHR {
23063    pub s_type: StructureType,
23064    pub next: *const c_void,
23065    pub keys_and_data_info: *const PipelineBinaryKeysAndDataKHR,
23066    pub pipeline: Pipeline,
23067    pub pipeline_create_info: *const PipelineCreateInfoKHR,
23068}
23069
23070impl Default for PipelineBinaryCreateInfoKHR {
23071    #[inline]
23072    fn default() -> Self {
23073        Self {
23074            s_type: StructureType::PIPELINE_BINARY_CREATE_INFO_KHR,
23075            next: ptr::null(),
23076            keys_and_data_info: ptr::null(),
23077            pipeline: Pipeline::default(),
23078            pipeline_create_info: ptr::null(),
23079        }
23080    }
23081}
23082
23083unsafe impl Send for PipelineBinaryCreateInfoKHR {}
23084unsafe impl Sync for PipelineBinaryCreateInfoKHR {}
23085
23086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html>
23087#[repr(C)]
23088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23089pub struct PipelineBinaryDataInfoKHR {
23090    pub s_type: StructureType,
23091    pub next: *mut c_void,
23092    pub pipeline_binary: PipelineBinaryKHR,
23093}
23094
23095impl Default for PipelineBinaryDataInfoKHR {
23096    #[inline]
23097    fn default() -> Self {
23098        Self {
23099            s_type: StructureType::PIPELINE_BINARY_DATA_INFO_KHR,
23100            next: ptr::null_mut(),
23101            pipeline_binary: PipelineBinaryKHR::default(),
23102        }
23103    }
23104}
23105
23106unsafe impl Send for PipelineBinaryDataInfoKHR {}
23107unsafe impl Sync for PipelineBinaryDataInfoKHR {}
23108
23109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html>
23110#[repr(C)]
23111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23112pub struct PipelineBinaryDataKHR {
23113    pub data_size: usize,
23114    pub data: *mut c_void,
23115}
23116
23117impl Default for PipelineBinaryDataKHR {
23118    #[inline]
23119    fn default() -> Self {
23120        Self {
23121            data_size: usize::default(),
23122            data: ptr::null_mut(),
23123        }
23124    }
23125}
23126
23127unsafe impl Send for PipelineBinaryDataKHR {}
23128unsafe impl Sync for PipelineBinaryDataKHR {}
23129
23130/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html>
23131#[repr(C)]
23132#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23133pub struct PipelineBinaryHandlesInfoKHR {
23134    pub s_type: StructureType,
23135    pub next: *const c_void,
23136    pub pipeline_binary_count: u32,
23137    pub pipeline_binaries: *mut PipelineBinaryKHR,
23138}
23139
23140impl Default for PipelineBinaryHandlesInfoKHR {
23141    #[inline]
23142    fn default() -> Self {
23143        Self {
23144            s_type: StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR,
23145            next: ptr::null(),
23146            pipeline_binary_count: u32::default(),
23147            pipeline_binaries: ptr::null_mut(),
23148        }
23149    }
23150}
23151
23152unsafe impl Send for PipelineBinaryHandlesInfoKHR {}
23153unsafe impl Sync for PipelineBinaryHandlesInfoKHR {}
23154
23155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html>
23156#[repr(C)]
23157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23158pub struct PipelineBinaryInfoKHR {
23159    pub s_type: StructureType,
23160    pub next: *const c_void,
23161    pub binary_count: u32,
23162    pub pipeline_binaries: *const PipelineBinaryKHR,
23163}
23164
23165impl Default for PipelineBinaryInfoKHR {
23166    #[inline]
23167    fn default() -> Self {
23168        Self {
23169            s_type: StructureType::PIPELINE_BINARY_INFO_KHR,
23170            next: ptr::null(),
23171            binary_count: u32::default(),
23172            pipeline_binaries: ptr::null(),
23173        }
23174    }
23175}
23176
23177unsafe impl Send for PipelineBinaryInfoKHR {}
23178unsafe impl Sync for PipelineBinaryInfoKHR {}
23179
23180/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html>
23181#[repr(C)]
23182#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23183pub struct PipelineBinaryKeyKHR {
23184    pub s_type: StructureType,
23185    pub next: *mut c_void,
23186    pub key_size: u32,
23187    pub key: ByteArray<MAX_PIPELINE_BINARY_KEY_SIZE_KHR>,
23188}
23189
23190impl Default for PipelineBinaryKeyKHR {
23191    #[inline]
23192    fn default() -> Self {
23193        Self {
23194            s_type: StructureType::PIPELINE_BINARY_KEY_KHR,
23195            next: ptr::null_mut(),
23196            key_size: u32::default(),
23197            key: ByteArray::default(),
23198        }
23199    }
23200}
23201
23202unsafe impl Send for PipelineBinaryKeyKHR {}
23203unsafe impl Sync for PipelineBinaryKeyKHR {}
23204
23205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html>
23206#[repr(C)]
23207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23208pub struct PipelineBinaryKeysAndDataKHR {
23209    pub binary_count: u32,
23210    pub pipeline_binary_keys: *const PipelineBinaryKeyKHR,
23211    pub pipeline_binary_data: *const PipelineBinaryDataKHR,
23212}
23213
23214impl Default for PipelineBinaryKeysAndDataKHR {
23215    #[inline]
23216    fn default() -> Self {
23217        Self {
23218            binary_count: u32::default(),
23219            pipeline_binary_keys: ptr::null(),
23220            pipeline_binary_data: ptr::null(),
23221        }
23222    }
23223}
23224
23225unsafe impl Send for PipelineBinaryKeysAndDataKHR {}
23226unsafe impl Sync for PipelineBinaryKeysAndDataKHR {}
23227
23228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html>
23229#[repr(C)]
23230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23231pub struct PipelineCacheCreateInfo {
23232    pub s_type: StructureType,
23233    pub next: *const c_void,
23234    pub flags: PipelineCacheCreateFlags,
23235    pub initial_data_size: usize,
23236    pub initial_data: *const c_void,
23237}
23238
23239impl Default for PipelineCacheCreateInfo {
23240    #[inline]
23241    fn default() -> Self {
23242        Self {
23243            s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
23244            next: ptr::null(),
23245            flags: PipelineCacheCreateFlags::default(),
23246            initial_data_size: usize::default(),
23247            initial_data: ptr::null(),
23248        }
23249    }
23250}
23251
23252unsafe impl Send for PipelineCacheCreateInfo {}
23253unsafe impl Sync for PipelineCacheCreateInfo {}
23254
23255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html>
23256#[repr(C)]
23257#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23258pub struct PipelineCacheHeaderVersionOne {
23259    pub header_size: u32,
23260    pub header_version: PipelineCacheHeaderVersion,
23261    pub vendor_id: u32,
23262    pub device_id: u32,
23263    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
23264}
23265
23266/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>
23267#[repr(C)]
23268#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23269pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
23270    pub s_type: StructureType,
23271    pub next: *const c_void,
23272    pub src_premultiplied: Bool32,
23273    pub dst_premultiplied: Bool32,
23274    pub blend_overlap: BlendOverlapEXT,
23275}
23276
23277impl Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
23278    #[inline]
23279    fn default() -> Self {
23280        Self {
23281            s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
23282            next: ptr::null(),
23283            src_premultiplied: Bool32::default(),
23284            dst_premultiplied: Bool32::default(),
23285            blend_overlap: BlendOverlapEXT::default(),
23286        }
23287    }
23288}
23289
23290unsafe impl Send for PipelineColorBlendAdvancedStateCreateInfoEXT {}
23291unsafe impl Sync for PipelineColorBlendAdvancedStateCreateInfoEXT {}
23292
23293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html>
23294#[repr(C)]
23295#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23296pub struct PipelineColorBlendAttachmentState {
23297    pub blend_enable: Bool32,
23298    pub src_color_blend_factor: BlendFactor,
23299    pub dst_color_blend_factor: BlendFactor,
23300    pub color_blend_op: BlendOp,
23301    pub src_alpha_blend_factor: BlendFactor,
23302    pub dst_alpha_blend_factor: BlendFactor,
23303    pub alpha_blend_op: BlendOp,
23304    pub color_write_mask: ColorComponentFlags,
23305}
23306
23307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html>
23308#[repr(C)]
23309#[derive(Copy, Clone, Debug, PartialEq)]
23310pub struct PipelineColorBlendStateCreateInfo {
23311    pub s_type: StructureType,
23312    pub next: *const c_void,
23313    pub flags: PipelineColorBlendStateCreateFlags,
23314    pub logic_op_enable: Bool32,
23315    pub logic_op: LogicOp,
23316    pub attachment_count: u32,
23317    pub attachments: *const PipelineColorBlendAttachmentState,
23318    pub blend_constants: [f32; 4],
23319}
23320
23321impl Default for PipelineColorBlendStateCreateInfo {
23322    #[inline]
23323    fn default() -> Self {
23324        Self {
23325            s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
23326            next: ptr::null(),
23327            flags: PipelineColorBlendStateCreateFlags::default(),
23328            logic_op_enable: Bool32::default(),
23329            logic_op: LogicOp::default(),
23330            attachment_count: u32::default(),
23331            attachments: ptr::null(),
23332            blend_constants: [f32::default(); 4],
23333        }
23334    }
23335}
23336
23337unsafe impl Send for PipelineColorBlendStateCreateInfo {}
23338unsafe impl Sync for PipelineColorBlendStateCreateInfo {}
23339
23340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html>
23341#[repr(C)]
23342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23343pub struct PipelineColorWriteCreateInfoEXT {
23344    pub s_type: StructureType,
23345    pub next: *const c_void,
23346    pub attachment_count: u32,
23347    pub color_write_enables: *const Bool32,
23348}
23349
23350impl Default for PipelineColorWriteCreateInfoEXT {
23351    #[inline]
23352    fn default() -> Self {
23353        Self {
23354            s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
23355            next: ptr::null(),
23356            attachment_count: u32::default(),
23357            color_write_enables: ptr::null(),
23358        }
23359    }
23360}
23361
23362unsafe impl Send for PipelineColorWriteCreateInfoEXT {}
23363unsafe impl Sync for PipelineColorWriteCreateInfoEXT {}
23364
23365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html>
23366#[repr(C)]
23367#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23368pub struct PipelineCompilerControlCreateInfoAMD {
23369    pub s_type: StructureType,
23370    pub next: *const c_void,
23371    pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
23372}
23373
23374impl Default for PipelineCompilerControlCreateInfoAMD {
23375    #[inline]
23376    fn default() -> Self {
23377        Self {
23378            s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
23379            next: ptr::null(),
23380            compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
23381        }
23382    }
23383}
23384
23385unsafe impl Send for PipelineCompilerControlCreateInfoAMD {}
23386unsafe impl Sync for PipelineCompilerControlCreateInfoAMD {}
23387
23388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>
23389#[repr(C)]
23390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23391pub struct PipelineCoverageModulationStateCreateInfoNV {
23392    pub s_type: StructureType,
23393    pub next: *const c_void,
23394    pub flags: PipelineCoverageModulationStateCreateFlagsNV,
23395    pub coverage_modulation_mode: CoverageModulationModeNV,
23396    pub coverage_modulation_table_enable: Bool32,
23397    pub coverage_modulation_table_count: u32,
23398    pub coverage_modulation_table: *const f32,
23399}
23400
23401impl Default for PipelineCoverageModulationStateCreateInfoNV {
23402    #[inline]
23403    fn default() -> Self {
23404        Self {
23405            s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
23406            next: ptr::null(),
23407            flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
23408            coverage_modulation_mode: CoverageModulationModeNV::default(),
23409            coverage_modulation_table_enable: Bool32::default(),
23410            coverage_modulation_table_count: u32::default(),
23411            coverage_modulation_table: ptr::null(),
23412        }
23413    }
23414}
23415
23416unsafe impl Send for PipelineCoverageModulationStateCreateInfoNV {}
23417unsafe impl Sync for PipelineCoverageModulationStateCreateInfoNV {}
23418
23419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>
23420#[repr(C)]
23421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23422pub struct PipelineCoverageReductionStateCreateInfoNV {
23423    pub s_type: StructureType,
23424    pub next: *const c_void,
23425    pub flags: PipelineCoverageReductionStateCreateFlagsNV,
23426    pub coverage_reduction_mode: CoverageReductionModeNV,
23427}
23428
23429impl Default for PipelineCoverageReductionStateCreateInfoNV {
23430    #[inline]
23431    fn default() -> Self {
23432        Self {
23433            s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
23434            next: ptr::null(),
23435            flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
23436            coverage_reduction_mode: CoverageReductionModeNV::default(),
23437        }
23438    }
23439}
23440
23441unsafe impl Send for PipelineCoverageReductionStateCreateInfoNV {}
23442unsafe impl Sync for PipelineCoverageReductionStateCreateInfoNV {}
23443
23444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>
23445#[repr(C)]
23446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23447pub struct PipelineCoverageToColorStateCreateInfoNV {
23448    pub s_type: StructureType,
23449    pub next: *const c_void,
23450    pub flags: PipelineCoverageToColorStateCreateFlagsNV,
23451    pub coverage_to_color_enable: Bool32,
23452    pub coverage_to_color_location: u32,
23453}
23454
23455impl Default for PipelineCoverageToColorStateCreateInfoNV {
23456    #[inline]
23457    fn default() -> Self {
23458        Self {
23459            s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
23460            next: ptr::null(),
23461            flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
23462            coverage_to_color_enable: Bool32::default(),
23463            coverage_to_color_location: u32::default(),
23464        }
23465    }
23466}
23467
23468unsafe impl Send for PipelineCoverageToColorStateCreateInfoNV {}
23469unsafe impl Sync for PipelineCoverageToColorStateCreateInfoNV {}
23470
23471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html>
23472#[repr(C)]
23473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23474pub struct PipelineCreateFlags2CreateInfo {
23475    pub s_type: StructureType,
23476    pub next: *const c_void,
23477    pub flags: PipelineCreateFlags2,
23478}
23479
23480impl Default for PipelineCreateFlags2CreateInfo {
23481    #[inline]
23482    fn default() -> Self {
23483        Self {
23484            s_type: StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO,
23485            next: ptr::null(),
23486            flags: PipelineCreateFlags2::default(),
23487        }
23488    }
23489}
23490
23491unsafe impl Send for PipelineCreateFlags2CreateInfo {}
23492unsafe impl Sync for PipelineCreateFlags2CreateInfo {}
23493
23494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html>
23495#[repr(C)]
23496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23497pub struct PipelineCreateInfoKHR {
23498    pub s_type: StructureType,
23499    pub next: *mut c_void,
23500}
23501
23502impl Default for PipelineCreateInfoKHR {
23503    #[inline]
23504    fn default() -> Self {
23505        Self {
23506            s_type: StructureType::PIPELINE_CREATE_INFO_KHR,
23507            next: ptr::null_mut(),
23508        }
23509    }
23510}
23511
23512unsafe impl Send for PipelineCreateInfoKHR {}
23513unsafe impl Sync for PipelineCreateInfoKHR {}
23514
23515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html>
23516#[repr(C)]
23517#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
23518pub struct PipelineCreationFeedback {
23519    pub flags: PipelineCreationFeedbackFlags,
23520    pub duration: u64,
23521}
23522
23523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html>
23524#[repr(C)]
23525#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23526pub struct PipelineCreationFeedbackCreateInfo {
23527    pub s_type: StructureType,
23528    pub next: *const c_void,
23529    pub pipeline_creation_feedback: *mut PipelineCreationFeedback,
23530    pub pipeline_stage_creation_feedback_count: u32,
23531    pub pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedback,
23532}
23533
23534impl Default for PipelineCreationFeedbackCreateInfo {
23535    #[inline]
23536    fn default() -> Self {
23537        Self {
23538            s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
23539            next: ptr::null(),
23540            pipeline_creation_feedback: ptr::null_mut(),
23541            pipeline_stage_creation_feedback_count: u32::default(),
23542            pipeline_stage_creation_feedbacks: ptr::null_mut(),
23543        }
23544    }
23545}
23546
23547unsafe impl Send for PipelineCreationFeedbackCreateInfo {}
23548unsafe impl Sync for PipelineCreationFeedbackCreateInfo {}
23549
23550/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html>
23551#[repr(C)]
23552#[derive(Copy, Clone, Debug, PartialEq)]
23553pub struct PipelineDepthStencilStateCreateInfo {
23554    pub s_type: StructureType,
23555    pub next: *const c_void,
23556    pub flags: PipelineDepthStencilStateCreateFlags,
23557    pub depth_test_enable: Bool32,
23558    pub depth_write_enable: Bool32,
23559    pub depth_compare_op: CompareOp,
23560    pub depth_bounds_test_enable: Bool32,
23561    pub stencil_test_enable: Bool32,
23562    pub front: StencilOpState,
23563    pub back: StencilOpState,
23564    pub min_depth_bounds: f32,
23565    pub max_depth_bounds: f32,
23566}
23567
23568impl Default for PipelineDepthStencilStateCreateInfo {
23569    #[inline]
23570    fn default() -> Self {
23571        Self {
23572            s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
23573            next: ptr::null(),
23574            flags: PipelineDepthStencilStateCreateFlags::default(),
23575            depth_test_enable: Bool32::default(),
23576            depth_write_enable: Bool32::default(),
23577            depth_compare_op: CompareOp::default(),
23578            depth_bounds_test_enable: Bool32::default(),
23579            stencil_test_enable: Bool32::default(),
23580            front: StencilOpState::default(),
23581            back: StencilOpState::default(),
23582            min_depth_bounds: f32::default(),
23583            max_depth_bounds: f32::default(),
23584        }
23585    }
23586}
23587
23588unsafe impl Send for PipelineDepthStencilStateCreateInfo {}
23589unsafe impl Sync for PipelineDepthStencilStateCreateInfo {}
23590
23591/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>
23592#[repr(C)]
23593#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23594pub struct PipelineDiscardRectangleStateCreateInfoEXT {
23595    pub s_type: StructureType,
23596    pub next: *const c_void,
23597    pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
23598    pub discard_rectangle_mode: DiscardRectangleModeEXT,
23599    pub discard_rectangle_count: u32,
23600    pub discard_rectangles: *const Rect2D,
23601}
23602
23603impl Default for PipelineDiscardRectangleStateCreateInfoEXT {
23604    #[inline]
23605    fn default() -> Self {
23606        Self {
23607            s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
23608            next: ptr::null(),
23609            flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
23610            discard_rectangle_mode: DiscardRectangleModeEXT::default(),
23611            discard_rectangle_count: u32::default(),
23612            discard_rectangles: ptr::null(),
23613        }
23614    }
23615}
23616
23617unsafe impl Send for PipelineDiscardRectangleStateCreateInfoEXT {}
23618unsafe impl Sync for PipelineDiscardRectangleStateCreateInfoEXT {}
23619
23620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html>
23621#[repr(C)]
23622#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23623pub struct PipelineDynamicStateCreateInfo {
23624    pub s_type: StructureType,
23625    pub next: *const c_void,
23626    pub flags: PipelineDynamicStateCreateFlags,
23627    pub dynamic_state_count: u32,
23628    pub dynamic_states: *const DynamicState,
23629}
23630
23631impl Default for PipelineDynamicStateCreateInfo {
23632    #[inline]
23633    fn default() -> Self {
23634        Self {
23635            s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
23636            next: ptr::null(),
23637            flags: PipelineDynamicStateCreateFlags::default(),
23638            dynamic_state_count: u32::default(),
23639            dynamic_states: ptr::null(),
23640        }
23641    }
23642}
23643
23644unsafe impl Send for PipelineDynamicStateCreateInfo {}
23645unsafe impl Sync for PipelineDynamicStateCreateInfo {}
23646
23647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html>
23648#[repr(C)]
23649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23650pub struct PipelineExecutableInfoKHR {
23651    pub s_type: StructureType,
23652    pub next: *const c_void,
23653    pub pipeline: Pipeline,
23654    pub executable_index: u32,
23655}
23656
23657impl Default for PipelineExecutableInfoKHR {
23658    #[inline]
23659    fn default() -> Self {
23660        Self {
23661            s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
23662            next: ptr::null(),
23663            pipeline: Pipeline::default(),
23664            executable_index: u32::default(),
23665        }
23666    }
23667}
23668
23669unsafe impl Send for PipelineExecutableInfoKHR {}
23670unsafe impl Sync for PipelineExecutableInfoKHR {}
23671
23672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html>
23673#[repr(C)]
23674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23675pub struct PipelineExecutableInternalRepresentationKHR {
23676    pub s_type: StructureType,
23677    pub next: *mut c_void,
23678    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
23679    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
23680    pub is_text: Bool32,
23681    pub data_size: usize,
23682    pub data: *mut c_void,
23683}
23684
23685impl Default for PipelineExecutableInternalRepresentationKHR {
23686    #[inline]
23687    fn default() -> Self {
23688        Self {
23689            s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
23690            next: ptr::null_mut(),
23691            name: StringArray::default(),
23692            description: StringArray::default(),
23693            is_text: Bool32::default(),
23694            data_size: usize::default(),
23695            data: ptr::null_mut(),
23696        }
23697    }
23698}
23699
23700unsafe impl Send for PipelineExecutableInternalRepresentationKHR {}
23701unsafe impl Sync for PipelineExecutableInternalRepresentationKHR {}
23702
23703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html>
23704#[repr(C)]
23705#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23706pub struct PipelineExecutablePropertiesKHR {
23707    pub s_type: StructureType,
23708    pub next: *mut c_void,
23709    pub stages: ShaderStageFlags,
23710    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
23711    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
23712    pub subgroup_size: u32,
23713}
23714
23715impl Default for PipelineExecutablePropertiesKHR {
23716    #[inline]
23717    fn default() -> Self {
23718        Self {
23719            s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
23720            next: ptr::null_mut(),
23721            stages: ShaderStageFlags::default(),
23722            name: StringArray::default(),
23723            description: StringArray::default(),
23724            subgroup_size: u32::default(),
23725        }
23726    }
23727}
23728
23729unsafe impl Send for PipelineExecutablePropertiesKHR {}
23730unsafe impl Sync for PipelineExecutablePropertiesKHR {}
23731
23732/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html>
23733#[repr(C)]
23734#[derive(Copy, Clone, Debug)]
23735pub struct PipelineExecutableStatisticKHR {
23736    pub s_type: StructureType,
23737    pub next: *mut c_void,
23738    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
23739    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
23740    pub format: PipelineExecutableStatisticFormatKHR,
23741    pub value: PipelineExecutableStatisticValueKHR,
23742}
23743
23744impl Default for PipelineExecutableStatisticKHR {
23745    #[inline]
23746    fn default() -> Self {
23747        Self {
23748            s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
23749            next: ptr::null_mut(),
23750            name: StringArray::default(),
23751            description: StringArray::default(),
23752            format: PipelineExecutableStatisticFormatKHR::default(),
23753            value: PipelineExecutableStatisticValueKHR::default(),
23754        }
23755    }
23756}
23757
23758unsafe impl Send for PipelineExecutableStatisticKHR {}
23759unsafe impl Sync for PipelineExecutableStatisticKHR {}
23760
23761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentDensityMapLayeredCreateInfoVALVE.html>
23762#[repr(C)]
23763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23764pub struct PipelineFragmentDensityMapLayeredCreateInfoVALVE {
23765    pub s_type: StructureType,
23766    pub next: *const c_void,
23767    pub max_fragment_density_map_layers: u32,
23768}
23769
23770impl Default for PipelineFragmentDensityMapLayeredCreateInfoVALVE {
23771    #[inline]
23772    fn default() -> Self {
23773        Self {
23774            s_type: StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE,
23775            next: ptr::null(),
23776            max_fragment_density_map_layers: u32::default(),
23777        }
23778    }
23779}
23780
23781unsafe impl Send for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
23782unsafe impl Sync for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
23783
23784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>
23785#[repr(C)]
23786#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23787pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
23788    pub s_type: StructureType,
23789    pub next: *const c_void,
23790    pub shading_rate_type: FragmentShadingRateTypeNV,
23791    pub shading_rate: FragmentShadingRateNV,
23792    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
23793}
23794
23795impl Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
23796    #[inline]
23797    fn default() -> Self {
23798        Self {
23799            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
23800            next: ptr::null(),
23801            shading_rate_type: FragmentShadingRateTypeNV::default(),
23802            shading_rate: FragmentShadingRateNV::default(),
23803            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
23804        }
23805    }
23806}
23807
23808unsafe impl Send for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
23809unsafe impl Sync for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
23810
23811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>
23812#[repr(C)]
23813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23814pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
23815    pub s_type: StructureType,
23816    pub next: *const c_void,
23817    pub fragment_size: Extent2D,
23818    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
23819}
23820
23821impl Default for PipelineFragmentShadingRateStateCreateInfoKHR {
23822    #[inline]
23823    fn default() -> Self {
23824        Self {
23825            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
23826            next: ptr::null(),
23827            fragment_size: Extent2D::default(),
23828            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
23829        }
23830    }
23831}
23832
23833unsafe impl Send for PipelineFragmentShadingRateStateCreateInfoKHR {}
23834unsafe impl Sync for PipelineFragmentShadingRateStateCreateInfoKHR {}
23835
23836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html>
23837#[repr(C)]
23838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23839pub struct PipelineIndirectDeviceAddressInfoNV {
23840    pub s_type: StructureType,
23841    pub next: *const c_void,
23842    pub pipeline_bind_point: PipelineBindPoint,
23843    pub pipeline: Pipeline,
23844}
23845
23846impl Default for PipelineIndirectDeviceAddressInfoNV {
23847    #[inline]
23848    fn default() -> Self {
23849        Self {
23850            s_type: StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV,
23851            next: ptr::null(),
23852            pipeline_bind_point: PipelineBindPoint::default(),
23853            pipeline: Pipeline::default(),
23854        }
23855    }
23856}
23857
23858unsafe impl Send for PipelineIndirectDeviceAddressInfoNV {}
23859unsafe impl Sync for PipelineIndirectDeviceAddressInfoNV {}
23860
23861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html>
23862#[repr(C)]
23863#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23864pub struct PipelineInfoKHR {
23865    pub s_type: StructureType,
23866    pub next: *const c_void,
23867    pub pipeline: Pipeline,
23868}
23869
23870impl Default for PipelineInfoKHR {
23871    #[inline]
23872    fn default() -> Self {
23873        Self {
23874            s_type: StructureType::PIPELINE_INFO_KHR,
23875            next: ptr::null(),
23876            pipeline: Pipeline::default(),
23877        }
23878    }
23879}
23880
23881unsafe impl Send for PipelineInfoKHR {}
23882unsafe impl Sync for PipelineInfoKHR {}
23883
23884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html>
23885#[repr(C)]
23886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23887pub struct PipelineInputAssemblyStateCreateInfo {
23888    pub s_type: StructureType,
23889    pub next: *const c_void,
23890    pub flags: PipelineInputAssemblyStateCreateFlags,
23891    pub topology: PrimitiveTopology,
23892    pub primitive_restart_enable: Bool32,
23893}
23894
23895impl Default for PipelineInputAssemblyStateCreateInfo {
23896    #[inline]
23897    fn default() -> Self {
23898        Self {
23899            s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
23900            next: ptr::null(),
23901            flags: PipelineInputAssemblyStateCreateFlags::default(),
23902            topology: PrimitiveTopology::default(),
23903            primitive_restart_enable: Bool32::default(),
23904        }
23905    }
23906}
23907
23908unsafe impl Send for PipelineInputAssemblyStateCreateInfo {}
23909unsafe impl Sync for PipelineInputAssemblyStateCreateInfo {}
23910
23911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html>
23912#[repr(C)]
23913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23914pub struct PipelineLayoutCreateInfo {
23915    pub s_type: StructureType,
23916    pub next: *const c_void,
23917    pub flags: PipelineLayoutCreateFlags,
23918    pub set_layout_count: u32,
23919    pub set_layouts: *const DescriptorSetLayout,
23920    pub push_constant_range_count: u32,
23921    pub push_constant_ranges: *const PushConstantRange,
23922}
23923
23924impl Default for PipelineLayoutCreateInfo {
23925    #[inline]
23926    fn default() -> Self {
23927        Self {
23928            s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
23929            next: ptr::null(),
23930            flags: PipelineLayoutCreateFlags::default(),
23931            set_layout_count: u32::default(),
23932            set_layouts: ptr::null(),
23933            push_constant_range_count: u32::default(),
23934            push_constant_ranges: ptr::null(),
23935        }
23936    }
23937}
23938
23939unsafe impl Send for PipelineLayoutCreateInfo {}
23940unsafe impl Sync for PipelineLayoutCreateInfo {}
23941
23942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html>
23943#[repr(C)]
23944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23945pub struct PipelineLibraryCreateInfoKHR {
23946    pub s_type: StructureType,
23947    pub next: *const c_void,
23948    pub library_count: u32,
23949    pub libraries: *const Pipeline,
23950}
23951
23952impl Default for PipelineLibraryCreateInfoKHR {
23953    #[inline]
23954    fn default() -> Self {
23955        Self {
23956            s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
23957            next: ptr::null(),
23958            library_count: u32::default(),
23959            libraries: ptr::null(),
23960        }
23961    }
23962}
23963
23964unsafe impl Send for PipelineLibraryCreateInfoKHR {}
23965unsafe impl Sync for PipelineLibraryCreateInfoKHR {}
23966
23967/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html>
23968#[repr(C)]
23969#[derive(Copy, Clone, Debug, PartialEq)]
23970pub struct PipelineMultisampleStateCreateInfo {
23971    pub s_type: StructureType,
23972    pub next: *const c_void,
23973    pub flags: PipelineMultisampleStateCreateFlags,
23974    pub rasterization_samples: SampleCountFlags,
23975    pub sample_shading_enable: Bool32,
23976    pub min_sample_shading: f32,
23977    pub sample_mask: *const SampleMask,
23978    pub alpha_to_coverage_enable: Bool32,
23979    pub alpha_to_one_enable: Bool32,
23980}
23981
23982impl Default for PipelineMultisampleStateCreateInfo {
23983    #[inline]
23984    fn default() -> Self {
23985        Self {
23986            s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
23987            next: ptr::null(),
23988            flags: PipelineMultisampleStateCreateFlags::default(),
23989            rasterization_samples: SampleCountFlags::default(),
23990            sample_shading_enable: Bool32::default(),
23991            min_sample_shading: f32::default(),
23992            sample_mask: ptr::null(),
23993            alpha_to_coverage_enable: Bool32::default(),
23994            alpha_to_one_enable: Bool32::default(),
23995        }
23996    }
23997}
23998
23999unsafe impl Send for PipelineMultisampleStateCreateInfo {}
24000unsafe impl Sync for PipelineMultisampleStateCreateInfo {}
24001
24002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html>
24003#[repr(C)]
24004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24005pub struct PipelinePropertiesIdentifierEXT {
24006    pub s_type: StructureType,
24007    pub next: *mut c_void,
24008    pub pipeline_identifier: ByteArray<UUID_SIZE>,
24009}
24010
24011impl Default for PipelinePropertiesIdentifierEXT {
24012    #[inline]
24013    fn default() -> Self {
24014        Self {
24015            s_type: StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT,
24016            next: ptr::null_mut(),
24017            pipeline_identifier: ByteArray::default(),
24018        }
24019    }
24020}
24021
24022unsafe impl Send for PipelinePropertiesIdentifierEXT {}
24023unsafe impl Sync for PipelinePropertiesIdentifierEXT {}
24024
24025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>
24026#[repr(C)]
24027#[derive(Copy, Clone, Debug, PartialEq)]
24028pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
24029    pub s_type: StructureType,
24030    pub next: *const c_void,
24031    pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
24032    pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
24033    pub extra_primitive_overestimation_size: f32,
24034}
24035
24036impl Default for PipelineRasterizationConservativeStateCreateInfoEXT {
24037    #[inline]
24038    fn default() -> Self {
24039        Self {
24040            s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
24041            next: ptr::null(),
24042            flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
24043            conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
24044            extra_primitive_overestimation_size: f32::default(),
24045        }
24046    }
24047}
24048
24049unsafe impl Send for PipelineRasterizationConservativeStateCreateInfoEXT {}
24050unsafe impl Sync for PipelineRasterizationConservativeStateCreateInfoEXT {}
24051
24052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>
24053#[repr(C)]
24054#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24055pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
24056    pub s_type: StructureType,
24057    pub next: *const c_void,
24058    pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
24059    pub depth_clip_enable: Bool32,
24060}
24061
24062impl Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
24063    #[inline]
24064    fn default() -> Self {
24065        Self {
24066            s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
24067            next: ptr::null(),
24068            flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
24069            depth_clip_enable: Bool32::default(),
24070        }
24071    }
24072}
24073
24074unsafe impl Send for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24075unsafe impl Sync for PipelineRasterizationDepthClipStateCreateInfoEXT {}
24076
24077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html>
24078#[repr(C)]
24079#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24080pub struct PipelineRasterizationLineStateCreateInfo {
24081    pub s_type: StructureType,
24082    pub next: *const c_void,
24083    pub line_rasterization_mode: LineRasterizationMode,
24084    pub stippled_line_enable: Bool32,
24085    pub line_stipple_factor: u32,
24086    pub line_stipple_pattern: u16,
24087}
24088
24089impl Default for PipelineRasterizationLineStateCreateInfo {
24090    #[inline]
24091    fn default() -> Self {
24092        Self {
24093            s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,
24094            next: ptr::null(),
24095            line_rasterization_mode: LineRasterizationMode::default(),
24096            stippled_line_enable: Bool32::default(),
24097            line_stipple_factor: u32::default(),
24098            line_stipple_pattern: u16::default(),
24099        }
24100    }
24101}
24102
24103unsafe impl Send for PipelineRasterizationLineStateCreateInfo {}
24104unsafe impl Sync for PipelineRasterizationLineStateCreateInfo {}
24105
24106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>
24107#[repr(C)]
24108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24109pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24110    pub s_type: StructureType,
24111    pub next: *const c_void,
24112    pub provoking_vertex_mode: ProvokingVertexModeEXT,
24113}
24114
24115impl Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
24116    #[inline]
24117    fn default() -> Self {
24118        Self {
24119            s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
24120            next: ptr::null(),
24121            provoking_vertex_mode: ProvokingVertexModeEXT::default(),
24122        }
24123    }
24124}
24125
24126unsafe impl Send for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24127unsafe impl Sync for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
24128
24129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html>
24130#[repr(C)]
24131#[derive(Copy, Clone, Debug, PartialEq)]
24132pub struct PipelineRasterizationStateCreateInfo {
24133    pub s_type: StructureType,
24134    pub next: *const c_void,
24135    pub flags: PipelineRasterizationStateCreateFlags,
24136    pub depth_clamp_enable: Bool32,
24137    pub rasterizer_discard_enable: Bool32,
24138    pub polygon_mode: PolygonMode,
24139    pub cull_mode: CullModeFlags,
24140    pub front_face: FrontFace,
24141    pub depth_bias_enable: Bool32,
24142    pub depth_bias_constant_factor: f32,
24143    pub depth_bias_clamp: f32,
24144    pub depth_bias_slope_factor: f32,
24145    pub line_width: f32,
24146}
24147
24148impl Default for PipelineRasterizationStateCreateInfo {
24149    #[inline]
24150    fn default() -> Self {
24151        Self {
24152            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
24153            next: ptr::null(),
24154            flags: PipelineRasterizationStateCreateFlags::default(),
24155            depth_clamp_enable: Bool32::default(),
24156            rasterizer_discard_enable: Bool32::default(),
24157            polygon_mode: PolygonMode::default(),
24158            cull_mode: CullModeFlags::default(),
24159            front_face: FrontFace::default(),
24160            depth_bias_enable: Bool32::default(),
24161            depth_bias_constant_factor: f32::default(),
24162            depth_bias_clamp: f32::default(),
24163            depth_bias_slope_factor: f32::default(),
24164            line_width: f32::default(),
24165        }
24166    }
24167}
24168
24169unsafe impl Send for PipelineRasterizationStateCreateInfo {}
24170unsafe impl Sync for PipelineRasterizationStateCreateInfo {}
24171
24172/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>
24173#[repr(C)]
24174#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24175pub struct PipelineRasterizationStateRasterizationOrderAMD {
24176    pub s_type: StructureType,
24177    pub next: *const c_void,
24178    pub rasterization_order: RasterizationOrderAMD,
24179}
24180
24181impl Default for PipelineRasterizationStateRasterizationOrderAMD {
24182    #[inline]
24183    fn default() -> Self {
24184        Self {
24185            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
24186            next: ptr::null(),
24187            rasterization_order: RasterizationOrderAMD::default(),
24188        }
24189    }
24190}
24191
24192unsafe impl Send for PipelineRasterizationStateRasterizationOrderAMD {}
24193unsafe impl Sync for PipelineRasterizationStateRasterizationOrderAMD {}
24194
24195/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>
24196#[repr(C)]
24197#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24198pub struct PipelineRasterizationStateStreamCreateInfoEXT {
24199    pub s_type: StructureType,
24200    pub next: *const c_void,
24201    pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
24202    pub rasterization_stream: u32,
24203}
24204
24205impl Default for PipelineRasterizationStateStreamCreateInfoEXT {
24206    #[inline]
24207    fn default() -> Self {
24208        Self {
24209            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
24210            next: ptr::null(),
24211            flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
24212            rasterization_stream: u32::default(),
24213        }
24214    }
24215}
24216
24217unsafe impl Send for PipelineRasterizationStateStreamCreateInfoEXT {}
24218unsafe impl Sync for PipelineRasterizationStateStreamCreateInfoEXT {}
24219
24220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html>
24221#[repr(C)]
24222#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24223pub struct PipelineRenderingCreateInfo {
24224    pub s_type: StructureType,
24225    pub next: *const c_void,
24226    pub view_mask: u32,
24227    pub color_attachment_count: u32,
24228    pub color_attachment_formats: *const Format,
24229    pub depth_attachment_format: Format,
24230    pub stencil_attachment_format: Format,
24231}
24232
24233impl Default for PipelineRenderingCreateInfo {
24234    #[inline]
24235    fn default() -> Self {
24236        Self {
24237            s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO,
24238            next: ptr::null(),
24239            view_mask: u32::default(),
24240            color_attachment_count: u32::default(),
24241            color_attachment_formats: ptr::null(),
24242            depth_attachment_format: Format::default(),
24243            stencil_attachment_format: Format::default(),
24244        }
24245    }
24246}
24247
24248unsafe impl Send for PipelineRenderingCreateInfo {}
24249unsafe impl Sync for PipelineRenderingCreateInfo {}
24250
24251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>
24252#[repr(C)]
24253#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24254pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
24255    pub s_type: StructureType,
24256    pub next: *const c_void,
24257    pub representative_fragment_test_enable: Bool32,
24258}
24259
24260impl Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
24261    #[inline]
24262    fn default() -> Self {
24263        Self {
24264            s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
24265            next: ptr::null(),
24266            representative_fragment_test_enable: Bool32::default(),
24267        }
24268    }
24269}
24270
24271unsafe impl Send for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
24272unsafe impl Sync for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
24273
24274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html>
24275#[repr(C)]
24276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24277pub struct PipelineRobustnessCreateInfo {
24278    pub s_type: StructureType,
24279    pub next: *const c_void,
24280    pub storage_buffers: PipelineRobustnessBufferBehavior,
24281    pub uniform_buffers: PipelineRobustnessBufferBehavior,
24282    pub vertex_inputs: PipelineRobustnessBufferBehavior,
24283    pub images: PipelineRobustnessImageBehavior,
24284}
24285
24286impl Default for PipelineRobustnessCreateInfo {
24287    #[inline]
24288    fn default() -> Self {
24289        Self {
24290            s_type: StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO,
24291            next: ptr::null(),
24292            storage_buffers: PipelineRobustnessBufferBehavior::default(),
24293            uniform_buffers: PipelineRobustnessBufferBehavior::default(),
24294            vertex_inputs: PipelineRobustnessBufferBehavior::default(),
24295            images: PipelineRobustnessImageBehavior::default(),
24296        }
24297    }
24298}
24299
24300unsafe impl Send for PipelineRobustnessCreateInfo {}
24301unsafe impl Sync for PipelineRobustnessCreateInfo {}
24302
24303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>
24304#[repr(C)]
24305#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24306pub struct PipelineSampleLocationsStateCreateInfoEXT {
24307    pub s_type: StructureType,
24308    pub next: *const c_void,
24309    pub sample_locations_enable: Bool32,
24310    pub sample_locations_info: SampleLocationsInfoEXT,
24311}
24312
24313impl Default for PipelineSampleLocationsStateCreateInfoEXT {
24314    #[inline]
24315    fn default() -> Self {
24316        Self {
24317            s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
24318            next: ptr::null(),
24319            sample_locations_enable: Bool32::default(),
24320            sample_locations_info: SampleLocationsInfoEXT::default(),
24321        }
24322    }
24323}
24324
24325unsafe impl Send for PipelineSampleLocationsStateCreateInfoEXT {}
24326unsafe impl Sync for PipelineSampleLocationsStateCreateInfoEXT {}
24327
24328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html>
24329#[repr(C)]
24330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24331pub struct PipelineShaderStageCreateInfo {
24332    pub s_type: StructureType,
24333    pub next: *const c_void,
24334    pub flags: PipelineShaderStageCreateFlags,
24335    pub stage: ShaderStageFlags,
24336    pub module: ShaderModule,
24337    pub name: *const c_char,
24338    pub specialization_info: *const SpecializationInfo,
24339}
24340
24341impl Default for PipelineShaderStageCreateInfo {
24342    #[inline]
24343    fn default() -> Self {
24344        Self {
24345            s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
24346            next: ptr::null(),
24347            flags: PipelineShaderStageCreateFlags::default(),
24348            stage: ShaderStageFlags::default(),
24349            module: ShaderModule::default(),
24350            name: ptr::null(),
24351            specialization_info: ptr::null(),
24352        }
24353    }
24354}
24355
24356unsafe impl Send for PipelineShaderStageCreateInfo {}
24357unsafe impl Sync for PipelineShaderStageCreateInfo {}
24358
24359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html>
24360#[repr(C)]
24361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24362pub struct PipelineShaderStageModuleIdentifierCreateInfoEXT {
24363    pub s_type: StructureType,
24364    pub next: *const c_void,
24365    pub identifier_size: u32,
24366    pub identifier: *const u8,
24367}
24368
24369impl Default for PipelineShaderStageModuleIdentifierCreateInfoEXT {
24370    #[inline]
24371    fn default() -> Self {
24372        Self {
24373            s_type: StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT,
24374            next: ptr::null(),
24375            identifier_size: u32::default(),
24376            identifier: ptr::null(),
24377        }
24378    }
24379}
24380
24381unsafe impl Send for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
24382unsafe impl Sync for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
24383
24384/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html>
24385#[repr(C)]
24386#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24387pub struct PipelineShaderStageNodeCreateInfoAMDX {
24388    pub s_type: StructureType,
24389    pub next: *const c_void,
24390    pub name: *const c_char,
24391    pub index: u32,
24392}
24393
24394impl Default for PipelineShaderStageNodeCreateInfoAMDX {
24395    #[inline]
24396    fn default() -> Self {
24397        Self {
24398            s_type: StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX,
24399            next: ptr::null(),
24400            name: ptr::null(),
24401            index: u32::default(),
24402        }
24403    }
24404}
24405
24406unsafe impl Send for PipelineShaderStageNodeCreateInfoAMDX {}
24407unsafe impl Sync for PipelineShaderStageNodeCreateInfoAMDX {}
24408
24409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html>
24410#[repr(C)]
24411#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24412pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfo {
24413    pub s_type: StructureType,
24414    pub next: *const c_void,
24415    pub required_subgroup_size: u32,
24416}
24417
24418impl Default for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
24419    #[inline]
24420    fn default() -> Self {
24421        Self {
24422            s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
24423            next: ptr::null(),
24424            required_subgroup_size: u32::default(),
24425        }
24426    }
24427}
24428
24429unsafe impl Send for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
24430unsafe impl Sync for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
24431
24432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>
24433#[repr(C)]
24434#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24435pub struct PipelineTessellationDomainOriginStateCreateInfo {
24436    pub s_type: StructureType,
24437    pub next: *const c_void,
24438    pub domain_origin: TessellationDomainOrigin,
24439}
24440
24441impl Default for PipelineTessellationDomainOriginStateCreateInfo {
24442    #[inline]
24443    fn default() -> Self {
24444        Self {
24445            s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
24446            next: ptr::null(),
24447            domain_origin: TessellationDomainOrigin::default(),
24448        }
24449    }
24450}
24451
24452unsafe impl Send for PipelineTessellationDomainOriginStateCreateInfo {}
24453unsafe impl Sync for PipelineTessellationDomainOriginStateCreateInfo {}
24454
24455/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html>
24456#[repr(C)]
24457#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24458pub struct PipelineTessellationStateCreateInfo {
24459    pub s_type: StructureType,
24460    pub next: *const c_void,
24461    pub flags: PipelineTessellationStateCreateFlags,
24462    pub patch_control_points: u32,
24463}
24464
24465impl Default for PipelineTessellationStateCreateInfo {
24466    #[inline]
24467    fn default() -> Self {
24468        Self {
24469            s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
24470            next: ptr::null(),
24471            flags: PipelineTessellationStateCreateFlags::default(),
24472            patch_control_points: u32::default(),
24473        }
24474    }
24475}
24476
24477unsafe impl Send for PipelineTessellationStateCreateInfo {}
24478unsafe impl Sync for PipelineTessellationStateCreateInfo {}
24479
24480/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html>
24481#[repr(C)]
24482#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24483pub struct PipelineVertexInputDivisorStateCreateInfo {
24484    pub s_type: StructureType,
24485    pub next: *const c_void,
24486    pub vertex_binding_divisor_count: u32,
24487    pub vertex_binding_divisors: *const VertexInputBindingDivisorDescription,
24488}
24489
24490impl Default for PipelineVertexInputDivisorStateCreateInfo {
24491    #[inline]
24492    fn default() -> Self {
24493        Self {
24494            s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,
24495            next: ptr::null(),
24496            vertex_binding_divisor_count: u32::default(),
24497            vertex_binding_divisors: ptr::null(),
24498        }
24499    }
24500}
24501
24502unsafe impl Send for PipelineVertexInputDivisorStateCreateInfo {}
24503unsafe impl Sync for PipelineVertexInputDivisorStateCreateInfo {}
24504
24505/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html>
24506#[repr(C)]
24507#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24508pub struct PipelineVertexInputStateCreateInfo {
24509    pub s_type: StructureType,
24510    pub next: *const c_void,
24511    pub flags: PipelineVertexInputStateCreateFlags,
24512    pub vertex_binding_description_count: u32,
24513    pub vertex_binding_descriptions: *const VertexInputBindingDescription,
24514    pub vertex_attribute_description_count: u32,
24515    pub vertex_attribute_descriptions: *const VertexInputAttributeDescription,
24516}
24517
24518impl Default for PipelineVertexInputStateCreateInfo {
24519    #[inline]
24520    fn default() -> Self {
24521        Self {
24522            s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
24523            next: ptr::null(),
24524            flags: PipelineVertexInputStateCreateFlags::default(),
24525            vertex_binding_description_count: u32::default(),
24526            vertex_binding_descriptions: ptr::null(),
24527            vertex_attribute_description_count: u32::default(),
24528            vertex_attribute_descriptions: ptr::null(),
24529        }
24530    }
24531}
24532
24533unsafe impl Send for PipelineVertexInputStateCreateInfo {}
24534unsafe impl Sync for PipelineVertexInputStateCreateInfo {}
24535
24536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>
24537#[repr(C)]
24538#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24539pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
24540    pub s_type: StructureType,
24541    pub next: *const c_void,
24542    pub sample_order_type: CoarseSampleOrderTypeNV,
24543    pub custom_sample_order_count: u32,
24544    pub custom_sample_orders: *const CoarseSampleOrderCustomNV,
24545}
24546
24547impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
24548    #[inline]
24549    fn default() -> Self {
24550        Self {
24551            s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
24552            next: ptr::null(),
24553            sample_order_type: CoarseSampleOrderTypeNV::default(),
24554            custom_sample_order_count: u32::default(),
24555            custom_sample_orders: ptr::null(),
24556        }
24557    }
24558}
24559
24560unsafe impl Send for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
24561unsafe impl Sync for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
24562
24563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html>
24564#[repr(C)]
24565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24566pub struct PipelineViewportDepthClampControlCreateInfoEXT {
24567    pub s_type: StructureType,
24568    pub next: *const c_void,
24569    pub depth_clamp_mode: DepthClampModeEXT,
24570    pub depth_clamp_range: *const DepthClampRangeEXT,
24571}
24572
24573impl Default for PipelineViewportDepthClampControlCreateInfoEXT {
24574    #[inline]
24575    fn default() -> Self {
24576        Self {
24577            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT,
24578            next: ptr::null(),
24579            depth_clamp_mode: DepthClampModeEXT::default(),
24580            depth_clamp_range: ptr::null(),
24581        }
24582    }
24583}
24584
24585unsafe impl Send for PipelineViewportDepthClampControlCreateInfoEXT {}
24586unsafe impl Sync for PipelineViewportDepthClampControlCreateInfoEXT {}
24587
24588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>
24589#[repr(C)]
24590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24591pub struct PipelineViewportDepthClipControlCreateInfoEXT {
24592    pub s_type: StructureType,
24593    pub next: *const c_void,
24594    pub negative_one_to_one: Bool32,
24595}
24596
24597impl Default for PipelineViewportDepthClipControlCreateInfoEXT {
24598    #[inline]
24599    fn default() -> Self {
24600        Self {
24601            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
24602            next: ptr::null(),
24603            negative_one_to_one: Bool32::default(),
24604        }
24605    }
24606}
24607
24608unsafe impl Send for PipelineViewportDepthClipControlCreateInfoEXT {}
24609unsafe impl Sync for PipelineViewportDepthClipControlCreateInfoEXT {}
24610
24611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>
24612#[repr(C)]
24613#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24614pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
24615    pub s_type: StructureType,
24616    pub next: *const c_void,
24617    pub exclusive_scissor_count: u32,
24618    pub exclusive_scissors: *const Rect2D,
24619}
24620
24621impl Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
24622    #[inline]
24623    fn default() -> Self {
24624        Self {
24625            s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
24626            next: ptr::null(),
24627            exclusive_scissor_count: u32::default(),
24628            exclusive_scissors: ptr::null(),
24629        }
24630    }
24631}
24632
24633unsafe impl Send for PipelineViewportExclusiveScissorStateCreateInfoNV {}
24634unsafe impl Sync for PipelineViewportExclusiveScissorStateCreateInfoNV {}
24635
24636/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>
24637#[repr(C)]
24638#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24639pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
24640    pub s_type: StructureType,
24641    pub next: *const c_void,
24642    pub shading_rate_image_enable: Bool32,
24643    pub viewport_count: u32,
24644    pub shading_rate_palettes: *const ShadingRatePaletteNV,
24645}
24646
24647impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
24648    #[inline]
24649    fn default() -> Self {
24650        Self {
24651            s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
24652            next: ptr::null(),
24653            shading_rate_image_enable: Bool32::default(),
24654            viewport_count: u32::default(),
24655            shading_rate_palettes: ptr::null(),
24656        }
24657    }
24658}
24659
24660unsafe impl Send for PipelineViewportShadingRateImageStateCreateInfoNV {}
24661unsafe impl Sync for PipelineViewportShadingRateImageStateCreateInfoNV {}
24662
24663/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html>
24664#[repr(C)]
24665#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24666pub struct PipelineViewportStateCreateInfo {
24667    pub s_type: StructureType,
24668    pub next: *const c_void,
24669    pub flags: PipelineViewportStateCreateFlags,
24670    pub viewport_count: u32,
24671    pub viewports: *const Viewport,
24672    pub scissor_count: u32,
24673    pub scissors: *const Rect2D,
24674}
24675
24676impl Default for PipelineViewportStateCreateInfo {
24677    #[inline]
24678    fn default() -> Self {
24679        Self {
24680            s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
24681            next: ptr::null(),
24682            flags: PipelineViewportStateCreateFlags::default(),
24683            viewport_count: u32::default(),
24684            viewports: ptr::null(),
24685            scissor_count: u32::default(),
24686            scissors: ptr::null(),
24687        }
24688    }
24689}
24690
24691unsafe impl Send for PipelineViewportStateCreateInfo {}
24692unsafe impl Sync for PipelineViewportStateCreateInfo {}
24693
24694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>
24695#[repr(C)]
24696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24697pub struct PipelineViewportSwizzleStateCreateInfoNV {
24698    pub s_type: StructureType,
24699    pub next: *const c_void,
24700    pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
24701    pub viewport_count: u32,
24702    pub viewport_swizzles: *const ViewportSwizzleNV,
24703}
24704
24705impl Default for PipelineViewportSwizzleStateCreateInfoNV {
24706    #[inline]
24707    fn default() -> Self {
24708        Self {
24709            s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
24710            next: ptr::null(),
24711            flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
24712            viewport_count: u32::default(),
24713            viewport_swizzles: ptr::null(),
24714        }
24715    }
24716}
24717
24718unsafe impl Send for PipelineViewportSwizzleStateCreateInfoNV {}
24719unsafe impl Sync for PipelineViewportSwizzleStateCreateInfoNV {}
24720
24721/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>
24722#[repr(C)]
24723#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24724pub struct PipelineViewportWScalingStateCreateInfoNV {
24725    pub s_type: StructureType,
24726    pub next: *const c_void,
24727    pub viewport_w_scaling_enable: Bool32,
24728    pub viewport_count: u32,
24729    pub viewport_w_scalings: *const ViewportWScalingNV,
24730}
24731
24732impl Default for PipelineViewportWScalingStateCreateInfoNV {
24733    #[inline]
24734    fn default() -> Self {
24735        Self {
24736            s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
24737            next: ptr::null(),
24738            viewport_w_scaling_enable: Bool32::default(),
24739            viewport_count: u32::default(),
24740            viewport_w_scalings: ptr::null(),
24741        }
24742    }
24743}
24744
24745unsafe impl Send for PipelineViewportWScalingStateCreateInfoNV {}
24746unsafe impl Sync for PipelineViewportWScalingStateCreateInfoNV {}
24747
24748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html>
24749#[repr(C)]
24750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24751pub struct PresentFrameTokenGGP {
24752    pub s_type: StructureType,
24753    pub next: *const c_void,
24754    pub frame_token: GgpFrameToken,
24755}
24756
24757impl Default for PresentFrameTokenGGP {
24758    #[inline]
24759    fn default() -> Self {
24760        Self {
24761            s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
24762            next: ptr::null(),
24763            frame_token: GgpFrameToken::default(),
24764        }
24765    }
24766}
24767
24768unsafe impl Send for PresentFrameTokenGGP {}
24769unsafe impl Sync for PresentFrameTokenGGP {}
24770
24771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentId2KHR.html>
24772#[repr(C)]
24773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24774pub struct PresentId2KHR {
24775    pub s_type: StructureType,
24776    pub next: *const c_void,
24777    pub swapchain_count: u32,
24778    pub present_ids: *const u64,
24779}
24780
24781impl Default for PresentId2KHR {
24782    #[inline]
24783    fn default() -> Self {
24784        Self {
24785            s_type: StructureType::PRESENT_ID_2_KHR,
24786            next: ptr::null(),
24787            swapchain_count: u32::default(),
24788            present_ids: ptr::null(),
24789        }
24790    }
24791}
24792
24793unsafe impl Send for PresentId2KHR {}
24794unsafe impl Sync for PresentId2KHR {}
24795
24796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentIdKHR.html>
24797#[repr(C)]
24798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24799pub struct PresentIdKHR {
24800    pub s_type: StructureType,
24801    pub next: *const c_void,
24802    pub swapchain_count: u32,
24803    pub present_ids: *const u64,
24804}
24805
24806impl Default for PresentIdKHR {
24807    #[inline]
24808    fn default() -> Self {
24809        Self {
24810            s_type: StructureType::PRESENT_ID_KHR,
24811            next: ptr::null(),
24812            swapchain_count: u32::default(),
24813            present_ids: ptr::null(),
24814        }
24815    }
24816}
24817
24818unsafe impl Send for PresentIdKHR {}
24819unsafe impl Sync for PresentIdKHR {}
24820
24821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentInfoKHR.html>
24822#[repr(C)]
24823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24824pub struct PresentInfoKHR {
24825    pub s_type: StructureType,
24826    pub next: *const c_void,
24827    pub wait_semaphore_count: u32,
24828    pub wait_semaphores: *const Semaphore,
24829    pub swapchain_count: u32,
24830    pub swapchains: *const SwapchainKHR,
24831    pub image_indices: *const u32,
24832    pub results: *mut Result,
24833}
24834
24835impl Default for PresentInfoKHR {
24836    #[inline]
24837    fn default() -> Self {
24838        Self {
24839            s_type: StructureType::PRESENT_INFO_KHR,
24840            next: ptr::null(),
24841            wait_semaphore_count: u32::default(),
24842            wait_semaphores: ptr::null(),
24843            swapchain_count: u32::default(),
24844            swapchains: ptr::null(),
24845            image_indices: ptr::null(),
24846            results: ptr::null_mut(),
24847        }
24848    }
24849}
24850
24851unsafe impl Send for PresentInfoKHR {}
24852unsafe impl Sync for PresentInfoKHR {}
24853
24854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionKHR.html>
24855#[repr(C)]
24856#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24857pub struct PresentRegionKHR {
24858    pub rectangle_count: u32,
24859    pub rectangles: *const RectLayerKHR,
24860}
24861
24862impl Default for PresentRegionKHR {
24863    #[inline]
24864    fn default() -> Self {
24865        Self {
24866            rectangle_count: u32::default(),
24867            rectangles: ptr::null(),
24868        }
24869    }
24870}
24871
24872unsafe impl Send for PresentRegionKHR {}
24873unsafe impl Sync for PresentRegionKHR {}
24874
24875/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html>
24876#[repr(C)]
24877#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24878pub struct PresentRegionsKHR {
24879    pub s_type: StructureType,
24880    pub next: *const c_void,
24881    pub swapchain_count: u32,
24882    pub regions: *const PresentRegionKHR,
24883}
24884
24885impl Default for PresentRegionsKHR {
24886    #[inline]
24887    fn default() -> Self {
24888        Self {
24889            s_type: StructureType::PRESENT_REGIONS_KHR,
24890            next: ptr::null(),
24891            swapchain_count: u32::default(),
24892            regions: ptr::null(),
24893        }
24894    }
24895}
24896
24897unsafe impl Send for PresentRegionsKHR {}
24898unsafe impl Sync for PresentRegionsKHR {}
24899
24900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html>
24901#[repr(C)]
24902#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24903pub struct PresentTimeGOOGLE {
24904    pub present_id: u32,
24905    pub desired_present_time: u64,
24906}
24907
24908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html>
24909#[repr(C)]
24910#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24911pub struct PresentTimesInfoGOOGLE {
24912    pub s_type: StructureType,
24913    pub next: *const c_void,
24914    pub swapchain_count: u32,
24915    pub times: *const PresentTimeGOOGLE,
24916}
24917
24918impl Default for PresentTimesInfoGOOGLE {
24919    #[inline]
24920    fn default() -> Self {
24921        Self {
24922            s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
24923            next: ptr::null(),
24924            swapchain_count: u32::default(),
24925            times: ptr::null(),
24926        }
24927    }
24928}
24929
24930unsafe impl Send for PresentTimesInfoGOOGLE {}
24931unsafe impl Sync for PresentTimesInfoGOOGLE {}
24932
24933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentWait2InfoKHR.html>
24934#[repr(C)]
24935#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24936pub struct PresentWait2InfoKHR {
24937    pub s_type: StructureType,
24938    pub next: *const c_void,
24939    pub present_id: u64,
24940    pub timeout: u64,
24941}
24942
24943impl Default for PresentWait2InfoKHR {
24944    #[inline]
24945    fn default() -> Self {
24946        Self {
24947            s_type: StructureType::PRESENT_WAIT_2_INFO_KHR,
24948            next: ptr::null(),
24949            present_id: u64::default(),
24950            timeout: u64::default(),
24951        }
24952    }
24953}
24954
24955unsafe impl Send for PresentWait2InfoKHR {}
24956unsafe impl Sync for PresentWait2InfoKHR {}
24957
24958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html>
24959#[repr(C)]
24960#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24961pub struct PrivateDataSlotCreateInfo {
24962    pub s_type: StructureType,
24963    pub next: *const c_void,
24964    pub flags: PrivateDataSlotCreateFlags,
24965}
24966
24967impl Default for PrivateDataSlotCreateInfo {
24968    #[inline]
24969    fn default() -> Self {
24970        Self {
24971            s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO,
24972            next: ptr::null(),
24973            flags: PrivateDataSlotCreateFlags::default(),
24974        }
24975    }
24976}
24977
24978unsafe impl Send for PrivateDataSlotCreateInfo {}
24979unsafe impl Sync for PrivateDataSlotCreateInfo {}
24980
24981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html>
24982#[repr(C)]
24983#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24984pub struct ProtectedSubmitInfo {
24985    pub s_type: StructureType,
24986    pub next: *const c_void,
24987    pub protected_submit: Bool32,
24988}
24989
24990impl Default for ProtectedSubmitInfo {
24991    #[inline]
24992    fn default() -> Self {
24993        Self {
24994            s_type: StructureType::PROTECTED_SUBMIT_INFO,
24995            next: ptr::null(),
24996            protected_submit: Bool32::default(),
24997        }
24998    }
24999}
25000
25001unsafe impl Send for ProtectedSubmitInfo {}
25002unsafe impl Sync for ProtectedSubmitInfo {}
25003
25004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantRange.html>
25005#[repr(C)]
25006#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25007pub struct PushConstantRange {
25008    pub stage_flags: ShaderStageFlags,
25009    pub offset: u32,
25010    pub size: u32,
25011}
25012
25013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfo.html>
25014#[repr(C)]
25015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25016pub struct PushConstantsInfo {
25017    pub s_type: StructureType,
25018    pub next: *const c_void,
25019    pub layout: PipelineLayout,
25020    pub stage_flags: ShaderStageFlags,
25021    pub offset: u32,
25022    pub size: u32,
25023    pub values: *const c_void,
25024}
25025
25026impl Default for PushConstantsInfo {
25027    #[inline]
25028    fn default() -> Self {
25029        Self {
25030            s_type: StructureType::PUSH_CONSTANTS_INFO,
25031            next: ptr::null(),
25032            layout: PipelineLayout::default(),
25033            stage_flags: ShaderStageFlags::default(),
25034            offset: u32::default(),
25035            size: u32::default(),
25036            values: ptr::null(),
25037        }
25038    }
25039}
25040
25041unsafe impl Send for PushConstantsInfo {}
25042unsafe impl Sync for PushConstantsInfo {}
25043
25044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html>
25045#[repr(C)]
25046#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25047pub struct PushDescriptorSetInfo {
25048    pub s_type: StructureType,
25049    pub next: *const c_void,
25050    pub stage_flags: ShaderStageFlags,
25051    pub layout: PipelineLayout,
25052    pub set: u32,
25053    pub descriptor_write_count: u32,
25054    pub descriptor_writes: *const WriteDescriptorSet,
25055}
25056
25057impl Default for PushDescriptorSetInfo {
25058    #[inline]
25059    fn default() -> Self {
25060        Self {
25061            s_type: StructureType::PUSH_DESCRIPTOR_SET_INFO,
25062            next: ptr::null(),
25063            stage_flags: ShaderStageFlags::default(),
25064            layout: PipelineLayout::default(),
25065            set: u32::default(),
25066            descriptor_write_count: u32::default(),
25067            descriptor_writes: ptr::null(),
25068        }
25069    }
25070}
25071
25072unsafe impl Send for PushDescriptorSetInfo {}
25073unsafe impl Sync for PushDescriptorSetInfo {}
25074
25075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html>
25076#[repr(C)]
25077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25078pub struct PushDescriptorSetWithTemplateInfo {
25079    pub s_type: StructureType,
25080    pub next: *const c_void,
25081    pub descriptor_update_template: DescriptorUpdateTemplate,
25082    pub layout: PipelineLayout,
25083    pub set: u32,
25084    pub data: *const c_void,
25085}
25086
25087impl Default for PushDescriptorSetWithTemplateInfo {
25088    #[inline]
25089    fn default() -> Self {
25090        Self {
25091            s_type: StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,
25092            next: ptr::null(),
25093            descriptor_update_template: DescriptorUpdateTemplate::default(),
25094            layout: PipelineLayout::default(),
25095            set: u32::default(),
25096            data: ptr::null(),
25097        }
25098    }
25099}
25100
25101unsafe impl Send for PushDescriptorSetWithTemplateInfo {}
25102unsafe impl Sync for PushDescriptorSetWithTemplateInfo {}
25103
25104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html>
25105#[repr(C)]
25106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25107pub struct QueryLowLatencySupportNV {
25108    pub s_type: StructureType,
25109    pub next: *const c_void,
25110    pub queried_low_latency_data: *mut c_void,
25111}
25112
25113impl Default for QueryLowLatencySupportNV {
25114    #[inline]
25115    fn default() -> Self {
25116        Self {
25117            s_type: StructureType::QUERY_LOW_LATENCY_SUPPORT_NV,
25118            next: ptr::null(),
25119            queried_low_latency_data: ptr::null_mut(),
25120        }
25121    }
25122}
25123
25124unsafe impl Send for QueryLowLatencySupportNV {}
25125unsafe impl Sync for QueryLowLatencySupportNV {}
25126
25127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html>
25128#[repr(C)]
25129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25130pub struct QueryPoolCreateInfo {
25131    pub s_type: StructureType,
25132    pub next: *const c_void,
25133    pub flags: QueryPoolCreateFlags,
25134    pub query_type: QueryType,
25135    pub query_count: u32,
25136    pub pipeline_statistics: QueryPipelineStatisticFlags,
25137}
25138
25139impl Default for QueryPoolCreateInfo {
25140    #[inline]
25141    fn default() -> Self {
25142        Self {
25143            s_type: StructureType::QUERY_POOL_CREATE_INFO,
25144            next: ptr::null(),
25145            flags: QueryPoolCreateFlags::default(),
25146            query_type: QueryType::default(),
25147            query_count: u32::default(),
25148            pipeline_statistics: QueryPipelineStatisticFlags::default(),
25149        }
25150    }
25151}
25152
25153unsafe impl Send for QueryPoolCreateInfo {}
25154unsafe impl Sync for QueryPoolCreateInfo {}
25155
25156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>
25157#[repr(C)]
25158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25159pub struct QueryPoolPerformanceCreateInfoKHR {
25160    pub s_type: StructureType,
25161    pub next: *const c_void,
25162    pub queue_family_index: u32,
25163    pub counter_index_count: u32,
25164    pub counter_indices: *const u32,
25165}
25166
25167impl Default for QueryPoolPerformanceCreateInfoKHR {
25168    #[inline]
25169    fn default() -> Self {
25170        Self {
25171            s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
25172            next: ptr::null(),
25173            queue_family_index: u32::default(),
25174            counter_index_count: u32::default(),
25175            counter_indices: ptr::null(),
25176        }
25177    }
25178}
25179
25180unsafe impl Send for QueryPoolPerformanceCreateInfoKHR {}
25181unsafe impl Sync for QueryPoolPerformanceCreateInfoKHR {}
25182
25183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>
25184#[repr(C)]
25185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25186pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
25187    pub s_type: StructureType,
25188    pub next: *const c_void,
25189    pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
25190}
25191
25192impl Default for QueryPoolPerformanceQueryCreateInfoINTEL {
25193    #[inline]
25194    fn default() -> Self {
25195        Self {
25196            s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
25197            next: ptr::null(),
25198            performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
25199        }
25200    }
25201}
25202
25203unsafe impl Send for QueryPoolPerformanceQueryCreateInfoINTEL {}
25204unsafe impl Sync for QueryPoolPerformanceQueryCreateInfoINTEL {}
25205
25206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html>
25207#[repr(C)]
25208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25209pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHR {
25210    pub s_type: StructureType,
25211    pub next: *const c_void,
25212    pub encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
25213}
25214
25215impl Default for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
25216    #[inline]
25217    fn default() -> Self {
25218        Self {
25219            s_type: StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR,
25220            next: ptr::null(),
25221            encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
25222        }
25223    }
25224}
25225
25226unsafe impl Send for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
25227unsafe impl Sync for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
25228
25229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html>
25230#[repr(C)]
25231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25232pub struct QueueFamilyCheckpointProperties2NV {
25233    pub s_type: StructureType,
25234    pub next: *mut c_void,
25235    pub checkpoint_execution_stage_mask: PipelineStageFlags2,
25236}
25237
25238impl Default for QueueFamilyCheckpointProperties2NV {
25239    #[inline]
25240    fn default() -> Self {
25241        Self {
25242            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
25243            next: ptr::null_mut(),
25244            checkpoint_execution_stage_mask: PipelineStageFlags2::default(),
25245        }
25246    }
25247}
25248
25249unsafe impl Send for QueueFamilyCheckpointProperties2NV {}
25250unsafe impl Sync for QueueFamilyCheckpointProperties2NV {}
25251
25252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html>
25253#[repr(C)]
25254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25255pub struct QueueFamilyCheckpointPropertiesNV {
25256    pub s_type: StructureType,
25257    pub next: *mut c_void,
25258    pub checkpoint_execution_stage_mask: PipelineStageFlags,
25259}
25260
25261impl Default for QueueFamilyCheckpointPropertiesNV {
25262    #[inline]
25263    fn default() -> Self {
25264        Self {
25265            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
25266            next: ptr::null_mut(),
25267            checkpoint_execution_stage_mask: PipelineStageFlags::default(),
25268        }
25269    }
25270}
25271
25272unsafe impl Send for QueueFamilyCheckpointPropertiesNV {}
25273unsafe impl Sync for QueueFamilyCheckpointPropertiesNV {}
25274
25275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphProcessingEnginePropertiesARM.html>
25276#[repr(C)]
25277#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25278pub struct QueueFamilyDataGraphProcessingEnginePropertiesARM {
25279    pub s_type: StructureType,
25280    pub next: *const c_void,
25281    pub foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags,
25282    pub foreign_memory_handle_types: ExternalMemoryHandleTypeFlags,
25283}
25284
25285impl Default for QueueFamilyDataGraphProcessingEnginePropertiesARM {
25286    #[inline]
25287    fn default() -> Self {
25288        Self {
25289            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM,
25290            next: ptr::null(),
25291            foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
25292            foreign_memory_handle_types: ExternalMemoryHandleTypeFlags::default(),
25293        }
25294    }
25295}
25296
25297unsafe impl Send for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
25298unsafe impl Sync for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
25299
25300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphPropertiesARM.html>
25301#[repr(C)]
25302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25303pub struct QueueFamilyDataGraphPropertiesARM {
25304    pub s_type: StructureType,
25305    pub next: *const c_void,
25306    pub engine: PhysicalDeviceDataGraphProcessingEngineARM,
25307    pub operation: PhysicalDeviceDataGraphOperationSupportARM,
25308}
25309
25310impl Default for QueueFamilyDataGraphPropertiesARM {
25311    #[inline]
25312    fn default() -> Self {
25313        Self {
25314            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM,
25315            next: ptr::null(),
25316            engine: PhysicalDeviceDataGraphProcessingEngineARM::default(),
25317            operation: PhysicalDeviceDataGraphOperationSupportARM::default(),
25318        }
25319    }
25320}
25321
25322unsafe impl Send for QueueFamilyDataGraphPropertiesARM {}
25323unsafe impl Sync for QueueFamilyDataGraphPropertiesARM {}
25324
25325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html>
25326#[repr(C)]
25327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25328pub struct QueueFamilyGlobalPriorityProperties {
25329    pub s_type: StructureType,
25330    pub next: *mut c_void,
25331    pub priority_count: u32,
25332    pub priorities: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE],
25333}
25334
25335impl Default for QueueFamilyGlobalPriorityProperties {
25336    #[inline]
25337    fn default() -> Self {
25338        Self {
25339            s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,
25340            next: ptr::null_mut(),
25341            priority_count: u32::default(),
25342            priorities: [QueueGlobalPriority::default(); MAX_GLOBAL_PRIORITY_SIZE],
25343        }
25344    }
25345}
25346
25347unsafe impl Send for QueueFamilyGlobalPriorityProperties {}
25348unsafe impl Sync for QueueFamilyGlobalPriorityProperties {}
25349
25350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyOwnershipTransferPropertiesKHR.html>
25351#[repr(C)]
25352#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25353pub struct QueueFamilyOwnershipTransferPropertiesKHR {
25354    pub s_type: StructureType,
25355    pub next: *mut c_void,
25356    pub optimal_image_transfer_to_queue_families: u32,
25357}
25358
25359impl Default for QueueFamilyOwnershipTransferPropertiesKHR {
25360    #[inline]
25361    fn default() -> Self {
25362        Self {
25363            s_type: StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR,
25364            next: ptr::null_mut(),
25365            optimal_image_transfer_to_queue_families: u32::default(),
25366        }
25367    }
25368}
25369
25370unsafe impl Send for QueueFamilyOwnershipTransferPropertiesKHR {}
25371unsafe impl Sync for QueueFamilyOwnershipTransferPropertiesKHR {}
25372
25373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html>
25374#[repr(C)]
25375#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25376pub struct QueueFamilyProperties {
25377    pub queue_flags: QueueFlags,
25378    pub queue_count: u32,
25379    pub timestamp_valid_bits: u32,
25380    pub min_image_transfer_granularity: Extent3D,
25381}
25382
25383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html>
25384#[repr(C)]
25385#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25386pub struct QueueFamilyProperties2 {
25387    pub s_type: StructureType,
25388    pub next: *mut c_void,
25389    pub queue_family_properties: QueueFamilyProperties,
25390}
25391
25392impl Default for QueueFamilyProperties2 {
25393    #[inline]
25394    fn default() -> Self {
25395        Self {
25396            s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
25397            next: ptr::null_mut(),
25398            queue_family_properties: QueueFamilyProperties::default(),
25399        }
25400    }
25401}
25402
25403unsafe impl Send for QueueFamilyProperties2 {}
25404unsafe impl Sync for QueueFamilyProperties2 {}
25405
25406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html>
25407#[repr(C)]
25408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25409pub struct QueueFamilyQueryResultStatusPropertiesKHR {
25410    pub s_type: StructureType,
25411    pub next: *mut c_void,
25412    pub query_result_status_support: Bool32,
25413}
25414
25415impl Default for QueueFamilyQueryResultStatusPropertiesKHR {
25416    #[inline]
25417    fn default() -> Self {
25418        Self {
25419            s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR,
25420            next: ptr::null_mut(),
25421            query_result_status_support: Bool32::default(),
25422        }
25423    }
25424}
25425
25426unsafe impl Send for QueueFamilyQueryResultStatusPropertiesKHR {}
25427unsafe impl Sync for QueueFamilyQueryResultStatusPropertiesKHR {}
25428
25429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html>
25430#[repr(C)]
25431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25432pub struct QueueFamilyVideoPropertiesKHR {
25433    pub s_type: StructureType,
25434    pub next: *mut c_void,
25435    pub video_codec_operations: VideoCodecOperationFlagsKHR,
25436}
25437
25438impl Default for QueueFamilyVideoPropertiesKHR {
25439    #[inline]
25440    fn default() -> Self {
25441        Self {
25442            s_type: StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR,
25443            next: ptr::null_mut(),
25444            video_codec_operations: VideoCodecOperationFlagsKHR::default(),
25445        }
25446    }
25447}
25448
25449unsafe impl Send for QueueFamilyVideoPropertiesKHR {}
25450unsafe impl Sync for QueueFamilyVideoPropertiesKHR {}
25451
25452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html>
25453#[repr(C)]
25454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25455pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
25456    pub s_type: StructureType,
25457    pub next: *mut c_void,
25458    pub allow_cluster_acceleration_structure: Bool32,
25459}
25460
25461impl Default for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
25462    #[inline]
25463    fn default() -> Self {
25464        Self {
25465            s_type:
25466                StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
25467            next: ptr::null_mut(),
25468            allow_cluster_acceleration_structure: Bool32::default(),
25469        }
25470    }
25471}
25472
25473unsafe impl Send for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
25474unsafe impl Sync for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
25475
25476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html>
25477#[repr(C)]
25478#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25479pub struct RayTracingPipelineCreateInfoKHR {
25480    pub s_type: StructureType,
25481    pub next: *const c_void,
25482    pub flags: PipelineCreateFlags,
25483    pub stage_count: u32,
25484    pub stages: *const PipelineShaderStageCreateInfo,
25485    pub group_count: u32,
25486    pub groups: *const RayTracingShaderGroupCreateInfoKHR,
25487    pub max_pipeline_ray_recursion_depth: u32,
25488    pub library_info: *const PipelineLibraryCreateInfoKHR,
25489    pub library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
25490    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
25491    pub layout: PipelineLayout,
25492    pub base_pipeline_handle: Pipeline,
25493    pub base_pipeline_index: i32,
25494}
25495
25496impl Default for RayTracingPipelineCreateInfoKHR {
25497    #[inline]
25498    fn default() -> Self {
25499        Self {
25500            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
25501            next: ptr::null(),
25502            flags: PipelineCreateFlags::default(),
25503            stage_count: u32::default(),
25504            stages: ptr::null(),
25505            group_count: u32::default(),
25506            groups: ptr::null(),
25507            max_pipeline_ray_recursion_depth: u32::default(),
25508            library_info: ptr::null(),
25509            library_interface: ptr::null(),
25510            dynamic_state: ptr::null(),
25511            layout: PipelineLayout::default(),
25512            base_pipeline_handle: Pipeline::default(),
25513            base_pipeline_index: i32::default(),
25514        }
25515    }
25516}
25517
25518unsafe impl Send for RayTracingPipelineCreateInfoKHR {}
25519unsafe impl Sync for RayTracingPipelineCreateInfoKHR {}
25520
25521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html>
25522#[repr(C)]
25523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25524pub struct RayTracingPipelineCreateInfoNV {
25525    pub s_type: StructureType,
25526    pub next: *const c_void,
25527    pub flags: PipelineCreateFlags,
25528    pub stage_count: u32,
25529    pub stages: *const PipelineShaderStageCreateInfo,
25530    pub group_count: u32,
25531    pub groups: *const RayTracingShaderGroupCreateInfoNV,
25532    pub max_recursion_depth: u32,
25533    pub layout: PipelineLayout,
25534    pub base_pipeline_handle: Pipeline,
25535    pub base_pipeline_index: i32,
25536}
25537
25538impl Default for RayTracingPipelineCreateInfoNV {
25539    #[inline]
25540    fn default() -> Self {
25541        Self {
25542            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
25543            next: ptr::null(),
25544            flags: PipelineCreateFlags::default(),
25545            stage_count: u32::default(),
25546            stages: ptr::null(),
25547            group_count: u32::default(),
25548            groups: ptr::null(),
25549            max_recursion_depth: u32::default(),
25550            layout: PipelineLayout::default(),
25551            base_pipeline_handle: Pipeline::default(),
25552            base_pipeline_index: i32::default(),
25553        }
25554    }
25555}
25556
25557unsafe impl Send for RayTracingPipelineCreateInfoNV {}
25558unsafe impl Sync for RayTracingPipelineCreateInfoNV {}
25559
25560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>
25561#[repr(C)]
25562#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25563pub struct RayTracingPipelineInterfaceCreateInfoKHR {
25564    pub s_type: StructureType,
25565    pub next: *const c_void,
25566    pub max_pipeline_ray_payload_size: u32,
25567    pub max_pipeline_ray_hit_attribute_size: u32,
25568}
25569
25570impl Default for RayTracingPipelineInterfaceCreateInfoKHR {
25571    #[inline]
25572    fn default() -> Self {
25573        Self {
25574            s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
25575            next: ptr::null(),
25576            max_pipeline_ray_payload_size: u32::default(),
25577            max_pipeline_ray_hit_attribute_size: u32::default(),
25578        }
25579    }
25580}
25581
25582unsafe impl Send for RayTracingPipelineInterfaceCreateInfoKHR {}
25583unsafe impl Sync for RayTracingPipelineInterfaceCreateInfoKHR {}
25584
25585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>
25586#[repr(C)]
25587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25588pub struct RayTracingShaderGroupCreateInfoKHR {
25589    pub s_type: StructureType,
25590    pub next: *const c_void,
25591    pub type_: RayTracingShaderGroupTypeKHR,
25592    pub general_shader: u32,
25593    pub closest_hit_shader: u32,
25594    pub any_hit_shader: u32,
25595    pub intersection_shader: u32,
25596    pub shader_group_capture_replay_handle: *const c_void,
25597}
25598
25599impl Default for RayTracingShaderGroupCreateInfoKHR {
25600    #[inline]
25601    fn default() -> Self {
25602        Self {
25603            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
25604            next: ptr::null(),
25605            type_: RayTracingShaderGroupTypeKHR::default(),
25606            general_shader: u32::default(),
25607            closest_hit_shader: u32::default(),
25608            any_hit_shader: u32::default(),
25609            intersection_shader: u32::default(),
25610            shader_group_capture_replay_handle: ptr::null(),
25611        }
25612    }
25613}
25614
25615unsafe impl Send for RayTracingShaderGroupCreateInfoKHR {}
25616unsafe impl Sync for RayTracingShaderGroupCreateInfoKHR {}
25617
25618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html>
25619#[repr(C)]
25620#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25621pub struct RayTracingShaderGroupCreateInfoNV {
25622    pub s_type: StructureType,
25623    pub next: *const c_void,
25624    pub type_: RayTracingShaderGroupTypeKHR,
25625    pub general_shader: u32,
25626    pub closest_hit_shader: u32,
25627    pub any_hit_shader: u32,
25628    pub intersection_shader: u32,
25629}
25630
25631impl Default for RayTracingShaderGroupCreateInfoNV {
25632    #[inline]
25633    fn default() -> Self {
25634        Self {
25635            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
25636            next: ptr::null(),
25637            type_: RayTracingShaderGroupTypeKHR::default(),
25638            general_shader: u32::default(),
25639            closest_hit_shader: u32::default(),
25640            any_hit_shader: u32::default(),
25641            intersection_shader: u32::default(),
25642        }
25643    }
25644}
25645
25646unsafe impl Send for RayTracingShaderGroupCreateInfoNV {}
25647unsafe impl Sync for RayTracingShaderGroupCreateInfoNV {}
25648
25649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRect2D.html>
25650#[repr(C)]
25651#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25652pub struct Rect2D {
25653    pub offset: Offset2D,
25654    pub extent: Extent2D,
25655}
25656
25657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRectLayerKHR.html>
25658#[repr(C)]
25659#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25660pub struct RectLayerKHR {
25661    pub offset: Offset2D,
25662    pub extent: Extent2D,
25663    pub layer: u32,
25664}
25665
25666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html>
25667#[repr(C)]
25668#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25669pub struct RefreshCycleDurationGOOGLE {
25670    pub refresh_duration: u64,
25671}
25672
25673/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectKHR.html>
25674#[repr(C)]
25675#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25676pub struct RefreshObjectKHR {
25677    pub object_type: ObjectType,
25678    pub object_handle: u64,
25679    pub flags: RefreshObjectFlagsKHR,
25680}
25681
25682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectListKHR.html>
25683#[repr(C)]
25684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25685pub struct RefreshObjectListKHR {
25686    pub s_type: StructureType,
25687    pub next: *const c_void,
25688    pub object_count: u32,
25689    pub objects: *const RefreshObjectKHR,
25690}
25691
25692impl Default for RefreshObjectListKHR {
25693    #[inline]
25694    fn default() -> Self {
25695        Self {
25696            s_type: StructureType::REFRESH_OBJECT_LIST_KHR,
25697            next: ptr::null(),
25698            object_count: u32::default(),
25699            objects: ptr::null(),
25700        }
25701    }
25702}
25703
25704unsafe impl Send for RefreshObjectListKHR {}
25705unsafe impl Sync for RefreshObjectListKHR {}
25706
25707/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html>
25708#[repr(C)]
25709#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25710pub struct ReleaseCapturedPipelineDataInfoKHR {
25711    pub s_type: StructureType,
25712    pub next: *mut c_void,
25713    pub pipeline: Pipeline,
25714}
25715
25716impl Default for ReleaseCapturedPipelineDataInfoKHR {
25717    #[inline]
25718    fn default() -> Self {
25719        Self {
25720            s_type: StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR,
25721            next: ptr::null_mut(),
25722            pipeline: Pipeline::default(),
25723        }
25724    }
25725}
25726
25727unsafe impl Send for ReleaseCapturedPipelineDataInfoKHR {}
25728unsafe impl Sync for ReleaseCapturedPipelineDataInfoKHR {}
25729
25730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoKHR.html>
25731#[repr(C)]
25732#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25733pub struct ReleaseSwapchainImagesInfoKHR {
25734    pub s_type: StructureType,
25735    pub next: *const c_void,
25736    pub swapchain: SwapchainKHR,
25737    pub image_index_count: u32,
25738    pub image_indices: *const u32,
25739}
25740
25741impl Default for ReleaseSwapchainImagesInfoKHR {
25742    #[inline]
25743    fn default() -> Self {
25744        Self {
25745            s_type: StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR,
25746            next: ptr::null(),
25747            swapchain: SwapchainKHR::default(),
25748            image_index_count: u32::default(),
25749            image_indices: ptr::null(),
25750        }
25751    }
25752}
25753
25754unsafe impl Send for ReleaseSwapchainImagesInfoKHR {}
25755unsafe impl Sync for ReleaseSwapchainImagesInfoKHR {}
25756
25757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html>
25758#[repr(C)]
25759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25760pub struct RenderPassAttachmentBeginInfo {
25761    pub s_type: StructureType,
25762    pub next: *const c_void,
25763    pub attachment_count: u32,
25764    pub attachments: *const ImageView,
25765}
25766
25767impl Default for RenderPassAttachmentBeginInfo {
25768    #[inline]
25769    fn default() -> Self {
25770        Self {
25771            s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
25772            next: ptr::null(),
25773            attachment_count: u32::default(),
25774            attachments: ptr::null(),
25775        }
25776    }
25777}
25778
25779unsafe impl Send for RenderPassAttachmentBeginInfo {}
25780unsafe impl Sync for RenderPassAttachmentBeginInfo {}
25781
25782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html>
25783#[repr(C)]
25784#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25785pub struct RenderPassBeginInfo {
25786    pub s_type: StructureType,
25787    pub next: *const c_void,
25788    pub render_pass: RenderPass,
25789    pub framebuffer: Framebuffer,
25790    pub render_area: Rect2D,
25791    pub clear_value_count: u32,
25792    pub clear_values: *const ClearValue,
25793}
25794
25795impl Default for RenderPassBeginInfo {
25796    #[inline]
25797    fn default() -> Self {
25798        Self {
25799            s_type: StructureType::RENDER_PASS_BEGIN_INFO,
25800            next: ptr::null(),
25801            render_pass: RenderPass::default(),
25802            framebuffer: Framebuffer::default(),
25803            render_area: Rect2D::default(),
25804            clear_value_count: u32::default(),
25805            clear_values: ptr::null(),
25806        }
25807    }
25808}
25809
25810unsafe impl Send for RenderPassBeginInfo {}
25811unsafe impl Sync for RenderPassBeginInfo {}
25812
25813/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html>
25814#[repr(C)]
25815#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25816pub struct RenderPassCreateInfo {
25817    pub s_type: StructureType,
25818    pub next: *const c_void,
25819    pub flags: RenderPassCreateFlags,
25820    pub attachment_count: u32,
25821    pub attachments: *const AttachmentDescription,
25822    pub subpass_count: u32,
25823    pub subpasses: *const SubpassDescription,
25824    pub dependency_count: u32,
25825    pub dependencies: *const SubpassDependency,
25826}
25827
25828impl Default for RenderPassCreateInfo {
25829    #[inline]
25830    fn default() -> Self {
25831        Self {
25832            s_type: StructureType::RENDER_PASS_CREATE_INFO,
25833            next: ptr::null(),
25834            flags: RenderPassCreateFlags::default(),
25835            attachment_count: u32::default(),
25836            attachments: ptr::null(),
25837            subpass_count: u32::default(),
25838            subpasses: ptr::null(),
25839            dependency_count: u32::default(),
25840            dependencies: ptr::null(),
25841        }
25842    }
25843}
25844
25845unsafe impl Send for RenderPassCreateInfo {}
25846unsafe impl Sync for RenderPassCreateInfo {}
25847
25848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html>
25849#[repr(C)]
25850#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25851pub struct RenderPassCreateInfo2 {
25852    pub s_type: StructureType,
25853    pub next: *const c_void,
25854    pub flags: RenderPassCreateFlags,
25855    pub attachment_count: u32,
25856    pub attachments: *const AttachmentDescription2,
25857    pub subpass_count: u32,
25858    pub subpasses: *const SubpassDescription2,
25859    pub dependency_count: u32,
25860    pub dependencies: *const SubpassDependency2,
25861    pub correlated_view_mask_count: u32,
25862    pub correlated_view_masks: *const u32,
25863}
25864
25865impl Default for RenderPassCreateInfo2 {
25866    #[inline]
25867    fn default() -> Self {
25868        Self {
25869            s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
25870            next: ptr::null(),
25871            flags: RenderPassCreateFlags::default(),
25872            attachment_count: u32::default(),
25873            attachments: ptr::null(),
25874            subpass_count: u32::default(),
25875            subpasses: ptr::null(),
25876            dependency_count: u32::default(),
25877            dependencies: ptr::null(),
25878            correlated_view_mask_count: u32::default(),
25879            correlated_view_masks: ptr::null(),
25880        }
25881    }
25882}
25883
25884unsafe impl Send for RenderPassCreateInfo2 {}
25885unsafe impl Sync for RenderPassCreateInfo2 {}
25886
25887/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html>
25888#[repr(C)]
25889#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25890pub struct RenderPassCreationControlEXT {
25891    pub s_type: StructureType,
25892    pub next: *const c_void,
25893    pub disallow_merging: Bool32,
25894}
25895
25896impl Default for RenderPassCreationControlEXT {
25897    #[inline]
25898    fn default() -> Self {
25899        Self {
25900            s_type: StructureType::RENDER_PASS_CREATION_CONTROL_EXT,
25901            next: ptr::null(),
25902            disallow_merging: Bool32::default(),
25903        }
25904    }
25905}
25906
25907unsafe impl Send for RenderPassCreationControlEXT {}
25908unsafe impl Sync for RenderPassCreationControlEXT {}
25909
25910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html>
25911#[repr(C)]
25912#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25913pub struct RenderPassCreationFeedbackCreateInfoEXT {
25914    pub s_type: StructureType,
25915    pub next: *const c_void,
25916    pub render_pass_feedback: *mut RenderPassCreationFeedbackInfoEXT,
25917}
25918
25919impl Default for RenderPassCreationFeedbackCreateInfoEXT {
25920    #[inline]
25921    fn default() -> Self {
25922        Self {
25923            s_type: StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT,
25924            next: ptr::null(),
25925            render_pass_feedback: ptr::null_mut(),
25926        }
25927    }
25928}
25929
25930unsafe impl Send for RenderPassCreationFeedbackCreateInfoEXT {}
25931unsafe impl Sync for RenderPassCreationFeedbackCreateInfoEXT {}
25932
25933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html>
25934#[repr(C)]
25935#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
25936pub struct RenderPassCreationFeedbackInfoEXT {
25937    pub post_merge_subpass_count: u32,
25938}
25939
25940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>
25941#[repr(C)]
25942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25943pub struct RenderPassFragmentDensityMapCreateInfoEXT {
25944    pub s_type: StructureType,
25945    pub next: *const c_void,
25946    pub fragment_density_map_attachment: AttachmentReference,
25947}
25948
25949impl Default for RenderPassFragmentDensityMapCreateInfoEXT {
25950    #[inline]
25951    fn default() -> Self {
25952        Self {
25953            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
25954            next: ptr::null(),
25955            fragment_density_map_attachment: AttachmentReference::default(),
25956        }
25957    }
25958}
25959
25960unsafe impl Send for RenderPassFragmentDensityMapCreateInfoEXT {}
25961unsafe impl Sync for RenderPassFragmentDensityMapCreateInfoEXT {}
25962
25963/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapOffsetEndInfoEXT.html>
25964#[repr(C)]
25965#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25966pub struct RenderPassFragmentDensityMapOffsetEndInfoEXT {
25967    pub s_type: StructureType,
25968    pub next: *const c_void,
25969    pub fragment_density_offset_count: u32,
25970    pub fragment_density_offsets: *const Offset2D,
25971}
25972
25973impl Default for RenderPassFragmentDensityMapOffsetEndInfoEXT {
25974    #[inline]
25975    fn default() -> Self {
25976        Self {
25977            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,
25978            next: ptr::null(),
25979            fragment_density_offset_count: u32::default(),
25980            fragment_density_offsets: ptr::null(),
25981        }
25982    }
25983}
25984
25985unsafe impl Send for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
25986unsafe impl Sync for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
25987
25988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>
25989#[repr(C)]
25990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25991pub struct RenderPassInputAttachmentAspectCreateInfo {
25992    pub s_type: StructureType,
25993    pub next: *const c_void,
25994    pub aspect_reference_count: u32,
25995    pub aspect_references: *const InputAttachmentAspectReference,
25996}
25997
25998impl Default for RenderPassInputAttachmentAspectCreateInfo {
25999    #[inline]
26000    fn default() -> Self {
26001        Self {
26002            s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
26003            next: ptr::null(),
26004            aspect_reference_count: u32::default(),
26005            aspect_references: ptr::null(),
26006        }
26007    }
26008}
26009
26010unsafe impl Send for RenderPassInputAttachmentAspectCreateInfo {}
26011unsafe impl Sync for RenderPassInputAttachmentAspectCreateInfo {}
26012
26013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html>
26014#[repr(C)]
26015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26016pub struct RenderPassMultiviewCreateInfo {
26017    pub s_type: StructureType,
26018    pub next: *const c_void,
26019    pub subpass_count: u32,
26020    pub view_masks: *const u32,
26021    pub dependency_count: u32,
26022    pub view_offsets: *const i32,
26023    pub correlation_mask_count: u32,
26024    pub correlation_masks: *const u32,
26025}
26026
26027impl Default for RenderPassMultiviewCreateInfo {
26028    #[inline]
26029    fn default() -> Self {
26030        Self {
26031            s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
26032            next: ptr::null(),
26033            subpass_count: u32::default(),
26034            view_masks: ptr::null(),
26035            dependency_count: u32::default(),
26036            view_offsets: ptr::null(),
26037            correlation_mask_count: u32::default(),
26038            correlation_masks: ptr::null(),
26039        }
26040    }
26041}
26042
26043unsafe impl Send for RenderPassMultiviewCreateInfo {}
26044unsafe impl Sync for RenderPassMultiviewCreateInfo {}
26045
26046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>
26047#[repr(C)]
26048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26049pub struct RenderPassSampleLocationsBeginInfoEXT {
26050    pub s_type: StructureType,
26051    pub next: *const c_void,
26052    pub attachment_initial_sample_locations_count: u32,
26053    pub attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
26054    pub post_subpass_sample_locations_count: u32,
26055    pub post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
26056}
26057
26058impl Default for RenderPassSampleLocationsBeginInfoEXT {
26059    #[inline]
26060    fn default() -> Self {
26061        Self {
26062            s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
26063            next: ptr::null(),
26064            attachment_initial_sample_locations_count: u32::default(),
26065            attachment_initial_sample_locations: ptr::null(),
26066            post_subpass_sample_locations_count: u32::default(),
26067            post_subpass_sample_locations: ptr::null(),
26068        }
26069    }
26070}
26071
26072unsafe impl Send for RenderPassSampleLocationsBeginInfoEXT {}
26073unsafe impl Sync for RenderPassSampleLocationsBeginInfoEXT {}
26074
26075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html>
26076#[repr(C)]
26077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26078pub struct RenderPassStripeBeginInfoARM {
26079    pub s_type: StructureType,
26080    pub next: *const c_void,
26081    pub stripe_info_count: u32,
26082    pub stripe_infos: *const RenderPassStripeInfoARM,
26083}
26084
26085impl Default for RenderPassStripeBeginInfoARM {
26086    #[inline]
26087    fn default() -> Self {
26088        Self {
26089            s_type: StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
26090            next: ptr::null(),
26091            stripe_info_count: u32::default(),
26092            stripe_infos: ptr::null(),
26093        }
26094    }
26095}
26096
26097unsafe impl Send for RenderPassStripeBeginInfoARM {}
26098unsafe impl Sync for RenderPassStripeBeginInfoARM {}
26099
26100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html>
26101#[repr(C)]
26102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26103pub struct RenderPassStripeInfoARM {
26104    pub s_type: StructureType,
26105    pub next: *const c_void,
26106    pub stripe_area: Rect2D,
26107}
26108
26109impl Default for RenderPassStripeInfoARM {
26110    #[inline]
26111    fn default() -> Self {
26112        Self {
26113            s_type: StructureType::RENDER_PASS_STRIPE_INFO_ARM,
26114            next: ptr::null(),
26115            stripe_area: Rect2D::default(),
26116        }
26117    }
26118}
26119
26120unsafe impl Send for RenderPassStripeInfoARM {}
26121unsafe impl Sync for RenderPassStripeInfoARM {}
26122
26123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html>
26124#[repr(C)]
26125#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26126pub struct RenderPassStripeSubmitInfoARM {
26127    pub s_type: StructureType,
26128    pub next: *const c_void,
26129    pub stripe_semaphore_info_count: u32,
26130    pub stripe_semaphore_infos: *const SemaphoreSubmitInfo,
26131}
26132
26133impl Default for RenderPassStripeSubmitInfoARM {
26134    #[inline]
26135    fn default() -> Self {
26136        Self {
26137            s_type: StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
26138            next: ptr::null(),
26139            stripe_semaphore_info_count: u32::default(),
26140            stripe_semaphore_infos: ptr::null(),
26141        }
26142    }
26143}
26144
26145unsafe impl Send for RenderPassStripeSubmitInfoARM {}
26146unsafe impl Sync for RenderPassStripeSubmitInfoARM {}
26147
26148/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html>
26149#[repr(C)]
26150#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26151pub struct RenderPassSubpassFeedbackCreateInfoEXT {
26152    pub s_type: StructureType,
26153    pub next: *const c_void,
26154    pub subpass_feedback: *mut RenderPassSubpassFeedbackInfoEXT,
26155}
26156
26157impl Default for RenderPassSubpassFeedbackCreateInfoEXT {
26158    #[inline]
26159    fn default() -> Self {
26160        Self {
26161            s_type: StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT,
26162            next: ptr::null(),
26163            subpass_feedback: ptr::null_mut(),
26164        }
26165    }
26166}
26167
26168unsafe impl Send for RenderPassSubpassFeedbackCreateInfoEXT {}
26169unsafe impl Sync for RenderPassSubpassFeedbackCreateInfoEXT {}
26170
26171/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html>
26172#[repr(C)]
26173#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26174pub struct RenderPassSubpassFeedbackInfoEXT {
26175    pub subpass_merge_status: SubpassMergeStatusEXT,
26176    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
26177    pub post_merge_index: u32,
26178}
26179
26180/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTileShadingCreateInfoQCOM.html>
26181#[repr(C)]
26182#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26183pub struct RenderPassTileShadingCreateInfoQCOM {
26184    pub s_type: StructureType,
26185    pub next: *const c_void,
26186    pub flags: TileShadingRenderPassFlagsQCOM,
26187    pub tile_apron_size: Extent2D,
26188}
26189
26190impl Default for RenderPassTileShadingCreateInfoQCOM {
26191    #[inline]
26192    fn default() -> Self {
26193        Self {
26194            s_type: StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM,
26195            next: ptr::null(),
26196            flags: TileShadingRenderPassFlagsQCOM::default(),
26197            tile_apron_size: Extent2D::default(),
26198        }
26199    }
26200}
26201
26202unsafe impl Send for RenderPassTileShadingCreateInfoQCOM {}
26203unsafe impl Sync for RenderPassTileShadingCreateInfoQCOM {}
26204
26205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html>
26206#[repr(C)]
26207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26208pub struct RenderPassTransformBeginInfoQCOM {
26209    pub s_type: StructureType,
26210    pub next: *const c_void,
26211    pub transform: SurfaceTransformFlagsKHR,
26212}
26213
26214impl Default for RenderPassTransformBeginInfoQCOM {
26215    #[inline]
26216    fn default() -> Self {
26217        Self {
26218            s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
26219            next: ptr::null(),
26220            transform: SurfaceTransformFlagsKHR::default(),
26221        }
26222    }
26223}
26224
26225unsafe impl Send for RenderPassTransformBeginInfoQCOM {}
26226unsafe impl Sync for RenderPassTransformBeginInfoQCOM {}
26227
26228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html>
26229#[repr(C)]
26230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26231pub struct RenderingAreaInfo {
26232    pub s_type: StructureType,
26233    pub next: *const c_void,
26234    pub view_mask: u32,
26235    pub color_attachment_count: u32,
26236    pub color_attachment_formats: *const Format,
26237    pub depth_attachment_format: Format,
26238    pub stencil_attachment_format: Format,
26239}
26240
26241impl Default for RenderingAreaInfo {
26242    #[inline]
26243    fn default() -> Self {
26244        Self {
26245            s_type: StructureType::RENDERING_AREA_INFO,
26246            next: ptr::null(),
26247            view_mask: u32::default(),
26248            color_attachment_count: u32::default(),
26249            color_attachment_formats: ptr::null(),
26250            depth_attachment_format: Format::default(),
26251            stencil_attachment_format: Format::default(),
26252        }
26253    }
26254}
26255
26256unsafe impl Send for RenderingAreaInfo {}
26257unsafe impl Sync for RenderingAreaInfo {}
26258
26259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html>
26260#[repr(C)]
26261#[derive(Copy, Clone, Debug)]
26262pub struct RenderingAttachmentInfo {
26263    pub s_type: StructureType,
26264    pub next: *const c_void,
26265    pub image_view: ImageView,
26266    pub image_layout: ImageLayout,
26267    pub resolve_mode: ResolveModeFlags,
26268    pub resolve_image_view: ImageView,
26269    pub resolve_image_layout: ImageLayout,
26270    pub load_op: AttachmentLoadOp,
26271    pub store_op: AttachmentStoreOp,
26272    pub clear_value: ClearValue,
26273}
26274
26275impl Default for RenderingAttachmentInfo {
26276    #[inline]
26277    fn default() -> Self {
26278        Self {
26279            s_type: StructureType::RENDERING_ATTACHMENT_INFO,
26280            next: ptr::null(),
26281            image_view: ImageView::default(),
26282            image_layout: ImageLayout::default(),
26283            resolve_mode: ResolveModeFlags::default(),
26284            resolve_image_view: ImageView::default(),
26285            resolve_image_layout: ImageLayout::default(),
26286            load_op: AttachmentLoadOp::default(),
26287            store_op: AttachmentStoreOp::default(),
26288            clear_value: ClearValue::default(),
26289        }
26290    }
26291}
26292
26293unsafe impl Send for RenderingAttachmentInfo {}
26294unsafe impl Sync for RenderingAttachmentInfo {}
26295
26296/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html>
26297#[repr(C)]
26298#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26299pub struct RenderingAttachmentLocationInfo {
26300    pub s_type: StructureType,
26301    pub next: *const c_void,
26302    pub color_attachment_count: u32,
26303    pub color_attachment_locations: *const u32,
26304}
26305
26306impl Default for RenderingAttachmentLocationInfo {
26307    #[inline]
26308    fn default() -> Self {
26309        Self {
26310            s_type: StructureType::RENDERING_ATTACHMENT_LOCATION_INFO,
26311            next: ptr::null(),
26312            color_attachment_count: u32::default(),
26313            color_attachment_locations: ptr::null(),
26314        }
26315    }
26316}
26317
26318unsafe impl Send for RenderingAttachmentLocationInfo {}
26319unsafe impl Sync for RenderingAttachmentLocationInfo {}
26320
26321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoEXT.html>
26322#[repr(C)]
26323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26324pub struct RenderingEndInfoEXT {
26325    pub s_type: StructureType,
26326    pub next: *const c_void,
26327}
26328
26329impl Default for RenderingEndInfoEXT {
26330    #[inline]
26331    fn default() -> Self {
26332        Self {
26333            s_type: StructureType::RENDERING_END_INFO_EXT,
26334            next: ptr::null(),
26335        }
26336    }
26337}
26338
26339unsafe impl Send for RenderingEndInfoEXT {}
26340unsafe impl Sync for RenderingEndInfoEXT {}
26341
26342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>
26343#[repr(C)]
26344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26345pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
26346    pub s_type: StructureType,
26347    pub next: *const c_void,
26348    pub image_view: ImageView,
26349    pub image_layout: ImageLayout,
26350}
26351
26352impl Default for RenderingFragmentDensityMapAttachmentInfoEXT {
26353    #[inline]
26354    fn default() -> Self {
26355        Self {
26356            s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
26357            next: ptr::null(),
26358            image_view: ImageView::default(),
26359            image_layout: ImageLayout::default(),
26360        }
26361    }
26362}
26363
26364unsafe impl Send for RenderingFragmentDensityMapAttachmentInfoEXT {}
26365unsafe impl Sync for RenderingFragmentDensityMapAttachmentInfoEXT {}
26366
26367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>
26368#[repr(C)]
26369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26370pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
26371    pub s_type: StructureType,
26372    pub next: *const c_void,
26373    pub image_view: ImageView,
26374    pub image_layout: ImageLayout,
26375    pub shading_rate_attachment_texel_size: Extent2D,
26376}
26377
26378impl Default for RenderingFragmentShadingRateAttachmentInfoKHR {
26379    #[inline]
26380    fn default() -> Self {
26381        Self {
26382            s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
26383            next: ptr::null(),
26384            image_view: ImageView::default(),
26385            image_layout: ImageLayout::default(),
26386            shading_rate_attachment_texel_size: Extent2D::default(),
26387        }
26388    }
26389}
26390
26391unsafe impl Send for RenderingFragmentShadingRateAttachmentInfoKHR {}
26392unsafe impl Sync for RenderingFragmentShadingRateAttachmentInfoKHR {}
26393
26394/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfo.html>
26395#[repr(C)]
26396#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26397pub struct RenderingInfo {
26398    pub s_type: StructureType,
26399    pub next: *const c_void,
26400    pub flags: RenderingFlags,
26401    pub render_area: Rect2D,
26402    pub layer_count: u32,
26403    pub view_mask: u32,
26404    pub color_attachment_count: u32,
26405    pub color_attachments: *const RenderingAttachmentInfo,
26406    pub depth_attachment: *const RenderingAttachmentInfo,
26407    pub stencil_attachment: *const RenderingAttachmentInfo,
26408}
26409
26410impl Default for RenderingInfo {
26411    #[inline]
26412    fn default() -> Self {
26413        Self {
26414            s_type: StructureType::RENDERING_INFO,
26415            next: ptr::null(),
26416            flags: RenderingFlags::default(),
26417            render_area: Rect2D::default(),
26418            layer_count: u32::default(),
26419            view_mask: u32::default(),
26420            color_attachment_count: u32::default(),
26421            color_attachments: ptr::null(),
26422            depth_attachment: ptr::null(),
26423            stencil_attachment: ptr::null(),
26424        }
26425    }
26426}
26427
26428unsafe impl Send for RenderingInfo {}
26429unsafe impl Sync for RenderingInfo {}
26430
26431/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html>
26432#[repr(C)]
26433#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26434pub struct RenderingInputAttachmentIndexInfo {
26435    pub s_type: StructureType,
26436    pub next: *const c_void,
26437    pub color_attachment_count: u32,
26438    pub color_attachment_input_indices: *const u32,
26439    pub depth_input_attachment_index: *const u32,
26440    pub stencil_input_attachment_index: *const u32,
26441}
26442
26443impl Default for RenderingInputAttachmentIndexInfo {
26444    #[inline]
26445    fn default() -> Self {
26446        Self {
26447            s_type: StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO,
26448            next: ptr::null(),
26449            color_attachment_count: u32::default(),
26450            color_attachment_input_indices: ptr::null(),
26451            depth_input_attachment_index: ptr::null(),
26452            stencil_input_attachment_index: ptr::null(),
26453        }
26454    }
26455}
26456
26457unsafe impl Send for RenderingInputAttachmentIndexInfo {}
26458unsafe impl Sync for RenderingInputAttachmentIndexInfo {}
26459
26460/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2.html>
26461#[repr(C)]
26462#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26463pub struct ResolveImageInfo2 {
26464    pub s_type: StructureType,
26465    pub next: *const c_void,
26466    pub src_image: Image,
26467    pub src_image_layout: ImageLayout,
26468    pub dst_image: Image,
26469    pub dst_image_layout: ImageLayout,
26470    pub region_count: u32,
26471    pub regions: *const ImageResolve2,
26472}
26473
26474impl Default for ResolveImageInfo2 {
26475    #[inline]
26476    fn default() -> Self {
26477        Self {
26478            s_type: StructureType::RESOLVE_IMAGE_INFO_2,
26479            next: ptr::null(),
26480            src_image: Image::default(),
26481            src_image_layout: ImageLayout::default(),
26482            dst_image: Image::default(),
26483            dst_image_layout: ImageLayout::default(),
26484            region_count: u32::default(),
26485            regions: ptr::null(),
26486        }
26487    }
26488}
26489
26490unsafe impl Send for ResolveImageInfo2 {}
26491unsafe impl Sync for ResolveImageInfo2 {}
26492
26493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSRTDataNV.html>
26494#[repr(C)]
26495#[derive(Copy, Clone, Default, Debug, PartialEq)]
26496pub struct SRTDataNV {
26497    pub sx: f32,
26498    pub a: f32,
26499    pub b: f32,
26500    pub pvx: f32,
26501    pub sy: f32,
26502    pub c: f32,
26503    pub pvy: f32,
26504    pub sz: f32,
26505    pub pvz: f32,
26506    pub qx: f32,
26507    pub qy: f32,
26508    pub qz: f32,
26509    pub qw: f32,
26510    pub tx: f32,
26511    pub ty: f32,
26512    pub tz: f32,
26513}
26514
26515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationEXT.html>
26516#[repr(C)]
26517#[derive(Copy, Clone, Default, Debug, PartialEq)]
26518pub struct SampleLocationEXT {
26519    pub x: f32,
26520    pub y: f32,
26521}
26522
26523/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html>
26524#[repr(C)]
26525#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26526pub struct SampleLocationsInfoEXT {
26527    pub s_type: StructureType,
26528    pub next: *const c_void,
26529    pub sample_locations_per_pixel: SampleCountFlags,
26530    pub sample_location_grid_size: Extent2D,
26531    pub sample_locations_count: u32,
26532    pub sample_locations: *const SampleLocationEXT,
26533}
26534
26535impl Default for SampleLocationsInfoEXT {
26536    #[inline]
26537    fn default() -> Self {
26538        Self {
26539            s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
26540            next: ptr::null(),
26541            sample_locations_per_pixel: SampleCountFlags::default(),
26542            sample_location_grid_size: Extent2D::default(),
26543            sample_locations_count: u32::default(),
26544            sample_locations: ptr::null(),
26545        }
26546    }
26547}
26548
26549unsafe impl Send for SampleLocationsInfoEXT {}
26550unsafe impl Sync for SampleLocationsInfoEXT {}
26551
26552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html>
26553#[repr(C)]
26554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26555pub struct SamplerBlockMatchWindowCreateInfoQCOM {
26556    pub s_type: StructureType,
26557    pub next: *const c_void,
26558    pub window_extent: Extent2D,
26559    pub window_compare_mode: BlockMatchWindowCompareModeQCOM,
26560}
26561
26562impl Default for SamplerBlockMatchWindowCreateInfoQCOM {
26563    #[inline]
26564    fn default() -> Self {
26565        Self {
26566            s_type: StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM,
26567            next: ptr::null(),
26568            window_extent: Extent2D::default(),
26569            window_compare_mode: BlockMatchWindowCompareModeQCOM::default(),
26570        }
26571    }
26572}
26573
26574unsafe impl Send for SamplerBlockMatchWindowCreateInfoQCOM {}
26575unsafe impl Sync for SamplerBlockMatchWindowCreateInfoQCOM {}
26576
26577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>
26578#[repr(C)]
26579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26580pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
26581    pub s_type: StructureType,
26582    pub next: *const c_void,
26583    pub components: ComponentMapping,
26584    pub srgb: Bool32,
26585}
26586
26587impl Default for SamplerBorderColorComponentMappingCreateInfoEXT {
26588    #[inline]
26589    fn default() -> Self {
26590        Self {
26591            s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
26592            next: ptr::null(),
26593            components: ComponentMapping::default(),
26594            srgb: Bool32::default(),
26595        }
26596    }
26597}
26598
26599unsafe impl Send for SamplerBorderColorComponentMappingCreateInfoEXT {}
26600unsafe impl Sync for SamplerBorderColorComponentMappingCreateInfoEXT {}
26601
26602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html>
26603#[repr(C)]
26604#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26605pub struct SamplerCaptureDescriptorDataInfoEXT {
26606    pub s_type: StructureType,
26607    pub next: *const c_void,
26608    pub sampler: Sampler,
26609}
26610
26611impl Default for SamplerCaptureDescriptorDataInfoEXT {
26612    #[inline]
26613    fn default() -> Self {
26614        Self {
26615            s_type: StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
26616            next: ptr::null(),
26617            sampler: Sampler::default(),
26618        }
26619    }
26620}
26621
26622unsafe impl Send for SamplerCaptureDescriptorDataInfoEXT {}
26623unsafe impl Sync for SamplerCaptureDescriptorDataInfoEXT {}
26624
26625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html>
26626#[repr(C)]
26627#[derive(Copy, Clone, Debug, PartialEq)]
26628pub struct SamplerCreateInfo {
26629    pub s_type: StructureType,
26630    pub next: *const c_void,
26631    pub flags: SamplerCreateFlags,
26632    pub mag_filter: Filter,
26633    pub min_filter: Filter,
26634    pub mipmap_mode: SamplerMipmapMode,
26635    pub address_mode_u: SamplerAddressMode,
26636    pub address_mode_v: SamplerAddressMode,
26637    pub address_mode_w: SamplerAddressMode,
26638    pub mip_lod_bias: f32,
26639    pub anisotropy_enable: Bool32,
26640    pub max_anisotropy: f32,
26641    pub compare_enable: Bool32,
26642    pub compare_op: CompareOp,
26643    pub min_lod: f32,
26644    pub max_lod: f32,
26645    pub border_color: BorderColor,
26646    pub unnormalized_coordinates: Bool32,
26647}
26648
26649impl Default for SamplerCreateInfo {
26650    #[inline]
26651    fn default() -> Self {
26652        Self {
26653            s_type: StructureType::SAMPLER_CREATE_INFO,
26654            next: ptr::null(),
26655            flags: SamplerCreateFlags::default(),
26656            mag_filter: Filter::default(),
26657            min_filter: Filter::default(),
26658            mipmap_mode: SamplerMipmapMode::default(),
26659            address_mode_u: SamplerAddressMode::default(),
26660            address_mode_v: SamplerAddressMode::default(),
26661            address_mode_w: SamplerAddressMode::default(),
26662            mip_lod_bias: f32::default(),
26663            anisotropy_enable: Bool32::default(),
26664            max_anisotropy: f32::default(),
26665            compare_enable: Bool32::default(),
26666            compare_op: CompareOp::default(),
26667            min_lod: f32::default(),
26668            max_lod: f32::default(),
26669            border_color: BorderColor::default(),
26670            unnormalized_coordinates: Bool32::default(),
26671        }
26672    }
26673}
26674
26675unsafe impl Send for SamplerCreateInfo {}
26676unsafe impl Sync for SamplerCreateInfo {}
26677
26678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html>
26679#[repr(C)]
26680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26681pub struct SamplerCubicWeightsCreateInfoQCOM {
26682    pub s_type: StructureType,
26683    pub next: *const c_void,
26684    pub cubic_weights: CubicFilterWeightsQCOM,
26685}
26686
26687impl Default for SamplerCubicWeightsCreateInfoQCOM {
26688    #[inline]
26689    fn default() -> Self {
26690        Self {
26691            s_type: StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM,
26692            next: ptr::null(),
26693            cubic_weights: CubicFilterWeightsQCOM::default(),
26694        }
26695    }
26696}
26697
26698unsafe impl Send for SamplerCubicWeightsCreateInfoQCOM {}
26699unsafe impl Sync for SamplerCubicWeightsCreateInfoQCOM {}
26700
26701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>
26702#[repr(C)]
26703#[derive(Copy, Clone, Debug)]
26704pub struct SamplerCustomBorderColorCreateInfoEXT {
26705    pub s_type: StructureType,
26706    pub next: *const c_void,
26707    pub custom_border_color: ClearColorValue,
26708    pub format: Format,
26709}
26710
26711impl Default for SamplerCustomBorderColorCreateInfoEXT {
26712    #[inline]
26713    fn default() -> Self {
26714        Self {
26715            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
26716            next: ptr::null(),
26717            custom_border_color: ClearColorValue::default(),
26718            format: Format::default(),
26719        }
26720    }
26721}
26722
26723unsafe impl Send for SamplerCustomBorderColorCreateInfoEXT {}
26724unsafe impl Sync for SamplerCustomBorderColorCreateInfoEXT {}
26725
26726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html>
26727#[repr(C)]
26728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26729pub struct SamplerReductionModeCreateInfo {
26730    pub s_type: StructureType,
26731    pub next: *const c_void,
26732    pub reduction_mode: SamplerReductionMode,
26733}
26734
26735impl Default for SamplerReductionModeCreateInfo {
26736    #[inline]
26737    fn default() -> Self {
26738        Self {
26739            s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
26740            next: ptr::null(),
26741            reduction_mode: SamplerReductionMode::default(),
26742        }
26743    }
26744}
26745
26746unsafe impl Send for SamplerReductionModeCreateInfo {}
26747unsafe impl Sync for SamplerReductionModeCreateInfo {}
26748
26749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html>
26750#[repr(C)]
26751#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26752pub struct SamplerYcbcrConversionCreateInfo {
26753    pub s_type: StructureType,
26754    pub next: *const c_void,
26755    pub format: Format,
26756    pub ycbcr_model: SamplerYcbcrModelConversion,
26757    pub ycbcr_range: SamplerYcbcrRange,
26758    pub components: ComponentMapping,
26759    pub x_chroma_offset: ChromaLocation,
26760    pub y_chroma_offset: ChromaLocation,
26761    pub chroma_filter: Filter,
26762    pub force_explicit_reconstruction: Bool32,
26763}
26764
26765impl Default for SamplerYcbcrConversionCreateInfo {
26766    #[inline]
26767    fn default() -> Self {
26768        Self {
26769            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
26770            next: ptr::null(),
26771            format: Format::default(),
26772            ycbcr_model: SamplerYcbcrModelConversion::default(),
26773            ycbcr_range: SamplerYcbcrRange::default(),
26774            components: ComponentMapping::default(),
26775            x_chroma_offset: ChromaLocation::default(),
26776            y_chroma_offset: ChromaLocation::default(),
26777            chroma_filter: Filter::default(),
26778            force_explicit_reconstruction: Bool32::default(),
26779        }
26780    }
26781}
26782
26783unsafe impl Send for SamplerYcbcrConversionCreateInfo {}
26784unsafe impl Sync for SamplerYcbcrConversionCreateInfo {}
26785
26786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>
26787#[repr(C)]
26788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26789pub struct SamplerYcbcrConversionImageFormatProperties {
26790    pub s_type: StructureType,
26791    pub next: *mut c_void,
26792    pub combined_image_sampler_descriptor_count: u32,
26793}
26794
26795impl Default for SamplerYcbcrConversionImageFormatProperties {
26796    #[inline]
26797    fn default() -> Self {
26798        Self {
26799            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
26800            next: ptr::null_mut(),
26801            combined_image_sampler_descriptor_count: u32::default(),
26802        }
26803    }
26804}
26805
26806unsafe impl Send for SamplerYcbcrConversionImageFormatProperties {}
26807unsafe impl Sync for SamplerYcbcrConversionImageFormatProperties {}
26808
26809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html>
26810#[repr(C)]
26811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26812pub struct SamplerYcbcrConversionInfo {
26813    pub s_type: StructureType,
26814    pub next: *const c_void,
26815    pub conversion: SamplerYcbcrConversion,
26816}
26817
26818impl Default for SamplerYcbcrConversionInfo {
26819    #[inline]
26820    fn default() -> Self {
26821        Self {
26822            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
26823            next: ptr::null(),
26824            conversion: SamplerYcbcrConversion::default(),
26825        }
26826    }
26827}
26828
26829unsafe impl Send for SamplerYcbcrConversionInfo {}
26830unsafe impl Sync for SamplerYcbcrConversionInfo {}
26831
26832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html>
26833#[repr(C)]
26834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26835pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
26836    pub s_type: StructureType,
26837    pub next: *mut c_void,
26838    pub enable_y_degamma: Bool32,
26839    pub enable_cb_cr_degamma: Bool32,
26840}
26841
26842impl Default for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
26843    #[inline]
26844    fn default() -> Self {
26845        Self {
26846            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM,
26847            next: ptr::null_mut(),
26848            enable_y_degamma: Bool32::default(),
26849            enable_cb_cr_degamma: Bool32::default(),
26850        }
26851    }
26852}
26853
26854unsafe impl Send for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
26855unsafe impl Sync for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
26856
26857/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSciSyncAttributesInfoNV.html>
26858#[repr(C)]
26859#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26860pub struct SciSyncAttributesInfoNV {
26861    pub s_type: StructureType,
26862    pub next: *const c_void,
26863    pub client_type: SciSyncClientTypeNV,
26864    pub primitive_type: SciSyncPrimitiveTypeNV,
26865}
26866
26867impl Default for SciSyncAttributesInfoNV {
26868    #[inline]
26869    fn default() -> Self {
26870        Self {
26871            s_type: StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV,
26872            next: ptr::null(),
26873            client_type: SciSyncClientTypeNV::default(),
26874            primitive_type: SciSyncPrimitiveTypeNV::default(),
26875        }
26876    }
26877}
26878
26879unsafe impl Send for SciSyncAttributesInfoNV {}
26880unsafe impl Sync for SciSyncAttributesInfoNV {}
26881
26882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html>
26883#[repr(C)]
26884#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26885pub struct ScreenBufferFormatPropertiesQNX {
26886    pub s_type: StructureType,
26887    pub next: *mut c_void,
26888    pub format: Format,
26889    pub external_format: u64,
26890    pub screen_usage: u64,
26891    pub format_features: FormatFeatureFlags,
26892    pub sampler_ycbcr_conversion_components: ComponentMapping,
26893    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
26894    pub suggested_ycbcr_range: SamplerYcbcrRange,
26895    pub suggested_x_chroma_offset: ChromaLocation,
26896    pub suggested_y_chroma_offset: ChromaLocation,
26897}
26898
26899impl Default for ScreenBufferFormatPropertiesQNX {
26900    #[inline]
26901    fn default() -> Self {
26902        Self {
26903            s_type: StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX,
26904            next: ptr::null_mut(),
26905            format: Format::default(),
26906            external_format: u64::default(),
26907            screen_usage: u64::default(),
26908            format_features: FormatFeatureFlags::default(),
26909            sampler_ycbcr_conversion_components: ComponentMapping::default(),
26910            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
26911            suggested_ycbcr_range: SamplerYcbcrRange::default(),
26912            suggested_x_chroma_offset: ChromaLocation::default(),
26913            suggested_y_chroma_offset: ChromaLocation::default(),
26914        }
26915    }
26916}
26917
26918unsafe impl Send for ScreenBufferFormatPropertiesQNX {}
26919unsafe impl Sync for ScreenBufferFormatPropertiesQNX {}
26920
26921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html>
26922#[repr(C)]
26923#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26924pub struct ScreenBufferPropertiesQNX {
26925    pub s_type: StructureType,
26926    pub next: *mut c_void,
26927    pub allocation_size: DeviceSize,
26928    pub memory_type_bits: u32,
26929}
26930
26931impl Default for ScreenBufferPropertiesQNX {
26932    #[inline]
26933    fn default() -> Self {
26934        Self {
26935            s_type: StructureType::SCREEN_BUFFER_PROPERTIES_QNX,
26936            next: ptr::null_mut(),
26937            allocation_size: DeviceSize::default(),
26938            memory_type_bits: u32::default(),
26939        }
26940    }
26941}
26942
26943unsafe impl Send for ScreenBufferPropertiesQNX {}
26944unsafe impl Sync for ScreenBufferPropertiesQNX {}
26945
26946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html>
26947#[repr(C)]
26948#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26949pub struct ScreenSurfaceCreateInfoQNX {
26950    pub s_type: StructureType,
26951    pub next: *const c_void,
26952    pub flags: ScreenSurfaceCreateFlagsQNX,
26953    pub context: *mut _screen_context,
26954    pub window: *mut _screen_window,
26955}
26956
26957impl Default for ScreenSurfaceCreateInfoQNX {
26958    #[inline]
26959    fn default() -> Self {
26960        Self {
26961            s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
26962            next: ptr::null(),
26963            flags: ScreenSurfaceCreateFlagsQNX::default(),
26964            context: ptr::null_mut(),
26965            window: ptr::null_mut(),
26966        }
26967    }
26968}
26969
26970unsafe impl Send for ScreenSurfaceCreateInfoQNX {}
26971unsafe impl Sync for ScreenSurfaceCreateInfoQNX {}
26972
26973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html>
26974#[repr(C)]
26975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26976pub struct SemaphoreCreateInfo {
26977    pub s_type: StructureType,
26978    pub next: *const c_void,
26979    pub flags: SemaphoreCreateFlags,
26980}
26981
26982impl Default for SemaphoreCreateInfo {
26983    #[inline]
26984    fn default() -> Self {
26985        Self {
26986            s_type: StructureType::SEMAPHORE_CREATE_INFO,
26987            next: ptr::null(),
26988            flags: SemaphoreCreateFlags::default(),
26989        }
26990    }
26991}
26992
26993unsafe impl Send for SemaphoreCreateInfo {}
26994unsafe impl Sync for SemaphoreCreateInfo {}
26995
26996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html>
26997#[repr(C)]
26998#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26999pub struct SemaphoreGetFdInfoKHR {
27000    pub s_type: StructureType,
27001    pub next: *const c_void,
27002    pub semaphore: Semaphore,
27003    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27004}
27005
27006impl Default for SemaphoreGetFdInfoKHR {
27007    #[inline]
27008    fn default() -> Self {
27009        Self {
27010            s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
27011            next: ptr::null(),
27012            semaphore: Semaphore::default(),
27013            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27014        }
27015    }
27016}
27017
27018unsafe impl Send for SemaphoreGetFdInfoKHR {}
27019unsafe impl Sync for SemaphoreGetFdInfoKHR {}
27020
27021/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetSciSyncInfoNV.html>
27022#[repr(C)]
27023#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27024pub struct SemaphoreGetSciSyncInfoNV {
27025    pub s_type: StructureType,
27026    pub next: *const c_void,
27027    pub semaphore: Semaphore,
27028    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27029}
27030
27031impl Default for SemaphoreGetSciSyncInfoNV {
27032    #[inline]
27033    fn default() -> Self {
27034        Self {
27035            s_type: StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV,
27036            next: ptr::null(),
27037            semaphore: Semaphore::default(),
27038            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27039        }
27040    }
27041}
27042
27043unsafe impl Send for SemaphoreGetSciSyncInfoNV {}
27044unsafe impl Sync for SemaphoreGetSciSyncInfoNV {}
27045
27046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>
27047#[repr(C)]
27048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27049pub struct SemaphoreGetWin32HandleInfoKHR {
27050    pub s_type: StructureType,
27051    pub next: *const c_void,
27052    pub semaphore: Semaphore,
27053    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27054}
27055
27056impl Default for SemaphoreGetWin32HandleInfoKHR {
27057    #[inline]
27058    fn default() -> Self {
27059        Self {
27060            s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
27061            next: ptr::null(),
27062            semaphore: Semaphore::default(),
27063            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27064        }
27065    }
27066}
27067
27068unsafe impl Send for SemaphoreGetWin32HandleInfoKHR {}
27069unsafe impl Sync for SemaphoreGetWin32HandleInfoKHR {}
27070
27071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>
27072#[repr(C)]
27073#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27074pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
27075    pub s_type: StructureType,
27076    pub next: *const c_void,
27077    pub semaphore: Semaphore,
27078    pub handle_type: ExternalSemaphoreHandleTypeFlags,
27079}
27080
27081impl Default for SemaphoreGetZirconHandleInfoFUCHSIA {
27082    #[inline]
27083    fn default() -> Self {
27084        Self {
27085            s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
27086            next: ptr::null(),
27087            semaphore: Semaphore::default(),
27088            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
27089        }
27090    }
27091}
27092
27093unsafe impl Send for SemaphoreGetZirconHandleInfoFUCHSIA {}
27094unsafe impl Sync for SemaphoreGetZirconHandleInfoFUCHSIA {}
27095
27096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncCreateInfoNV.html>
27097#[repr(C)]
27098#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27099pub struct SemaphoreSciSyncCreateInfoNV {
27100    pub s_type: StructureType,
27101    pub next: *const c_void,
27102    pub semaphore_pool: SemaphoreSciSyncPoolNV,
27103    pub fence: *const NvSciSyncFence,
27104}
27105
27106impl Default for SemaphoreSciSyncCreateInfoNV {
27107    #[inline]
27108    fn default() -> Self {
27109        Self {
27110            s_type: StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV,
27111            next: ptr::null(),
27112            semaphore_pool: SemaphoreSciSyncPoolNV::default(),
27113            fence: ptr::null(),
27114        }
27115    }
27116}
27117
27118unsafe impl Send for SemaphoreSciSyncCreateInfoNV {}
27119unsafe impl Sync for SemaphoreSciSyncCreateInfoNV {}
27120
27121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolCreateInfoNV.html>
27122#[repr(C)]
27123#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27124pub struct SemaphoreSciSyncPoolCreateInfoNV {
27125    pub s_type: StructureType,
27126    pub next: *const c_void,
27127    pub handle: NvSciSyncObj,
27128}
27129
27130impl Default for SemaphoreSciSyncPoolCreateInfoNV {
27131    #[inline]
27132    fn default() -> Self {
27133        Self {
27134            s_type: StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV,
27135            next: ptr::null(),
27136            handle: ptr::null_mut(),
27137        }
27138    }
27139}
27140
27141unsafe impl Send for SemaphoreSciSyncPoolCreateInfoNV {}
27142unsafe impl Sync for SemaphoreSciSyncPoolCreateInfoNV {}
27143
27144/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html>
27145#[repr(C)]
27146#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27147pub struct SemaphoreSignalInfo {
27148    pub s_type: StructureType,
27149    pub next: *const c_void,
27150    pub semaphore: Semaphore,
27151    pub value: u64,
27152}
27153
27154impl Default for SemaphoreSignalInfo {
27155    #[inline]
27156    fn default() -> Self {
27157        Self {
27158            s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
27159            next: ptr::null(),
27160            semaphore: Semaphore::default(),
27161            value: u64::default(),
27162        }
27163    }
27164}
27165
27166unsafe impl Send for SemaphoreSignalInfo {}
27167unsafe impl Sync for SemaphoreSignalInfo {}
27168
27169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html>
27170#[repr(C)]
27171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27172pub struct SemaphoreSubmitInfo {
27173    pub s_type: StructureType,
27174    pub next: *const c_void,
27175    pub semaphore: Semaphore,
27176    pub value: u64,
27177    pub stage_mask: PipelineStageFlags2,
27178    pub device_index: u32,
27179}
27180
27181impl Default for SemaphoreSubmitInfo {
27182    #[inline]
27183    fn default() -> Self {
27184        Self {
27185            s_type: StructureType::SEMAPHORE_SUBMIT_INFO,
27186            next: ptr::null(),
27187            semaphore: Semaphore::default(),
27188            value: u64::default(),
27189            stage_mask: PipelineStageFlags2::default(),
27190            device_index: u32::default(),
27191        }
27192    }
27193}
27194
27195unsafe impl Send for SemaphoreSubmitInfo {}
27196unsafe impl Sync for SemaphoreSubmitInfo {}
27197
27198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html>
27199#[repr(C)]
27200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27201pub struct SemaphoreTypeCreateInfo {
27202    pub s_type: StructureType,
27203    pub next: *const c_void,
27204    pub semaphore_type: SemaphoreType,
27205    pub initial_value: u64,
27206}
27207
27208impl Default for SemaphoreTypeCreateInfo {
27209    #[inline]
27210    fn default() -> Self {
27211        Self {
27212            s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
27213            next: ptr::null(),
27214            semaphore_type: SemaphoreType::default(),
27215            initial_value: u64::default(),
27216        }
27217    }
27218}
27219
27220unsafe impl Send for SemaphoreTypeCreateInfo {}
27221unsafe impl Sync for SemaphoreTypeCreateInfo {}
27222
27223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html>
27224#[repr(C)]
27225#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27226pub struct SemaphoreWaitInfo {
27227    pub s_type: StructureType,
27228    pub next: *const c_void,
27229    pub flags: SemaphoreWaitFlags,
27230    pub semaphore_count: u32,
27231    pub semaphores: *const Semaphore,
27232    pub values: *const u64,
27233}
27234
27235impl Default for SemaphoreWaitInfo {
27236    #[inline]
27237    fn default() -> Self {
27238        Self {
27239            s_type: StructureType::SEMAPHORE_WAIT_INFO,
27240            next: ptr::null(),
27241            flags: SemaphoreWaitFlags::default(),
27242            semaphore_count: u32::default(),
27243            semaphores: ptr::null(),
27244            values: ptr::null(),
27245        }
27246    }
27247}
27248
27249unsafe impl Send for SemaphoreWaitInfo {}
27250unsafe impl Sync for SemaphoreWaitInfo {}
27251
27252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html>
27253#[repr(C)]
27254#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27255pub struct SetDescriptorBufferOffsetsInfoEXT {
27256    pub s_type: StructureType,
27257    pub next: *const c_void,
27258    pub stage_flags: ShaderStageFlags,
27259    pub layout: PipelineLayout,
27260    pub first_set: u32,
27261    pub set_count: u32,
27262    pub buffer_indices: *const u32,
27263    pub offsets: *const DeviceSize,
27264}
27265
27266impl Default for SetDescriptorBufferOffsetsInfoEXT {
27267    #[inline]
27268    fn default() -> Self {
27269        Self {
27270            s_type: StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT,
27271            next: ptr::null(),
27272            stage_flags: ShaderStageFlags::default(),
27273            layout: PipelineLayout::default(),
27274            first_set: u32::default(),
27275            set_count: u32::default(),
27276            buffer_indices: ptr::null(),
27277            offsets: ptr::null(),
27278        }
27279    }
27280}
27281
27282unsafe impl Send for SetDescriptorBufferOffsetsInfoEXT {}
27283unsafe impl Sync for SetDescriptorBufferOffsetsInfoEXT {}
27284
27285/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html>
27286#[repr(C)]
27287#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27288pub struct SetLatencyMarkerInfoNV {
27289    pub s_type: StructureType,
27290    pub next: *const c_void,
27291    pub present_id: u64,
27292    pub marker: LatencyMarkerNV,
27293}
27294
27295impl Default for SetLatencyMarkerInfoNV {
27296    #[inline]
27297    fn default() -> Self {
27298        Self {
27299            s_type: StructureType::SET_LATENCY_MARKER_INFO_NV,
27300            next: ptr::null(),
27301            present_id: u64::default(),
27302            marker: LatencyMarkerNV::default(),
27303        }
27304    }
27305}
27306
27307unsafe impl Send for SetLatencyMarkerInfoNV {}
27308unsafe impl Sync for SetLatencyMarkerInfoNV {}
27309
27310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html>
27311#[repr(C)]
27312#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27313pub struct SetPresentConfigNV {
27314    pub s_type: StructureType,
27315    pub next: *const c_void,
27316    pub num_frames_per_batch: u32,
27317    pub present_config_feedback: u32,
27318}
27319
27320impl Default for SetPresentConfigNV {
27321    #[inline]
27322    fn default() -> Self {
27323        Self {
27324            s_type: StructureType::SET_PRESENT_CONFIG_NV,
27325            next: ptr::null(),
27326            num_frames_per_batch: u32::default(),
27327            present_config_feedback: u32::default(),
27328        }
27329    }
27330}
27331
27332unsafe impl Send for SetPresentConfigNV {}
27333unsafe impl Sync for SetPresentConfigNV {}
27334
27335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html>
27336#[repr(C)]
27337#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27338pub struct SetStateFlagsIndirectCommandNV {
27339    pub data: u32,
27340}
27341
27342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html>
27343#[repr(C)]
27344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27345pub struct ShaderCreateInfoEXT {
27346    pub s_type: StructureType,
27347    pub next: *const c_void,
27348    pub flags: ShaderCreateFlagsEXT,
27349    pub stage: ShaderStageFlags,
27350    pub next_stage: ShaderStageFlags,
27351    pub code_type: ShaderCodeTypeEXT,
27352    pub code_size: usize,
27353    pub code: *const c_void,
27354    pub name: *const c_char,
27355    pub set_layout_count: u32,
27356    pub set_layouts: *const DescriptorSetLayout,
27357    pub push_constant_range_count: u32,
27358    pub push_constant_ranges: *const PushConstantRange,
27359    pub specialization_info: *const SpecializationInfo,
27360}
27361
27362impl Default for ShaderCreateInfoEXT {
27363    #[inline]
27364    fn default() -> Self {
27365        Self {
27366            s_type: StructureType::SHADER_CREATE_INFO_EXT,
27367            next: ptr::null(),
27368            flags: ShaderCreateFlagsEXT::default(),
27369            stage: ShaderStageFlags::default(),
27370            next_stage: ShaderStageFlags::default(),
27371            code_type: ShaderCodeTypeEXT::default(),
27372            code_size: usize::default(),
27373            code: ptr::null(),
27374            name: ptr::null(),
27375            set_layout_count: u32::default(),
27376            set_layouts: ptr::null(),
27377            push_constant_range_count: u32::default(),
27378            push_constant_ranges: ptr::null(),
27379            specialization_info: ptr::null(),
27380        }
27381    }
27382}
27383
27384unsafe impl Send for ShaderCreateInfoEXT {}
27385unsafe impl Sync for ShaderCreateInfoEXT {}
27386
27387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html>
27388#[repr(C)]
27389#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27390pub struct ShaderModuleCreateInfo {
27391    pub s_type: StructureType,
27392    pub next: *const c_void,
27393    pub flags: ShaderModuleCreateFlags,
27394    pub code_size: usize,
27395    pub code: *const u32,
27396}
27397
27398impl Default for ShaderModuleCreateInfo {
27399    #[inline]
27400    fn default() -> Self {
27401        Self {
27402            s_type: StructureType::SHADER_MODULE_CREATE_INFO,
27403            next: ptr::null(),
27404            flags: ShaderModuleCreateFlags::default(),
27405            code_size: usize::default(),
27406            code: ptr::null(),
27407        }
27408    }
27409}
27410
27411unsafe impl Send for ShaderModuleCreateInfo {}
27412unsafe impl Sync for ShaderModuleCreateInfo {}
27413
27414/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html>
27415#[repr(C)]
27416#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27417pub struct ShaderModuleIdentifierEXT {
27418    pub s_type: StructureType,
27419    pub next: *mut c_void,
27420    pub identifier_size: u32,
27421    pub identifier: ByteArray<MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT>,
27422}
27423
27424impl Default for ShaderModuleIdentifierEXT {
27425    #[inline]
27426    fn default() -> Self {
27427        Self {
27428            s_type: StructureType::SHADER_MODULE_IDENTIFIER_EXT,
27429            next: ptr::null_mut(),
27430            identifier_size: u32::default(),
27431            identifier: ByteArray::default(),
27432        }
27433    }
27434}
27435
27436unsafe impl Send for ShaderModuleIdentifierEXT {}
27437unsafe impl Sync for ShaderModuleIdentifierEXT {}
27438
27439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>
27440#[repr(C)]
27441#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27442pub struct ShaderModuleValidationCacheCreateInfoEXT {
27443    pub s_type: StructureType,
27444    pub next: *const c_void,
27445    pub validation_cache: ValidationCacheEXT,
27446}
27447
27448impl Default for ShaderModuleValidationCacheCreateInfoEXT {
27449    #[inline]
27450    fn default() -> Self {
27451        Self {
27452            s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
27453            next: ptr::null(),
27454            validation_cache: ValidationCacheEXT::default(),
27455        }
27456    }
27457}
27458
27459unsafe impl Send for ShaderModuleValidationCacheCreateInfoEXT {}
27460unsafe impl Sync for ShaderModuleValidationCacheCreateInfoEXT {}
27461
27462/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html>
27463#[repr(C)]
27464#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27465pub struct ShaderResourceUsageAMD {
27466    pub num_used_vgprs: u32,
27467    pub num_used_sgprs: u32,
27468    pub lds_size_per_local_work_group: u32,
27469    pub lds_usage_size_in_bytes: usize,
27470    pub scratch_mem_usage_in_bytes: usize,
27471}
27472
27473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html>
27474#[repr(C)]
27475#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27476pub struct ShaderStatisticsInfoAMD {
27477    pub shader_stage_mask: ShaderStageFlags,
27478    pub resource_usage: ShaderResourceUsageAMD,
27479    pub num_physical_vgprs: u32,
27480    pub num_physical_sgprs: u32,
27481    pub num_available_vgprs: u32,
27482    pub num_available_sgprs: u32,
27483    pub compute_work_group_size: [u32; 3],
27484}
27485
27486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html>
27487#[repr(C)]
27488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27489pub struct ShadingRatePaletteNV {
27490    pub shading_rate_palette_entry_count: u32,
27491    pub shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
27492}
27493
27494impl Default for ShadingRatePaletteNV {
27495    #[inline]
27496    fn default() -> Self {
27497        Self {
27498            shading_rate_palette_entry_count: u32::default(),
27499            shading_rate_palette_entries: ptr::null(),
27500        }
27501    }
27502}
27503
27504unsafe impl Send for ShadingRatePaletteNV {}
27505unsafe impl Sync for ShadingRatePaletteNV {}
27506
27507/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>
27508#[repr(C)]
27509#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27510pub struct SharedPresentSurfaceCapabilitiesKHR {
27511    pub s_type: StructureType,
27512    pub next: *mut c_void,
27513    pub shared_present_supported_usage_flags: ImageUsageFlags,
27514}
27515
27516impl Default for SharedPresentSurfaceCapabilitiesKHR {
27517    #[inline]
27518    fn default() -> Self {
27519        Self {
27520            s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
27521            next: ptr::null_mut(),
27522            shared_present_supported_usage_flags: ImageUsageFlags::default(),
27523        }
27524    }
27525}
27526
27527unsafe impl Send for SharedPresentSurfaceCapabilitiesKHR {}
27528unsafe impl Sync for SharedPresentSurfaceCapabilitiesKHR {}
27529
27530/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html>
27531#[repr(C)]
27532#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27533pub struct SparseBufferMemoryBindInfo {
27534    pub buffer: Buffer,
27535    pub bind_count: u32,
27536    pub binds: *const SparseMemoryBind,
27537}
27538
27539impl Default for SparseBufferMemoryBindInfo {
27540    #[inline]
27541    fn default() -> Self {
27542        Self {
27543            buffer: Buffer::default(),
27544            bind_count: u32::default(),
27545            binds: ptr::null(),
27546        }
27547    }
27548}
27549
27550unsafe impl Send for SparseBufferMemoryBindInfo {}
27551unsafe impl Sync for SparseBufferMemoryBindInfo {}
27552
27553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html>
27554#[repr(C)]
27555#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27556pub struct SparseImageFormatProperties {
27557    pub aspect_mask: ImageAspectFlags,
27558    pub image_granularity: Extent3D,
27559    pub flags: SparseImageFormatFlags,
27560}
27561
27562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html>
27563#[repr(C)]
27564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27565pub struct SparseImageFormatProperties2 {
27566    pub s_type: StructureType,
27567    pub next: *mut c_void,
27568    pub properties: SparseImageFormatProperties,
27569}
27570
27571impl Default for SparseImageFormatProperties2 {
27572    #[inline]
27573    fn default() -> Self {
27574        Self {
27575            s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
27576            next: ptr::null_mut(),
27577            properties: SparseImageFormatProperties::default(),
27578        }
27579    }
27580}
27581
27582unsafe impl Send for SparseImageFormatProperties2 {}
27583unsafe impl Sync for SparseImageFormatProperties2 {}
27584
27585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html>
27586#[repr(C)]
27587#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27588pub struct SparseImageMemoryBind {
27589    pub subresource: ImageSubresource,
27590    pub offset: Offset3D,
27591    pub extent: Extent3D,
27592    pub memory: DeviceMemory,
27593    pub memory_offset: DeviceSize,
27594    pub flags: SparseMemoryBindFlags,
27595}
27596
27597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html>
27598#[repr(C)]
27599#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27600pub struct SparseImageMemoryBindInfo {
27601    pub image: Image,
27602    pub bind_count: u32,
27603    pub binds: *const SparseImageMemoryBind,
27604}
27605
27606impl Default for SparseImageMemoryBindInfo {
27607    #[inline]
27608    fn default() -> Self {
27609        Self {
27610            image: Image::default(),
27611            bind_count: u32::default(),
27612            binds: ptr::null(),
27613        }
27614    }
27615}
27616
27617unsafe impl Send for SparseImageMemoryBindInfo {}
27618unsafe impl Sync for SparseImageMemoryBindInfo {}
27619
27620/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html>
27621#[repr(C)]
27622#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27623pub struct SparseImageMemoryRequirements {
27624    pub format_properties: SparseImageFormatProperties,
27625    pub image_mip_tail_first_lod: u32,
27626    pub image_mip_tail_size: DeviceSize,
27627    pub image_mip_tail_offset: DeviceSize,
27628    pub image_mip_tail_stride: DeviceSize,
27629}
27630
27631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html>
27632#[repr(C)]
27633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27634pub struct SparseImageMemoryRequirements2 {
27635    pub s_type: StructureType,
27636    pub next: *mut c_void,
27637    pub memory_requirements: SparseImageMemoryRequirements,
27638}
27639
27640impl Default for SparseImageMemoryRequirements2 {
27641    #[inline]
27642    fn default() -> Self {
27643        Self {
27644            s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
27645            next: ptr::null_mut(),
27646            memory_requirements: SparseImageMemoryRequirements::default(),
27647        }
27648    }
27649}
27650
27651unsafe impl Send for SparseImageMemoryRequirements2 {}
27652unsafe impl Sync for SparseImageMemoryRequirements2 {}
27653
27654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html>
27655#[repr(C)]
27656#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27657pub struct SparseImageOpaqueMemoryBindInfo {
27658    pub image: Image,
27659    pub bind_count: u32,
27660    pub binds: *const SparseMemoryBind,
27661}
27662
27663impl Default for SparseImageOpaqueMemoryBindInfo {
27664    #[inline]
27665    fn default() -> Self {
27666        Self {
27667            image: Image::default(),
27668            bind_count: u32::default(),
27669            binds: ptr::null(),
27670        }
27671    }
27672}
27673
27674unsafe impl Send for SparseImageOpaqueMemoryBindInfo {}
27675unsafe impl Sync for SparseImageOpaqueMemoryBindInfo {}
27676
27677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBind.html>
27678#[repr(C)]
27679#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27680pub struct SparseMemoryBind {
27681    pub resource_offset: DeviceSize,
27682    pub size: DeviceSize,
27683    pub memory: DeviceMemory,
27684    pub memory_offset: DeviceSize,
27685    pub flags: SparseMemoryBindFlags,
27686}
27687
27688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationInfo.html>
27689#[repr(C)]
27690#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27691pub struct SpecializationInfo {
27692    pub map_entry_count: u32,
27693    pub map_entries: *const SpecializationMapEntry,
27694    pub data_size: usize,
27695    pub data: *const c_void,
27696}
27697
27698impl Default for SpecializationInfo {
27699    #[inline]
27700    fn default() -> Self {
27701        Self {
27702            map_entry_count: u32::default(),
27703            map_entries: ptr::null(),
27704            data_size: usize::default(),
27705            data: ptr::null(),
27706        }
27707    }
27708}
27709
27710unsafe impl Send for SpecializationInfo {}
27711unsafe impl Sync for SpecializationInfo {}
27712
27713/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html>
27714#[repr(C)]
27715#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27716pub struct SpecializationMapEntry {
27717    pub constant_id: u32,
27718    pub offset: u32,
27719    pub size: usize,
27720}
27721
27722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilOpState.html>
27723#[repr(C)]
27724#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27725pub struct StencilOpState {
27726    pub fail_op: StencilOp,
27727    pub pass_op: StencilOp,
27728    pub depth_fail_op: StencilOp,
27729    pub compare_op: CompareOp,
27730    pub compare_mask: u32,
27731    pub write_mask: u32,
27732    pub reference: u32,
27733}
27734
27735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>
27736#[repr(C)]
27737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27738pub struct StreamDescriptorSurfaceCreateInfoGGP {
27739    pub s_type: StructureType,
27740    pub next: *const c_void,
27741    pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
27742    pub stream_descriptor: GgpStreamDescriptor,
27743}
27744
27745impl Default for StreamDescriptorSurfaceCreateInfoGGP {
27746    #[inline]
27747    fn default() -> Self {
27748        Self {
27749            s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
27750            next: ptr::null(),
27751            flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
27752            stream_descriptor: GgpStreamDescriptor::default(),
27753        }
27754    }
27755}
27756
27757unsafe impl Send for StreamDescriptorSurfaceCreateInfoGGP {}
27758unsafe impl Sync for StreamDescriptorSurfaceCreateInfoGGP {}
27759
27760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html>
27761#[repr(C)]
27762#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27763pub struct StridedDeviceAddressNV {
27764    pub start_address: DeviceAddress,
27765    pub stride_in_bytes: DeviceSize,
27766}
27767
27768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRangeKHR.html>
27769#[repr(C)]
27770#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27771pub struct StridedDeviceAddressRangeKHR {
27772    pub address: DeviceAddress,
27773    pub size: DeviceSize,
27774    pub stride: DeviceSize,
27775}
27776
27777/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html>
27778#[repr(C)]
27779#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27780pub struct StridedDeviceAddressRegionKHR {
27781    pub device_address: DeviceAddress,
27782    pub stride: DeviceSize,
27783    pub size: DeviceSize,
27784}
27785
27786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo.html>
27787#[repr(C)]
27788#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27789pub struct SubmitInfo {
27790    pub s_type: StructureType,
27791    pub next: *const c_void,
27792    pub wait_semaphore_count: u32,
27793    pub wait_semaphores: *const Semaphore,
27794    pub wait_dst_stage_mask: *const PipelineStageFlags,
27795    pub command_buffer_count: u32,
27796    pub command_buffers: *const CommandBuffer,
27797    pub signal_semaphore_count: u32,
27798    pub signal_semaphores: *const Semaphore,
27799}
27800
27801impl Default for SubmitInfo {
27802    #[inline]
27803    fn default() -> Self {
27804        Self {
27805            s_type: StructureType::SUBMIT_INFO,
27806            next: ptr::null(),
27807            wait_semaphore_count: u32::default(),
27808            wait_semaphores: ptr::null(),
27809            wait_dst_stage_mask: ptr::null(),
27810            command_buffer_count: u32::default(),
27811            command_buffers: ptr::null(),
27812            signal_semaphore_count: u32::default(),
27813            signal_semaphores: ptr::null(),
27814        }
27815    }
27816}
27817
27818unsafe impl Send for SubmitInfo {}
27819unsafe impl Sync for SubmitInfo {}
27820
27821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2.html>
27822#[repr(C)]
27823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27824pub struct SubmitInfo2 {
27825    pub s_type: StructureType,
27826    pub next: *const c_void,
27827    pub flags: SubmitFlags,
27828    pub wait_semaphore_info_count: u32,
27829    pub wait_semaphore_infos: *const SemaphoreSubmitInfo,
27830    pub command_buffer_info_count: u32,
27831    pub command_buffer_infos: *const CommandBufferSubmitInfo,
27832    pub signal_semaphore_info_count: u32,
27833    pub signal_semaphore_infos: *const SemaphoreSubmitInfo,
27834}
27835
27836impl Default for SubmitInfo2 {
27837    #[inline]
27838    fn default() -> Self {
27839        Self {
27840            s_type: StructureType::SUBMIT_INFO_2,
27841            next: ptr::null(),
27842            flags: SubmitFlags::default(),
27843            wait_semaphore_info_count: u32::default(),
27844            wait_semaphore_infos: ptr::null(),
27845            command_buffer_info_count: u32::default(),
27846            command_buffer_infos: ptr::null(),
27847            signal_semaphore_info_count: u32::default(),
27848            signal_semaphore_infos: ptr::null(),
27849        }
27850    }
27851}
27852
27853unsafe impl Send for SubmitInfo2 {}
27854unsafe impl Sync for SubmitInfo2 {}
27855
27856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html>
27857#[repr(C)]
27858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27859pub struct SubpassBeginInfo {
27860    pub s_type: StructureType,
27861    pub next: *const c_void,
27862    pub contents: SubpassContents,
27863}
27864
27865impl Default for SubpassBeginInfo {
27866    #[inline]
27867    fn default() -> Self {
27868        Self {
27869            s_type: StructureType::SUBPASS_BEGIN_INFO,
27870            next: ptr::null(),
27871            contents: SubpassContents::default(),
27872        }
27873    }
27874}
27875
27876unsafe impl Send for SubpassBeginInfo {}
27877unsafe impl Sync for SubpassBeginInfo {}
27878
27879/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency.html>
27880#[repr(C)]
27881#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27882pub struct SubpassDependency {
27883    pub src_subpass: u32,
27884    pub dst_subpass: u32,
27885    pub src_stage_mask: PipelineStageFlags,
27886    pub dst_stage_mask: PipelineStageFlags,
27887    pub src_access_mask: AccessFlags,
27888    pub dst_access_mask: AccessFlags,
27889    pub dependency_flags: DependencyFlags,
27890}
27891
27892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2.html>
27893#[repr(C)]
27894#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27895pub struct SubpassDependency2 {
27896    pub s_type: StructureType,
27897    pub next: *const c_void,
27898    pub src_subpass: u32,
27899    pub dst_subpass: u32,
27900    pub src_stage_mask: PipelineStageFlags,
27901    pub dst_stage_mask: PipelineStageFlags,
27902    pub src_access_mask: AccessFlags,
27903    pub dst_access_mask: AccessFlags,
27904    pub dependency_flags: DependencyFlags,
27905    pub view_offset: i32,
27906}
27907
27908impl Default for SubpassDependency2 {
27909    #[inline]
27910    fn default() -> Self {
27911        Self {
27912            s_type: StructureType::SUBPASS_DEPENDENCY_2,
27913            next: ptr::null(),
27914            src_subpass: u32::default(),
27915            dst_subpass: u32::default(),
27916            src_stage_mask: PipelineStageFlags::default(),
27917            dst_stage_mask: PipelineStageFlags::default(),
27918            src_access_mask: AccessFlags::default(),
27919            dst_access_mask: AccessFlags::default(),
27920            dependency_flags: DependencyFlags::default(),
27921            view_offset: i32::default(),
27922        }
27923    }
27924}
27925
27926unsafe impl Send for SubpassDependency2 {}
27927unsafe impl Sync for SubpassDependency2 {}
27928
27929/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription.html>
27930#[repr(C)]
27931#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27932pub struct SubpassDescription {
27933    pub flags: SubpassDescriptionFlags,
27934    pub pipeline_bind_point: PipelineBindPoint,
27935    pub input_attachment_count: u32,
27936    pub input_attachments: *const AttachmentReference,
27937    pub color_attachment_count: u32,
27938    pub color_attachments: *const AttachmentReference,
27939    pub resolve_attachments: *const AttachmentReference,
27940    pub depth_stencil_attachment: *const AttachmentReference,
27941    pub preserve_attachment_count: u32,
27942    pub preserve_attachments: *const u32,
27943}
27944
27945impl Default for SubpassDescription {
27946    #[inline]
27947    fn default() -> Self {
27948        Self {
27949            flags: SubpassDescriptionFlags::default(),
27950            pipeline_bind_point: PipelineBindPoint::default(),
27951            input_attachment_count: u32::default(),
27952            input_attachments: ptr::null(),
27953            color_attachment_count: u32::default(),
27954            color_attachments: ptr::null(),
27955            resolve_attachments: ptr::null(),
27956            depth_stencil_attachment: ptr::null(),
27957            preserve_attachment_count: u32::default(),
27958            preserve_attachments: ptr::null(),
27959        }
27960    }
27961}
27962
27963unsafe impl Send for SubpassDescription {}
27964unsafe impl Sync for SubpassDescription {}
27965
27966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2.html>
27967#[repr(C)]
27968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27969pub struct SubpassDescription2 {
27970    pub s_type: StructureType,
27971    pub next: *const c_void,
27972    pub flags: SubpassDescriptionFlags,
27973    pub pipeline_bind_point: PipelineBindPoint,
27974    pub view_mask: u32,
27975    pub input_attachment_count: u32,
27976    pub input_attachments: *const AttachmentReference2,
27977    pub color_attachment_count: u32,
27978    pub color_attachments: *const AttachmentReference2,
27979    pub resolve_attachments: *const AttachmentReference2,
27980    pub depth_stencil_attachment: *const AttachmentReference2,
27981    pub preserve_attachment_count: u32,
27982    pub preserve_attachments: *const u32,
27983}
27984
27985impl Default for SubpassDescription2 {
27986    #[inline]
27987    fn default() -> Self {
27988        Self {
27989            s_type: StructureType::SUBPASS_DESCRIPTION_2,
27990            next: ptr::null(),
27991            flags: SubpassDescriptionFlags::default(),
27992            pipeline_bind_point: PipelineBindPoint::default(),
27993            view_mask: u32::default(),
27994            input_attachment_count: u32::default(),
27995            input_attachments: ptr::null(),
27996            color_attachment_count: u32::default(),
27997            color_attachments: ptr::null(),
27998            resolve_attachments: ptr::null(),
27999            depth_stencil_attachment: ptr::null(),
28000            preserve_attachment_count: u32::default(),
28001            preserve_attachments: ptr::null(),
28002        }
28003    }
28004}
28005
28006unsafe impl Send for SubpassDescription2 {}
28007unsafe impl Sync for SubpassDescription2 {}
28008
28009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html>
28010#[repr(C)]
28011#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28012pub struct SubpassDescriptionDepthStencilResolve {
28013    pub s_type: StructureType,
28014    pub next: *const c_void,
28015    pub depth_resolve_mode: ResolveModeFlags,
28016    pub stencil_resolve_mode: ResolveModeFlags,
28017    pub depth_stencil_resolve_attachment: *const AttachmentReference2,
28018}
28019
28020impl Default for SubpassDescriptionDepthStencilResolve {
28021    #[inline]
28022    fn default() -> Self {
28023        Self {
28024            s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
28025            next: ptr::null(),
28026            depth_resolve_mode: ResolveModeFlags::default(),
28027            stencil_resolve_mode: ResolveModeFlags::default(),
28028            depth_stencil_resolve_attachment: ptr::null(),
28029        }
28030    }
28031}
28032
28033unsafe impl Send for SubpassDescriptionDepthStencilResolve {}
28034unsafe impl Sync for SubpassDescriptionDepthStencilResolve {}
28035
28036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfo.html>
28037#[repr(C)]
28038#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28039pub struct SubpassEndInfo {
28040    pub s_type: StructureType,
28041    pub next: *const c_void,
28042}
28043
28044impl Default for SubpassEndInfo {
28045    #[inline]
28046    fn default() -> Self {
28047        Self {
28048            s_type: StructureType::SUBPASS_END_INFO,
28049            next: ptr::null(),
28050        }
28051    }
28052}
28053
28054unsafe impl Send for SubpassEndInfo {}
28055unsafe impl Sync for SubpassEndInfo {}
28056
28057/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html>
28058#[repr(C)]
28059#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28060pub struct SubpassResolvePerformanceQueryEXT {
28061    pub s_type: StructureType,
28062    pub next: *mut c_void,
28063    pub optimal: Bool32,
28064}
28065
28066impl Default for SubpassResolvePerformanceQueryEXT {
28067    #[inline]
28068    fn default() -> Self {
28069        Self {
28070            s_type: StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT,
28071            next: ptr::null_mut(),
28072            optimal: Bool32::default(),
28073        }
28074    }
28075}
28076
28077unsafe impl Send for SubpassResolvePerformanceQueryEXT {}
28078unsafe impl Sync for SubpassResolvePerformanceQueryEXT {}
28079
28080/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html>
28081#[repr(C)]
28082#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28083pub struct SubpassSampleLocationsEXT {
28084    pub subpass_index: u32,
28085    pub sample_locations_info: SampleLocationsInfoEXT,
28086}
28087
28088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>
28089#[repr(C)]
28090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28091pub struct SubpassShadingPipelineCreateInfoHUAWEI {
28092    pub s_type: StructureType,
28093    pub next: *mut c_void,
28094    pub render_pass: RenderPass,
28095    pub subpass: u32,
28096}
28097
28098impl Default for SubpassShadingPipelineCreateInfoHUAWEI {
28099    #[inline]
28100    fn default() -> Self {
28101        Self {
28102            s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
28103            next: ptr::null_mut(),
28104            render_pass: RenderPass::default(),
28105            subpass: u32::default(),
28106        }
28107    }
28108}
28109
28110unsafe impl Send for SubpassShadingPipelineCreateInfoHUAWEI {}
28111unsafe impl Sync for SubpassShadingPipelineCreateInfoHUAWEI {}
28112
28113/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html>
28114#[repr(C)]
28115#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28116pub struct SubresourceHostMemcpySize {
28117    pub s_type: StructureType,
28118    pub next: *mut c_void,
28119    pub size: DeviceSize,
28120}
28121
28122impl Default for SubresourceHostMemcpySize {
28123    #[inline]
28124    fn default() -> Self {
28125        Self {
28126            s_type: StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE,
28127            next: ptr::null_mut(),
28128            size: DeviceSize::default(),
28129        }
28130    }
28131}
28132
28133unsafe impl Send for SubresourceHostMemcpySize {}
28134unsafe impl Sync for SubresourceHostMemcpySize {}
28135
28136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout.html>
28137#[repr(C)]
28138#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28139pub struct SubresourceLayout {
28140    pub offset: DeviceSize,
28141    pub size: DeviceSize,
28142    pub row_pitch: DeviceSize,
28143    pub array_pitch: DeviceSize,
28144    pub depth_pitch: DeviceSize,
28145}
28146
28147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2.html>
28148#[repr(C)]
28149#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28150pub struct SubresourceLayout2 {
28151    pub s_type: StructureType,
28152    pub next: *mut c_void,
28153    pub subresource_layout: SubresourceLayout,
28154}
28155
28156impl Default for SubresourceLayout2 {
28157    #[inline]
28158    fn default() -> Self {
28159        Self {
28160            s_type: StructureType::SUBRESOURCE_LAYOUT_2,
28161            next: ptr::null_mut(),
28162            subresource_layout: SubresourceLayout::default(),
28163        }
28164    }
28165}
28166
28167unsafe impl Send for SubresourceLayout2 {}
28168unsafe impl Sync for SubresourceLayout2 {}
28169
28170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html>
28171#[repr(C)]
28172#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28173pub struct SurfaceCapabilities2EXT {
28174    pub s_type: StructureType,
28175    pub next: *mut c_void,
28176    pub min_image_count: u32,
28177    pub max_image_count: u32,
28178    pub current_extent: Extent2D,
28179    pub min_image_extent: Extent2D,
28180    pub max_image_extent: Extent2D,
28181    pub max_image_array_layers: u32,
28182    pub supported_transforms: SurfaceTransformFlagsKHR,
28183    pub current_transform: SurfaceTransformFlagsKHR,
28184    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
28185    pub supported_usage_flags: ImageUsageFlags,
28186    pub supported_surface_counters: SurfaceCounterFlagsEXT,
28187}
28188
28189impl Default for SurfaceCapabilities2EXT {
28190    #[inline]
28191    fn default() -> Self {
28192        Self {
28193            s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
28194            next: ptr::null_mut(),
28195            min_image_count: u32::default(),
28196            max_image_count: u32::default(),
28197            current_extent: Extent2D::default(),
28198            min_image_extent: Extent2D::default(),
28199            max_image_extent: Extent2D::default(),
28200            max_image_array_layers: u32::default(),
28201            supported_transforms: SurfaceTransformFlagsKHR::default(),
28202            current_transform: SurfaceTransformFlagsKHR::default(),
28203            supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
28204            supported_usage_flags: ImageUsageFlags::default(),
28205            supported_surface_counters: SurfaceCounterFlagsEXT::default(),
28206        }
28207    }
28208}
28209
28210unsafe impl Send for SurfaceCapabilities2EXT {}
28211unsafe impl Sync for SurfaceCapabilities2EXT {}
28212
28213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html>
28214#[repr(C)]
28215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28216pub struct SurfaceCapabilities2KHR {
28217    pub s_type: StructureType,
28218    pub next: *mut c_void,
28219    pub surface_capabilities: SurfaceCapabilitiesKHR,
28220}
28221
28222impl Default for SurfaceCapabilities2KHR {
28223    #[inline]
28224    fn default() -> Self {
28225        Self {
28226            s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
28227            next: ptr::null_mut(),
28228            surface_capabilities: SurfaceCapabilitiesKHR::default(),
28229        }
28230    }
28231}
28232
28233unsafe impl Send for SurfaceCapabilities2KHR {}
28234unsafe impl Sync for SurfaceCapabilities2KHR {}
28235
28236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>
28237#[repr(C)]
28238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28239pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
28240    pub s_type: StructureType,
28241    pub next: *mut c_void,
28242    pub full_screen_exclusive_supported: Bool32,
28243}
28244
28245impl Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
28246    #[inline]
28247    fn default() -> Self {
28248        Self {
28249            s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
28250            next: ptr::null_mut(),
28251            full_screen_exclusive_supported: Bool32::default(),
28252        }
28253    }
28254}
28255
28256unsafe impl Send for SurfaceCapabilitiesFullScreenExclusiveEXT {}
28257unsafe impl Sync for SurfaceCapabilitiesFullScreenExclusiveEXT {}
28258
28259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html>
28260#[repr(C)]
28261#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28262pub struct SurfaceCapabilitiesKHR {
28263    pub min_image_count: u32,
28264    pub max_image_count: u32,
28265    pub current_extent: Extent2D,
28266    pub min_image_extent: Extent2D,
28267    pub max_image_extent: Extent2D,
28268    pub max_image_array_layers: u32,
28269    pub supported_transforms: SurfaceTransformFlagsKHR,
28270    pub current_transform: SurfaceTransformFlagsKHR,
28271    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
28272    pub supported_usage_flags: ImageUsageFlags,
28273}
28274
28275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html>
28276#[repr(C)]
28277#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28278pub struct SurfaceCapabilitiesPresentBarrierNV {
28279    pub s_type: StructureType,
28280    pub next: *mut c_void,
28281    pub present_barrier_supported: Bool32,
28282}
28283
28284impl Default for SurfaceCapabilitiesPresentBarrierNV {
28285    #[inline]
28286    fn default() -> Self {
28287        Self {
28288            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV,
28289            next: ptr::null_mut(),
28290            present_barrier_supported: Bool32::default(),
28291        }
28292    }
28293}
28294
28295unsafe impl Send for SurfaceCapabilitiesPresentBarrierNV {}
28296unsafe impl Sync for SurfaceCapabilitiesPresentBarrierNV {}
28297
28298/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentId2KHR.html>
28299#[repr(C)]
28300#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28301pub struct SurfaceCapabilitiesPresentId2KHR {
28302    pub s_type: StructureType,
28303    pub next: *mut c_void,
28304    pub present_id2_supported: Bool32,
28305}
28306
28307impl Default for SurfaceCapabilitiesPresentId2KHR {
28308    #[inline]
28309    fn default() -> Self {
28310        Self {
28311            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR,
28312            next: ptr::null_mut(),
28313            present_id2_supported: Bool32::default(),
28314        }
28315    }
28316}
28317
28318unsafe impl Send for SurfaceCapabilitiesPresentId2KHR {}
28319unsafe impl Sync for SurfaceCapabilitiesPresentId2KHR {}
28320
28321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentWait2KHR.html>
28322#[repr(C)]
28323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28324pub struct SurfaceCapabilitiesPresentWait2KHR {
28325    pub s_type: StructureType,
28326    pub next: *mut c_void,
28327    pub present_wait2_supported: Bool32,
28328}
28329
28330impl Default for SurfaceCapabilitiesPresentWait2KHR {
28331    #[inline]
28332    fn default() -> Self {
28333        Self {
28334            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR,
28335            next: ptr::null_mut(),
28336            present_wait2_supported: Bool32::default(),
28337        }
28338    }
28339}
28340
28341unsafe impl Send for SurfaceCapabilitiesPresentWait2KHR {}
28342unsafe impl Sync for SurfaceCapabilitiesPresentWait2KHR {}
28343
28344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCreateInfoOHOS.html>
28345#[repr(C)]
28346#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28347pub struct SurfaceCreateInfoOHOS {
28348    pub s_type: StructureType,
28349    pub next: *const c_void,
28350    pub flags: SurfaceCreateFlagsOHOS,
28351    pub window: *mut OHNativeWindow,
28352}
28353
28354impl Default for SurfaceCreateInfoOHOS {
28355    #[inline]
28356    fn default() -> Self {
28357        Self {
28358            s_type: StructureType::SURFACE_CREATE_INFO_OHOS,
28359            next: ptr::null(),
28360            flags: SurfaceCreateFlagsOHOS::default(),
28361            window: ptr::null_mut(),
28362        }
28363    }
28364}
28365
28366unsafe impl Send for SurfaceCreateInfoOHOS {}
28367unsafe impl Sync for SurfaceCreateInfoOHOS {}
28368
28369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html>
28370#[repr(C)]
28371#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28372pub struct SurfaceFormat2KHR {
28373    pub s_type: StructureType,
28374    pub next: *mut c_void,
28375    pub surface_format: SurfaceFormatKHR,
28376}
28377
28378impl Default for SurfaceFormat2KHR {
28379    #[inline]
28380    fn default() -> Self {
28381        Self {
28382            s_type: StructureType::SURFACE_FORMAT_2_KHR,
28383            next: ptr::null_mut(),
28384            surface_format: SurfaceFormatKHR::default(),
28385        }
28386    }
28387}
28388
28389unsafe impl Send for SurfaceFormat2KHR {}
28390unsafe impl Sync for SurfaceFormat2KHR {}
28391
28392/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html>
28393#[repr(C)]
28394#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
28395pub struct SurfaceFormatKHR {
28396    pub format: Format,
28397    pub color_space: ColorSpaceKHR,
28398}
28399
28400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>
28401#[repr(C)]
28402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28403pub struct SurfaceFullScreenExclusiveInfoEXT {
28404    pub s_type: StructureType,
28405    pub next: *mut c_void,
28406    pub full_screen_exclusive: FullScreenExclusiveEXT,
28407}
28408
28409impl Default for SurfaceFullScreenExclusiveInfoEXT {
28410    #[inline]
28411    fn default() -> Self {
28412        Self {
28413            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
28414            next: ptr::null_mut(),
28415            full_screen_exclusive: FullScreenExclusiveEXT::default(),
28416        }
28417    }
28418}
28419
28420unsafe impl Send for SurfaceFullScreenExclusiveInfoEXT {}
28421unsafe impl Sync for SurfaceFullScreenExclusiveInfoEXT {}
28422
28423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>
28424#[repr(C)]
28425#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28426pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
28427    pub s_type: StructureType,
28428    pub next: *const c_void,
28429    pub hmonitor: HMONITOR,
28430}
28431
28432impl Default for SurfaceFullScreenExclusiveWin32InfoEXT {
28433    #[inline]
28434    fn default() -> Self {
28435        Self {
28436            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
28437            next: ptr::null(),
28438            hmonitor: ptr::null_mut(),
28439        }
28440    }
28441}
28442
28443unsafe impl Send for SurfaceFullScreenExclusiveWin32InfoEXT {}
28444unsafe impl Sync for SurfaceFullScreenExclusiveWin32InfoEXT {}
28445
28446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityKHR.html>
28447#[repr(C)]
28448#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28449pub struct SurfacePresentModeCompatibilityKHR {
28450    pub s_type: StructureType,
28451    pub next: *mut c_void,
28452    pub present_mode_count: u32,
28453    pub present_modes: *mut PresentModeKHR,
28454}
28455
28456impl Default for SurfacePresentModeCompatibilityKHR {
28457    #[inline]
28458    fn default() -> Self {
28459        Self {
28460            s_type: StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR,
28461            next: ptr::null_mut(),
28462            present_mode_count: u32::default(),
28463            present_modes: ptr::null_mut(),
28464        }
28465    }
28466}
28467
28468unsafe impl Send for SurfacePresentModeCompatibilityKHR {}
28469unsafe impl Sync for SurfacePresentModeCompatibilityKHR {}
28470
28471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeKHR.html>
28472#[repr(C)]
28473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28474pub struct SurfacePresentModeKHR {
28475    pub s_type: StructureType,
28476    pub next: *mut c_void,
28477    pub present_mode: PresentModeKHR,
28478}
28479
28480impl Default for SurfacePresentModeKHR {
28481    #[inline]
28482    fn default() -> Self {
28483        Self {
28484            s_type: StructureType::SURFACE_PRESENT_MODE_KHR,
28485            next: ptr::null_mut(),
28486            present_mode: PresentModeKHR::default(),
28487        }
28488    }
28489}
28490
28491unsafe impl Send for SurfacePresentModeKHR {}
28492unsafe impl Sync for SurfacePresentModeKHR {}
28493
28494/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesKHR.html>
28495#[repr(C)]
28496#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28497pub struct SurfacePresentScalingCapabilitiesKHR {
28498    pub s_type: StructureType,
28499    pub next: *mut c_void,
28500    pub supported_present_scaling: PresentScalingFlagsKHR,
28501    pub supported_present_gravity_x: PresentGravityFlagsKHR,
28502    pub supported_present_gravity_y: PresentGravityFlagsKHR,
28503    pub min_scaled_image_extent: Extent2D,
28504    pub max_scaled_image_extent: Extent2D,
28505}
28506
28507impl Default for SurfacePresentScalingCapabilitiesKHR {
28508    #[inline]
28509    fn default() -> Self {
28510        Self {
28511            s_type: StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR,
28512            next: ptr::null_mut(),
28513            supported_present_scaling: PresentScalingFlagsKHR::default(),
28514            supported_present_gravity_x: PresentGravityFlagsKHR::default(),
28515            supported_present_gravity_y: PresentGravityFlagsKHR::default(),
28516            min_scaled_image_extent: Extent2D::default(),
28517            max_scaled_image_extent: Extent2D::default(),
28518        }
28519    }
28520}
28521
28522unsafe impl Send for SurfacePresentScalingCapabilitiesKHR {}
28523unsafe impl Sync for SurfacePresentScalingCapabilitiesKHR {}
28524
28525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html>
28526#[repr(C)]
28527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28528pub struct SurfaceProtectedCapabilitiesKHR {
28529    pub s_type: StructureType,
28530    pub next: *const c_void,
28531    pub supports_protected: Bool32,
28532}
28533
28534impl Default for SurfaceProtectedCapabilitiesKHR {
28535    #[inline]
28536    fn default() -> Self {
28537        Self {
28538            s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
28539            next: ptr::null(),
28540            supports_protected: Bool32::default(),
28541        }
28542    }
28543}
28544
28545unsafe impl Send for SurfaceProtectedCapabilitiesKHR {}
28546unsafe impl Sync for SurfaceProtectedCapabilitiesKHR {}
28547
28548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html>
28549#[repr(C)]
28550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28551pub struct SwapchainCounterCreateInfoEXT {
28552    pub s_type: StructureType,
28553    pub next: *const c_void,
28554    pub surface_counters: SurfaceCounterFlagsEXT,
28555}
28556
28557impl Default for SwapchainCounterCreateInfoEXT {
28558    #[inline]
28559    fn default() -> Self {
28560        Self {
28561            s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
28562            next: ptr::null(),
28563            surface_counters: SurfaceCounterFlagsEXT::default(),
28564        }
28565    }
28566}
28567
28568unsafe impl Send for SwapchainCounterCreateInfoEXT {}
28569unsafe impl Sync for SwapchainCounterCreateInfoEXT {}
28570
28571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html>
28572#[repr(C)]
28573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28574pub struct SwapchainCreateInfoKHR {
28575    pub s_type: StructureType,
28576    pub next: *const c_void,
28577    pub flags: SwapchainCreateFlagsKHR,
28578    pub surface: SurfaceKHR,
28579    pub min_image_count: u32,
28580    pub image_format: Format,
28581    pub image_color_space: ColorSpaceKHR,
28582    pub image_extent: Extent2D,
28583    pub image_array_layers: u32,
28584    pub image_usage: ImageUsageFlags,
28585    pub image_sharing_mode: SharingMode,
28586    pub queue_family_index_count: u32,
28587    pub queue_family_indices: *const u32,
28588    pub pre_transform: SurfaceTransformFlagsKHR,
28589    pub composite_alpha: CompositeAlphaFlagsKHR,
28590    pub present_mode: PresentModeKHR,
28591    pub clipped: Bool32,
28592    pub old_swapchain: SwapchainKHR,
28593}
28594
28595impl Default for SwapchainCreateInfoKHR {
28596    #[inline]
28597    fn default() -> Self {
28598        Self {
28599            s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
28600            next: ptr::null(),
28601            flags: SwapchainCreateFlagsKHR::default(),
28602            surface: SurfaceKHR::default(),
28603            min_image_count: u32::default(),
28604            image_format: Format::default(),
28605            image_color_space: ColorSpaceKHR::default(),
28606            image_extent: Extent2D::default(),
28607            image_array_layers: u32::default(),
28608            image_usage: ImageUsageFlags::default(),
28609            image_sharing_mode: SharingMode::default(),
28610            queue_family_index_count: u32::default(),
28611            queue_family_indices: ptr::null(),
28612            pre_transform: SurfaceTransformFlagsKHR::default(),
28613            composite_alpha: CompositeAlphaFlagsKHR::default(),
28614            present_mode: PresentModeKHR::default(),
28615            clipped: Bool32::default(),
28616            old_swapchain: SwapchainKHR::default(),
28617        }
28618    }
28619}
28620
28621unsafe impl Send for SwapchainCreateInfoKHR {}
28622unsafe impl Sync for SwapchainCreateInfoKHR {}
28623
28624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>
28625#[repr(C)]
28626#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28627pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
28628    pub s_type: StructureType,
28629    pub next: *const c_void,
28630    pub local_dimming_enable: Bool32,
28631}
28632
28633impl Default for SwapchainDisplayNativeHdrCreateInfoAMD {
28634    #[inline]
28635    fn default() -> Self {
28636        Self {
28637            s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
28638            next: ptr::null(),
28639            local_dimming_enable: Bool32::default(),
28640        }
28641    }
28642}
28643
28644unsafe impl Send for SwapchainDisplayNativeHdrCreateInfoAMD {}
28645unsafe impl Sync for SwapchainDisplayNativeHdrCreateInfoAMD {}
28646
28647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html>
28648#[repr(C)]
28649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28650pub struct SwapchainLatencyCreateInfoNV {
28651    pub s_type: StructureType,
28652    pub next: *const c_void,
28653    pub latency_mode_enable: Bool32,
28654}
28655
28656impl Default for SwapchainLatencyCreateInfoNV {
28657    #[inline]
28658    fn default() -> Self {
28659        Self {
28660            s_type: StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV,
28661            next: ptr::null(),
28662            latency_mode_enable: Bool32::default(),
28663        }
28664    }
28665}
28666
28667unsafe impl Send for SwapchainLatencyCreateInfoNV {}
28668unsafe impl Sync for SwapchainLatencyCreateInfoNV {}
28669
28670/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html>
28671#[repr(C)]
28672#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28673pub struct SwapchainPresentBarrierCreateInfoNV {
28674    pub s_type: StructureType,
28675    pub next: *mut c_void,
28676    pub present_barrier_enable: Bool32,
28677}
28678
28679impl Default for SwapchainPresentBarrierCreateInfoNV {
28680    #[inline]
28681    fn default() -> Self {
28682        Self {
28683            s_type: StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV,
28684            next: ptr::null_mut(),
28685            present_barrier_enable: Bool32::default(),
28686        }
28687    }
28688}
28689
28690unsafe impl Send for SwapchainPresentBarrierCreateInfoNV {}
28691unsafe impl Sync for SwapchainPresentBarrierCreateInfoNV {}
28692
28693/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoKHR.html>
28694#[repr(C)]
28695#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28696pub struct SwapchainPresentFenceInfoKHR {
28697    pub s_type: StructureType,
28698    pub next: *const c_void,
28699    pub swapchain_count: u32,
28700    pub fences: *const Fence,
28701}
28702
28703impl Default for SwapchainPresentFenceInfoKHR {
28704    #[inline]
28705    fn default() -> Self {
28706        Self {
28707            s_type: StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR,
28708            next: ptr::null(),
28709            swapchain_count: u32::default(),
28710            fences: ptr::null(),
28711        }
28712    }
28713}
28714
28715unsafe impl Send for SwapchainPresentFenceInfoKHR {}
28716unsafe impl Sync for SwapchainPresentFenceInfoKHR {}
28717
28718/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoKHR.html>
28719#[repr(C)]
28720#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28721pub struct SwapchainPresentModeInfoKHR {
28722    pub s_type: StructureType,
28723    pub next: *const c_void,
28724    pub swapchain_count: u32,
28725    pub present_modes: *const PresentModeKHR,
28726}
28727
28728impl Default for SwapchainPresentModeInfoKHR {
28729    #[inline]
28730    fn default() -> Self {
28731        Self {
28732            s_type: StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR,
28733            next: ptr::null(),
28734            swapchain_count: u32::default(),
28735            present_modes: ptr::null(),
28736        }
28737    }
28738}
28739
28740unsafe impl Send for SwapchainPresentModeInfoKHR {}
28741unsafe impl Sync for SwapchainPresentModeInfoKHR {}
28742
28743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoKHR.html>
28744#[repr(C)]
28745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28746pub struct SwapchainPresentModesCreateInfoKHR {
28747    pub s_type: StructureType,
28748    pub next: *const c_void,
28749    pub present_mode_count: u32,
28750    pub present_modes: *const PresentModeKHR,
28751}
28752
28753impl Default for SwapchainPresentModesCreateInfoKHR {
28754    #[inline]
28755    fn default() -> Self {
28756        Self {
28757            s_type: StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR,
28758            next: ptr::null(),
28759            present_mode_count: u32::default(),
28760            present_modes: ptr::null(),
28761        }
28762    }
28763}
28764
28765unsafe impl Send for SwapchainPresentModesCreateInfoKHR {}
28766unsafe impl Sync for SwapchainPresentModesCreateInfoKHR {}
28767
28768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoKHR.html>
28769#[repr(C)]
28770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28771pub struct SwapchainPresentScalingCreateInfoKHR {
28772    pub s_type: StructureType,
28773    pub next: *const c_void,
28774    pub scaling_behavior: PresentScalingFlagsKHR,
28775    pub present_gravity_x: PresentGravityFlagsKHR,
28776    pub present_gravity_y: PresentGravityFlagsKHR,
28777}
28778
28779impl Default for SwapchainPresentScalingCreateInfoKHR {
28780    #[inline]
28781    fn default() -> Self {
28782        Self {
28783            s_type: StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR,
28784            next: ptr::null(),
28785            scaling_behavior: PresentScalingFlagsKHR::default(),
28786            present_gravity_x: PresentGravityFlagsKHR::default(),
28787            present_gravity_y: PresentGravityFlagsKHR::default(),
28788        }
28789    }
28790}
28791
28792unsafe impl Send for SwapchainPresentScalingCreateInfoKHR {}
28793unsafe impl Sync for SwapchainPresentScalingCreateInfoKHR {}
28794
28795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html>
28796#[repr(C)]
28797#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28798pub struct SysmemColorSpaceFUCHSIA {
28799    pub s_type: StructureType,
28800    pub next: *const c_void,
28801    pub color_space: u32,
28802}
28803
28804impl Default for SysmemColorSpaceFUCHSIA {
28805    #[inline]
28806    fn default() -> Self {
28807        Self {
28808            s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
28809            next: ptr::null(),
28810            color_space: u32::default(),
28811        }
28812    }
28813}
28814
28815unsafe impl Send for SysmemColorSpaceFUCHSIA {}
28816unsafe impl Sync for SysmemColorSpaceFUCHSIA {}
28817
28818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCaptureDescriptorDataInfoARM.html>
28819#[repr(C)]
28820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28821pub struct TensorCaptureDescriptorDataInfoARM {
28822    pub s_type: StructureType,
28823    pub next: *const c_void,
28824    pub tensor: TensorARM,
28825}
28826
28827impl Default for TensorCaptureDescriptorDataInfoARM {
28828    #[inline]
28829    fn default() -> Self {
28830        Self {
28831            s_type: StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
28832            next: ptr::null(),
28833            tensor: TensorARM::default(),
28834        }
28835    }
28836}
28837
28838unsafe impl Send for TensorCaptureDescriptorDataInfoARM {}
28839unsafe impl Sync for TensorCaptureDescriptorDataInfoARM {}
28840
28841/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCopyARM.html>
28842#[repr(C)]
28843#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28844pub struct TensorCopyARM {
28845    pub s_type: StructureType,
28846    pub next: *const c_void,
28847    pub dimension_count: u32,
28848    pub src_offset: *const u64,
28849    pub dst_offset: *const u64,
28850    pub extent: *const u64,
28851}
28852
28853impl Default for TensorCopyARM {
28854    #[inline]
28855    fn default() -> Self {
28856        Self {
28857            s_type: StructureType::TENSOR_COPY_ARM,
28858            next: ptr::null(),
28859            dimension_count: u32::default(),
28860            src_offset: ptr::null(),
28861            dst_offset: ptr::null(),
28862            extent: ptr::null(),
28863        }
28864    }
28865}
28866
28867unsafe impl Send for TensorCopyARM {}
28868unsafe impl Sync for TensorCopyARM {}
28869
28870/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCreateInfoARM.html>
28871#[repr(C)]
28872#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28873pub struct TensorCreateInfoARM {
28874    pub s_type: StructureType,
28875    pub next: *const c_void,
28876    pub flags: TensorCreateFlagsARM,
28877    pub description: *const TensorDescriptionARM,
28878    pub sharing_mode: SharingMode,
28879    pub queue_family_index_count: u32,
28880    pub queue_family_indices: *const u32,
28881}
28882
28883impl Default for TensorCreateInfoARM {
28884    #[inline]
28885    fn default() -> Self {
28886        Self {
28887            s_type: StructureType::TENSOR_CREATE_INFO_ARM,
28888            next: ptr::null(),
28889            flags: TensorCreateFlagsARM::default(),
28890            description: ptr::null(),
28891            sharing_mode: SharingMode::default(),
28892            queue_family_index_count: u32::default(),
28893            queue_family_indices: ptr::null(),
28894        }
28895    }
28896}
28897
28898unsafe impl Send for TensorCreateInfoARM {}
28899unsafe impl Sync for TensorCreateInfoARM {}
28900
28901/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDependencyInfoARM.html>
28902#[repr(C)]
28903#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28904pub struct TensorDependencyInfoARM {
28905    pub s_type: StructureType,
28906    pub next: *const c_void,
28907    pub tensor_memory_barrier_count: u32,
28908    pub tensor_memory_barriers: *const TensorMemoryBarrierARM,
28909}
28910
28911impl Default for TensorDependencyInfoARM {
28912    #[inline]
28913    fn default() -> Self {
28914        Self {
28915            s_type: StructureType::TENSOR_DEPENDENCY_INFO_ARM,
28916            next: ptr::null(),
28917            tensor_memory_barrier_count: u32::default(),
28918            tensor_memory_barriers: ptr::null(),
28919        }
28920    }
28921}
28922
28923unsafe impl Send for TensorDependencyInfoARM {}
28924unsafe impl Sync for TensorDependencyInfoARM {}
28925
28926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDescriptionARM.html>
28927#[repr(C)]
28928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28929pub struct TensorDescriptionARM {
28930    pub s_type: StructureType,
28931    pub next: *const c_void,
28932    pub tiling: TensorTilingARM,
28933    pub format: Format,
28934    pub dimension_count: u32,
28935    pub dimensions: *const i64,
28936    pub strides: *const i64,
28937    pub usage: TensorUsageFlagsARM,
28938}
28939
28940impl Default for TensorDescriptionARM {
28941    #[inline]
28942    fn default() -> Self {
28943        Self {
28944            s_type: StructureType::TENSOR_DESCRIPTION_ARM,
28945            next: ptr::null(),
28946            tiling: TensorTilingARM::default(),
28947            format: Format::default(),
28948            dimension_count: u32::default(),
28949            dimensions: ptr::null(),
28950            strides: ptr::null(),
28951            usage: TensorUsageFlagsARM::default(),
28952        }
28953    }
28954}
28955
28956unsafe impl Send for TensorDescriptionARM {}
28957unsafe impl Sync for TensorDescriptionARM {}
28958
28959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorFormatPropertiesARM.html>
28960#[repr(C)]
28961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28962pub struct TensorFormatPropertiesARM {
28963    pub s_type: StructureType,
28964    pub next: *const c_void,
28965    pub optimal_tiling_tensor_features: FormatFeatureFlags2,
28966    pub linear_tiling_tensor_features: FormatFeatureFlags2,
28967}
28968
28969impl Default for TensorFormatPropertiesARM {
28970    #[inline]
28971    fn default() -> Self {
28972        Self {
28973            s_type: StructureType::TENSOR_FORMAT_PROPERTIES_ARM,
28974            next: ptr::null(),
28975            optimal_tiling_tensor_features: FormatFeatureFlags2::default(),
28976            linear_tiling_tensor_features: FormatFeatureFlags2::default(),
28977        }
28978    }
28979}
28980
28981unsafe impl Send for TensorFormatPropertiesARM {}
28982unsafe impl Sync for TensorFormatPropertiesARM {}
28983
28984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryBarrierARM.html>
28985#[repr(C)]
28986#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28987pub struct TensorMemoryBarrierARM {
28988    pub s_type: StructureType,
28989    pub next: *const c_void,
28990    pub src_stage_mask: PipelineStageFlags2,
28991    pub src_access_mask: AccessFlags2,
28992    pub dst_stage_mask: PipelineStageFlags2,
28993    pub dst_access_mask: AccessFlags2,
28994    pub src_queue_family_index: u32,
28995    pub dst_queue_family_index: u32,
28996    pub tensor: TensorARM,
28997}
28998
28999impl Default for TensorMemoryBarrierARM {
29000    #[inline]
29001    fn default() -> Self {
29002        Self {
29003            s_type: StructureType::TENSOR_MEMORY_BARRIER_ARM,
29004            next: ptr::null(),
29005            src_stage_mask: PipelineStageFlags2::default(),
29006            src_access_mask: AccessFlags2::default(),
29007            dst_stage_mask: PipelineStageFlags2::default(),
29008            dst_access_mask: AccessFlags2::default(),
29009            src_queue_family_index: u32::default(),
29010            dst_queue_family_index: u32::default(),
29011            tensor: TensorARM::default(),
29012        }
29013    }
29014}
29015
29016unsafe impl Send for TensorMemoryBarrierARM {}
29017unsafe impl Sync for TensorMemoryBarrierARM {}
29018
29019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryRequirementsInfoARM.html>
29020#[repr(C)]
29021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29022pub struct TensorMemoryRequirementsInfoARM {
29023    pub s_type: StructureType,
29024    pub next: *const c_void,
29025    pub tensor: TensorARM,
29026}
29027
29028impl Default for TensorMemoryRequirementsInfoARM {
29029    #[inline]
29030    fn default() -> Self {
29031        Self {
29032            s_type: StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM,
29033            next: ptr::null(),
29034            tensor: TensorARM::default(),
29035        }
29036    }
29037}
29038
29039unsafe impl Send for TensorMemoryRequirementsInfoARM {}
29040unsafe impl Sync for TensorMemoryRequirementsInfoARM {}
29041
29042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCaptureDescriptorDataInfoARM.html>
29043#[repr(C)]
29044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29045pub struct TensorViewCaptureDescriptorDataInfoARM {
29046    pub s_type: StructureType,
29047    pub next: *const c_void,
29048    pub tensor_view: TensorViewARM,
29049}
29050
29051impl Default for TensorViewCaptureDescriptorDataInfoARM {
29052    #[inline]
29053    fn default() -> Self {
29054        Self {
29055            s_type: StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
29056            next: ptr::null(),
29057            tensor_view: TensorViewARM::default(),
29058        }
29059    }
29060}
29061
29062unsafe impl Send for TensorViewCaptureDescriptorDataInfoARM {}
29063unsafe impl Sync for TensorViewCaptureDescriptorDataInfoARM {}
29064
29065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCreateInfoARM.html>
29066#[repr(C)]
29067#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29068pub struct TensorViewCreateInfoARM {
29069    pub s_type: StructureType,
29070    pub next: *const c_void,
29071    pub flags: TensorViewCreateFlagsARM,
29072    pub tensor: TensorARM,
29073    pub format: Format,
29074}
29075
29076impl Default for TensorViewCreateInfoARM {
29077    #[inline]
29078    fn default() -> Self {
29079        Self {
29080            s_type: StructureType::TENSOR_VIEW_CREATE_INFO_ARM,
29081            next: ptr::null(),
29082            flags: TensorViewCreateFlagsARM::default(),
29083            tensor: TensorARM::default(),
29084            format: Format::default(),
29085        }
29086    }
29087}
29088
29089unsafe impl Send for TensorViewCreateInfoARM {}
29090unsafe impl Sync for TensorViewCreateInfoARM {}
29091
29092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html>
29093#[repr(C)]
29094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29095pub struct TextureLODGatherFormatPropertiesAMD {
29096    pub s_type: StructureType,
29097    pub next: *mut c_void,
29098    pub supports_texture_gather_lod_bias_amd: Bool32,
29099}
29100
29101impl Default for TextureLODGatherFormatPropertiesAMD {
29102    #[inline]
29103    fn default() -> Self {
29104        Self {
29105            s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
29106            next: ptr::null_mut(),
29107            supports_texture_gather_lod_bias_amd: Bool32::default(),
29108        }
29109    }
29110}
29111
29112unsafe impl Send for TextureLODGatherFormatPropertiesAMD {}
29113unsafe impl Sync for TextureLODGatherFormatPropertiesAMD {}
29114
29115/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryBindInfoQCOM.html>
29116#[repr(C)]
29117#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29118pub struct TileMemoryBindInfoQCOM {
29119    pub s_type: StructureType,
29120    pub next: *const c_void,
29121    pub memory: DeviceMemory,
29122}
29123
29124impl Default for TileMemoryBindInfoQCOM {
29125    #[inline]
29126    fn default() -> Self {
29127        Self {
29128            s_type: StructureType::TILE_MEMORY_BIND_INFO_QCOM,
29129            next: ptr::null(),
29130            memory: DeviceMemory::default(),
29131        }
29132    }
29133}
29134
29135unsafe impl Send for TileMemoryBindInfoQCOM {}
29136unsafe impl Sync for TileMemoryBindInfoQCOM {}
29137
29138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryRequirementsQCOM.html>
29139#[repr(C)]
29140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29141pub struct TileMemoryRequirementsQCOM {
29142    pub s_type: StructureType,
29143    pub next: *mut c_void,
29144    pub size: DeviceSize,
29145    pub alignment: DeviceSize,
29146}
29147
29148impl Default for TileMemoryRequirementsQCOM {
29149    #[inline]
29150    fn default() -> Self {
29151        Self {
29152            s_type: StructureType::TILE_MEMORY_REQUIREMENTS_QCOM,
29153            next: ptr::null_mut(),
29154            size: DeviceSize::default(),
29155            alignment: DeviceSize::default(),
29156        }
29157    }
29158}
29159
29160unsafe impl Send for TileMemoryRequirementsQCOM {}
29161unsafe impl Sync for TileMemoryRequirementsQCOM {}
29162
29163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemorySizeInfoQCOM.html>
29164#[repr(C)]
29165#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29166pub struct TileMemorySizeInfoQCOM {
29167    pub s_type: StructureType,
29168    pub next: *const c_void,
29169    pub size: DeviceSize,
29170}
29171
29172impl Default for TileMemorySizeInfoQCOM {
29173    #[inline]
29174    fn default() -> Self {
29175        Self {
29176            s_type: StructureType::TILE_MEMORY_SIZE_INFO_QCOM,
29177            next: ptr::null(),
29178            size: DeviceSize::default(),
29179        }
29180    }
29181}
29182
29183unsafe impl Send for TileMemorySizeInfoQCOM {}
29184unsafe impl Sync for TileMemorySizeInfoQCOM {}
29185
29186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html>
29187#[repr(C)]
29188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29189pub struct TilePropertiesQCOM {
29190    pub s_type: StructureType,
29191    pub next: *mut c_void,
29192    pub tile_size: Extent3D,
29193    pub apron_size: Extent2D,
29194    pub origin: Offset2D,
29195}
29196
29197impl Default for TilePropertiesQCOM {
29198    #[inline]
29199    fn default() -> Self {
29200        Self {
29201            s_type: StructureType::TILE_PROPERTIES_QCOM,
29202            next: ptr::null_mut(),
29203            tile_size: Extent3D::default(),
29204            apron_size: Extent2D::default(),
29205            origin: Offset2D::default(),
29206        }
29207    }
29208}
29209
29210unsafe impl Send for TilePropertiesQCOM {}
29211unsafe impl Sync for TilePropertiesQCOM {}
29212
29213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html>
29214#[repr(C)]
29215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29216pub struct TimelineSemaphoreSubmitInfo {
29217    pub s_type: StructureType,
29218    pub next: *const c_void,
29219    pub wait_semaphore_value_count: u32,
29220    pub wait_semaphore_values: *const u64,
29221    pub signal_semaphore_value_count: u32,
29222    pub signal_semaphore_values: *const u64,
29223}
29224
29225impl Default for TimelineSemaphoreSubmitInfo {
29226    #[inline]
29227    fn default() -> Self {
29228        Self {
29229            s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
29230            next: ptr::null(),
29231            wait_semaphore_value_count: u32::default(),
29232            wait_semaphore_values: ptr::null(),
29233            signal_semaphore_value_count: u32::default(),
29234            signal_semaphore_values: ptr::null(),
29235        }
29236    }
29237}
29238
29239unsafe impl Send for TimelineSemaphoreSubmitInfo {}
29240unsafe impl Sync for TimelineSemaphoreSubmitInfo {}
29241
29242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html>
29243#[repr(C)]
29244#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29245pub struct TraceRaysIndirectCommand2KHR {
29246    pub raygen_shader_record_address: DeviceAddress,
29247    pub raygen_shader_record_size: DeviceSize,
29248    pub miss_shader_binding_table_address: DeviceAddress,
29249    pub miss_shader_binding_table_size: DeviceSize,
29250    pub miss_shader_binding_table_stride: DeviceSize,
29251    pub hit_shader_binding_table_address: DeviceAddress,
29252    pub hit_shader_binding_table_size: DeviceSize,
29253    pub hit_shader_binding_table_stride: DeviceSize,
29254    pub callable_shader_binding_table_address: DeviceAddress,
29255    pub callable_shader_binding_table_size: DeviceSize,
29256    pub callable_shader_binding_table_stride: DeviceSize,
29257    pub width: u32,
29258    pub height: u32,
29259    pub depth: u32,
29260}
29261
29262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html>
29263#[repr(C)]
29264#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29265pub struct TraceRaysIndirectCommandKHR {
29266    pub width: u32,
29267    pub height: u32,
29268    pub depth: u32,
29269}
29270
29271/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html>
29272#[repr(C)]
29273#[derive(Copy, Clone, Default, Debug, PartialEq)]
29274pub struct TransformMatrixKHR {
29275    pub matrix: [[f32; 4]; 3],
29276}
29277
29278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html>
29279#[repr(C)]
29280#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29281pub struct ValidationCacheCreateInfoEXT {
29282    pub s_type: StructureType,
29283    pub next: *const c_void,
29284    pub flags: ValidationCacheCreateFlagsEXT,
29285    pub initial_data_size: usize,
29286    pub initial_data: *const c_void,
29287}
29288
29289impl Default for ValidationCacheCreateInfoEXT {
29290    #[inline]
29291    fn default() -> Self {
29292        Self {
29293            s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
29294            next: ptr::null(),
29295            flags: ValidationCacheCreateFlagsEXT::default(),
29296            initial_data_size: usize::default(),
29297            initial_data: ptr::null(),
29298        }
29299    }
29300}
29301
29302unsafe impl Send for ValidationCacheCreateInfoEXT {}
29303unsafe impl Sync for ValidationCacheCreateInfoEXT {}
29304
29305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html>
29306#[repr(C)]
29307#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29308pub struct ValidationFeaturesEXT {
29309    pub s_type: StructureType,
29310    pub next: *const c_void,
29311    pub enabled_validation_feature_count: u32,
29312    pub enabled_validation_features: *const ValidationFeatureEnableEXT,
29313    pub disabled_validation_feature_count: u32,
29314    pub disabled_validation_features: *const ValidationFeatureDisableEXT,
29315}
29316
29317impl Default for ValidationFeaturesEXT {
29318    #[inline]
29319    fn default() -> Self {
29320        Self {
29321            s_type: StructureType::VALIDATION_FEATURES_EXT,
29322            next: ptr::null(),
29323            enabled_validation_feature_count: u32::default(),
29324            enabled_validation_features: ptr::null(),
29325            disabled_validation_feature_count: u32::default(),
29326            disabled_validation_features: ptr::null(),
29327        }
29328    }
29329}
29330
29331unsafe impl Send for ValidationFeaturesEXT {}
29332unsafe impl Sync for ValidationFeaturesEXT {}
29333
29334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html>
29335#[repr(C)]
29336#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29337pub struct ValidationFlagsEXT {
29338    pub s_type: StructureType,
29339    pub next: *const c_void,
29340    pub disabled_validation_check_count: u32,
29341    pub disabled_validation_checks: *const ValidationCheckEXT,
29342}
29343
29344impl Default for ValidationFlagsEXT {
29345    #[inline]
29346    fn default() -> Self {
29347        Self {
29348            s_type: StructureType::VALIDATION_FLAGS_EXT,
29349            next: ptr::null(),
29350            disabled_validation_check_count: u32::default(),
29351            disabled_validation_checks: ptr::null(),
29352        }
29353    }
29354}
29355
29356unsafe impl Send for ValidationFlagsEXT {}
29357unsafe impl Sync for ValidationFlagsEXT {}
29358
29359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html>
29360#[repr(C)]
29361#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29362pub struct VertexInputAttributeDescription {
29363    pub location: u32,
29364    pub binding: u32,
29365    pub format: Format,
29366    pub offset: u32,
29367}
29368
29369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html>
29370#[repr(C)]
29371#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29372pub struct VertexInputAttributeDescription2EXT {
29373    pub s_type: StructureType,
29374    pub next: *mut c_void,
29375    pub location: u32,
29376    pub binding: u32,
29377    pub format: Format,
29378    pub offset: u32,
29379}
29380
29381impl Default for VertexInputAttributeDescription2EXT {
29382    #[inline]
29383    fn default() -> Self {
29384        Self {
29385            s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
29386            next: ptr::null_mut(),
29387            location: u32::default(),
29388            binding: u32::default(),
29389            format: Format::default(),
29390            offset: u32::default(),
29391        }
29392    }
29393}
29394
29395unsafe impl Send for VertexInputAttributeDescription2EXT {}
29396unsafe impl Sync for VertexInputAttributeDescription2EXT {}
29397
29398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html>
29399#[repr(C)]
29400#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29401pub struct VertexInputBindingDescription {
29402    pub binding: u32,
29403    pub stride: u32,
29404    pub input_rate: VertexInputRate,
29405}
29406
29407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html>
29408#[repr(C)]
29409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29410pub struct VertexInputBindingDescription2EXT {
29411    pub s_type: StructureType,
29412    pub next: *mut c_void,
29413    pub binding: u32,
29414    pub stride: u32,
29415    pub input_rate: VertexInputRate,
29416    pub divisor: u32,
29417}
29418
29419impl Default for VertexInputBindingDescription2EXT {
29420    #[inline]
29421    fn default() -> Self {
29422        Self {
29423            s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
29424            next: ptr::null_mut(),
29425            binding: u32::default(),
29426            stride: u32::default(),
29427            input_rate: VertexInputRate::default(),
29428            divisor: u32::default(),
29429        }
29430    }
29431}
29432
29433unsafe impl Send for VertexInputBindingDescription2EXT {}
29434unsafe impl Sync for VertexInputBindingDescription2EXT {}
29435
29436/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html>
29437#[repr(C)]
29438#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29439pub struct VertexInputBindingDivisorDescription {
29440    pub binding: u32,
29441    pub divisor: u32,
29442}
29443
29444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html>
29445#[repr(C)]
29446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29447pub struct ViSurfaceCreateInfoNN {
29448    pub s_type: StructureType,
29449    pub next: *const c_void,
29450    pub flags: ViSurfaceCreateFlagsNN,
29451    pub window: *mut c_void,
29452}
29453
29454impl Default for ViSurfaceCreateInfoNN {
29455    #[inline]
29456    fn default() -> Self {
29457        Self {
29458            s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
29459            next: ptr::null(),
29460            flags: ViSurfaceCreateFlagsNN::default(),
29461            window: ptr::null_mut(),
29462        }
29463    }
29464}
29465
29466unsafe impl Send for ViSurfaceCreateInfoNN {}
29467unsafe impl Sync for ViSurfaceCreateInfoNN {}
29468
29469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html>
29470#[repr(C)]
29471#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29472pub struct VideoBeginCodingInfoKHR {
29473    pub s_type: StructureType,
29474    pub next: *const c_void,
29475    pub flags: VideoBeginCodingFlagsKHR,
29476    pub video_session: VideoSessionKHR,
29477    pub video_session_parameters: VideoSessionParametersKHR,
29478    pub reference_slot_count: u32,
29479    pub reference_slots: *const VideoReferenceSlotInfoKHR,
29480}
29481
29482impl Default for VideoBeginCodingInfoKHR {
29483    #[inline]
29484    fn default() -> Self {
29485        Self {
29486            s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
29487            next: ptr::null(),
29488            flags: VideoBeginCodingFlagsKHR::default(),
29489            video_session: VideoSessionKHR::default(),
29490            video_session_parameters: VideoSessionParametersKHR::default(),
29491            reference_slot_count: u32::default(),
29492            reference_slots: ptr::null(),
29493        }
29494    }
29495}
29496
29497unsafe impl Send for VideoBeginCodingInfoKHR {}
29498unsafe impl Sync for VideoBeginCodingInfoKHR {}
29499
29500/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html>
29501#[repr(C)]
29502#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29503pub struct VideoCapabilitiesKHR {
29504    pub s_type: StructureType,
29505    pub next: *mut c_void,
29506    pub flags: VideoCapabilityFlagsKHR,
29507    pub min_bitstream_buffer_offset_alignment: DeviceSize,
29508    pub min_bitstream_buffer_size_alignment: DeviceSize,
29509    pub picture_access_granularity: Extent2D,
29510    pub min_coded_extent: Extent2D,
29511    pub max_coded_extent: Extent2D,
29512    pub max_dpb_slots: u32,
29513    pub max_active_reference_pictures: u32,
29514    pub std_header_version: ExtensionProperties,
29515}
29516
29517impl Default for VideoCapabilitiesKHR {
29518    #[inline]
29519    fn default() -> Self {
29520        Self {
29521            s_type: StructureType::VIDEO_CAPABILITIES_KHR,
29522            next: ptr::null_mut(),
29523            flags: VideoCapabilityFlagsKHR::default(),
29524            min_bitstream_buffer_offset_alignment: DeviceSize::default(),
29525            min_bitstream_buffer_size_alignment: DeviceSize::default(),
29526            picture_access_granularity: Extent2D::default(),
29527            min_coded_extent: Extent2D::default(),
29528            max_coded_extent: Extent2D::default(),
29529            max_dpb_slots: u32::default(),
29530            max_active_reference_pictures: u32::default(),
29531            std_header_version: ExtensionProperties::default(),
29532        }
29533    }
29534}
29535
29536unsafe impl Send for VideoCapabilitiesKHR {}
29537unsafe impl Sync for VideoCapabilitiesKHR {}
29538
29539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html>
29540#[repr(C)]
29541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29542pub struct VideoCodingControlInfoKHR {
29543    pub s_type: StructureType,
29544    pub next: *const c_void,
29545    pub flags: VideoCodingControlFlagsKHR,
29546}
29547
29548impl Default for VideoCodingControlInfoKHR {
29549    #[inline]
29550    fn default() -> Self {
29551        Self {
29552            s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
29553            next: ptr::null(),
29554            flags: VideoCodingControlFlagsKHR::default(),
29555        }
29556    }
29557}
29558
29559unsafe impl Send for VideoCodingControlInfoKHR {}
29560unsafe impl Sync for VideoCodingControlInfoKHR {}
29561
29562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html>
29563#[repr(C)]
29564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29565pub struct VideoDecodeAV1CapabilitiesKHR {
29566    pub s_type: StructureType,
29567    pub next: *mut c_void,
29568    pub max_level: video::StdVideoAV1Level,
29569}
29570
29571impl Default for VideoDecodeAV1CapabilitiesKHR {
29572    #[inline]
29573    fn default() -> Self {
29574        Self {
29575            s_type: StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR,
29576            next: ptr::null_mut(),
29577            max_level: video::StdVideoAV1Level::default(),
29578        }
29579    }
29580}
29581
29582unsafe impl Send for VideoDecodeAV1CapabilitiesKHR {}
29583unsafe impl Sync for VideoDecodeAV1CapabilitiesKHR {}
29584
29585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html>
29586#[repr(C)]
29587#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29588pub struct VideoDecodeAV1DpbSlotInfoKHR {
29589    pub s_type: StructureType,
29590    pub next: *const c_void,
29591    pub std_reference_info: *const video::StdVideoDecodeAV1ReferenceInfo,
29592}
29593
29594impl Default for VideoDecodeAV1DpbSlotInfoKHR {
29595    #[inline]
29596    fn default() -> Self {
29597        Self {
29598            s_type: StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR,
29599            next: ptr::null(),
29600            std_reference_info: ptr::null(),
29601        }
29602    }
29603}
29604
29605unsafe impl Send for VideoDecodeAV1DpbSlotInfoKHR {}
29606unsafe impl Sync for VideoDecodeAV1DpbSlotInfoKHR {}
29607
29608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html>
29609#[repr(C)]
29610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29611pub struct VideoDecodeAV1InlineSessionParametersInfoKHR {
29612    pub s_type: StructureType,
29613    pub next: *const c_void,
29614    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
29615}
29616
29617impl Default for VideoDecodeAV1InlineSessionParametersInfoKHR {
29618    #[inline]
29619    fn default() -> Self {
29620        Self {
29621            s_type: StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR,
29622            next: ptr::null(),
29623            std_sequence_header: ptr::null(),
29624        }
29625    }
29626}
29627
29628unsafe impl Send for VideoDecodeAV1InlineSessionParametersInfoKHR {}
29629unsafe impl Sync for VideoDecodeAV1InlineSessionParametersInfoKHR {}
29630
29631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html>
29632#[repr(C)]
29633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29634pub struct VideoDecodeAV1PictureInfoKHR {
29635    pub s_type: StructureType,
29636    pub next: *const c_void,
29637    pub std_picture_info: *const video::StdVideoDecodeAV1PictureInfo,
29638    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
29639    pub frame_header_offset: u32,
29640    pub tile_count: u32,
29641    pub tile_offsets: *const u32,
29642    pub tile_sizes: *const u32,
29643}
29644
29645impl Default for VideoDecodeAV1PictureInfoKHR {
29646    #[inline]
29647    fn default() -> Self {
29648        Self {
29649            s_type: StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR,
29650            next: ptr::null(),
29651            std_picture_info: ptr::null(),
29652            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
29653            frame_header_offset: u32::default(),
29654            tile_count: u32::default(),
29655            tile_offsets: ptr::null(),
29656            tile_sizes: ptr::null(),
29657        }
29658    }
29659}
29660
29661unsafe impl Send for VideoDecodeAV1PictureInfoKHR {}
29662unsafe impl Sync for VideoDecodeAV1PictureInfoKHR {}
29663
29664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html>
29665#[repr(C)]
29666#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29667pub struct VideoDecodeAV1ProfileInfoKHR {
29668    pub s_type: StructureType,
29669    pub next: *const c_void,
29670    pub std_profile: video::StdVideoAV1Profile,
29671    pub film_grain_support: Bool32,
29672}
29673
29674impl Default for VideoDecodeAV1ProfileInfoKHR {
29675    #[inline]
29676    fn default() -> Self {
29677        Self {
29678            s_type: StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR,
29679            next: ptr::null(),
29680            std_profile: video::StdVideoAV1Profile::default(),
29681            film_grain_support: Bool32::default(),
29682        }
29683    }
29684}
29685
29686unsafe impl Send for VideoDecodeAV1ProfileInfoKHR {}
29687unsafe impl Sync for VideoDecodeAV1ProfileInfoKHR {}
29688
29689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html>
29690#[repr(C)]
29691#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29692pub struct VideoDecodeAV1SessionParametersCreateInfoKHR {
29693    pub s_type: StructureType,
29694    pub next: *const c_void,
29695    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
29696}
29697
29698impl Default for VideoDecodeAV1SessionParametersCreateInfoKHR {
29699    #[inline]
29700    fn default() -> Self {
29701        Self {
29702            s_type: StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
29703            next: ptr::null(),
29704            std_sequence_header: ptr::null(),
29705        }
29706    }
29707}
29708
29709unsafe impl Send for VideoDecodeAV1SessionParametersCreateInfoKHR {}
29710unsafe impl Sync for VideoDecodeAV1SessionParametersCreateInfoKHR {}
29711
29712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html>
29713#[repr(C)]
29714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29715pub struct VideoDecodeCapabilitiesKHR {
29716    pub s_type: StructureType,
29717    pub next: *mut c_void,
29718    pub flags: VideoDecodeCapabilityFlagsKHR,
29719}
29720
29721impl Default for VideoDecodeCapabilitiesKHR {
29722    #[inline]
29723    fn default() -> Self {
29724        Self {
29725            s_type: StructureType::VIDEO_DECODE_CAPABILITIES_KHR,
29726            next: ptr::null_mut(),
29727            flags: VideoDecodeCapabilityFlagsKHR::default(),
29728        }
29729    }
29730}
29731
29732unsafe impl Send for VideoDecodeCapabilitiesKHR {}
29733unsafe impl Sync for VideoDecodeCapabilitiesKHR {}
29734
29735/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html>
29736#[repr(C)]
29737#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29738pub struct VideoDecodeH264CapabilitiesKHR {
29739    pub s_type: StructureType,
29740    pub next: *mut c_void,
29741    pub max_level_idc: video::StdVideoH264LevelIdc,
29742    pub field_offset_granularity: Offset2D,
29743}
29744
29745impl Default for VideoDecodeH264CapabilitiesKHR {
29746    #[inline]
29747    fn default() -> Self {
29748        Self {
29749            s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR,
29750            next: ptr::null_mut(),
29751            max_level_idc: video::StdVideoH264LevelIdc::default(),
29752            field_offset_granularity: Offset2D::default(),
29753        }
29754    }
29755}
29756
29757unsafe impl Send for VideoDecodeH264CapabilitiesKHR {}
29758unsafe impl Sync for VideoDecodeH264CapabilitiesKHR {}
29759
29760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html>
29761#[repr(C)]
29762#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29763pub struct VideoDecodeH264DpbSlotInfoKHR {
29764    pub s_type: StructureType,
29765    pub next: *const c_void,
29766    pub std_reference_info: *const video::StdVideoDecodeH264ReferenceInfo,
29767}
29768
29769impl Default for VideoDecodeH264DpbSlotInfoKHR {
29770    #[inline]
29771    fn default() -> Self {
29772        Self {
29773            s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR,
29774            next: ptr::null(),
29775            std_reference_info: ptr::null(),
29776        }
29777    }
29778}
29779
29780unsafe impl Send for VideoDecodeH264DpbSlotInfoKHR {}
29781unsafe impl Sync for VideoDecodeH264DpbSlotInfoKHR {}
29782
29783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html>
29784#[repr(C)]
29785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29786pub struct VideoDecodeH264InlineSessionParametersInfoKHR {
29787    pub s_type: StructureType,
29788    pub next: *const c_void,
29789    pub std_sps: *const video::StdVideoH264SequenceParameterSet,
29790    pub std_pps: *const video::StdVideoH264PictureParameterSet,
29791}
29792
29793impl Default for VideoDecodeH264InlineSessionParametersInfoKHR {
29794    #[inline]
29795    fn default() -> Self {
29796        Self {
29797            s_type: StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR,
29798            next: ptr::null(),
29799            std_sps: ptr::null(),
29800            std_pps: ptr::null(),
29801        }
29802    }
29803}
29804
29805unsafe impl Send for VideoDecodeH264InlineSessionParametersInfoKHR {}
29806unsafe impl Sync for VideoDecodeH264InlineSessionParametersInfoKHR {}
29807
29808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html>
29809#[repr(C)]
29810#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29811pub struct VideoDecodeH264PictureInfoKHR {
29812    pub s_type: StructureType,
29813    pub next: *const c_void,
29814    pub std_picture_info: *const video::StdVideoDecodeH264PictureInfo,
29815    pub slice_count: u32,
29816    pub slice_offsets: *const u32,
29817}
29818
29819impl Default for VideoDecodeH264PictureInfoKHR {
29820    #[inline]
29821    fn default() -> Self {
29822        Self {
29823            s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR,
29824            next: ptr::null(),
29825            std_picture_info: ptr::null(),
29826            slice_count: u32::default(),
29827            slice_offsets: ptr::null(),
29828        }
29829    }
29830}
29831
29832unsafe impl Send for VideoDecodeH264PictureInfoKHR {}
29833unsafe impl Sync for VideoDecodeH264PictureInfoKHR {}
29834
29835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html>
29836#[repr(C)]
29837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29838pub struct VideoDecodeH264ProfileInfoKHR {
29839    pub s_type: StructureType,
29840    pub next: *const c_void,
29841    pub std_profile_idc: video::StdVideoH264ProfileIdc,
29842    pub picture_layout: VideoDecodeH264PictureLayoutFlagsKHR,
29843}
29844
29845impl Default for VideoDecodeH264ProfileInfoKHR {
29846    #[inline]
29847    fn default() -> Self {
29848        Self {
29849            s_type: StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR,
29850            next: ptr::null(),
29851            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
29852            picture_layout: VideoDecodeH264PictureLayoutFlagsKHR::default(),
29853        }
29854    }
29855}
29856
29857unsafe impl Send for VideoDecodeH264ProfileInfoKHR {}
29858unsafe impl Sync for VideoDecodeH264ProfileInfoKHR {}
29859
29860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html>
29861#[repr(C)]
29862#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29863pub struct VideoDecodeH264SessionParametersAddInfoKHR {
29864    pub s_type: StructureType,
29865    pub next: *const c_void,
29866    pub std_sps_count: u32,
29867    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
29868    pub std_pps_count: u32,
29869    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
29870}
29871
29872impl Default for VideoDecodeH264SessionParametersAddInfoKHR {
29873    #[inline]
29874    fn default() -> Self {
29875        Self {
29876            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
29877            next: ptr::null(),
29878            std_sps_count: u32::default(),
29879            std_sp_ss: ptr::null(),
29880            std_pps_count: u32::default(),
29881            std_pp_ss: ptr::null(),
29882        }
29883    }
29884}
29885
29886unsafe impl Send for VideoDecodeH264SessionParametersAddInfoKHR {}
29887unsafe impl Sync for VideoDecodeH264SessionParametersAddInfoKHR {}
29888
29889/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html>
29890#[repr(C)]
29891#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29892pub struct VideoDecodeH264SessionParametersCreateInfoKHR {
29893    pub s_type: StructureType,
29894    pub next: *const c_void,
29895    pub max_std_sps_count: u32,
29896    pub max_std_pps_count: u32,
29897    pub parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoKHR,
29898}
29899
29900impl Default for VideoDecodeH264SessionParametersCreateInfoKHR {
29901    #[inline]
29902    fn default() -> Self {
29903        Self {
29904            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
29905            next: ptr::null(),
29906            max_std_sps_count: u32::default(),
29907            max_std_pps_count: u32::default(),
29908            parameters_add_info: ptr::null(),
29909        }
29910    }
29911}
29912
29913unsafe impl Send for VideoDecodeH264SessionParametersCreateInfoKHR {}
29914unsafe impl Sync for VideoDecodeH264SessionParametersCreateInfoKHR {}
29915
29916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html>
29917#[repr(C)]
29918#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29919pub struct VideoDecodeH265CapabilitiesKHR {
29920    pub s_type: StructureType,
29921    pub next: *mut c_void,
29922    pub max_level_idc: video::StdVideoH265LevelIdc,
29923}
29924
29925impl Default for VideoDecodeH265CapabilitiesKHR {
29926    #[inline]
29927    fn default() -> Self {
29928        Self {
29929            s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR,
29930            next: ptr::null_mut(),
29931            max_level_idc: video::StdVideoH265LevelIdc::default(),
29932        }
29933    }
29934}
29935
29936unsafe impl Send for VideoDecodeH265CapabilitiesKHR {}
29937unsafe impl Sync for VideoDecodeH265CapabilitiesKHR {}
29938
29939/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html>
29940#[repr(C)]
29941#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29942pub struct VideoDecodeH265DpbSlotInfoKHR {
29943    pub s_type: StructureType,
29944    pub next: *const c_void,
29945    pub std_reference_info: *const video::StdVideoDecodeH265ReferenceInfo,
29946}
29947
29948impl Default for VideoDecodeH265DpbSlotInfoKHR {
29949    #[inline]
29950    fn default() -> Self {
29951        Self {
29952            s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR,
29953            next: ptr::null(),
29954            std_reference_info: ptr::null(),
29955        }
29956    }
29957}
29958
29959unsafe impl Send for VideoDecodeH265DpbSlotInfoKHR {}
29960unsafe impl Sync for VideoDecodeH265DpbSlotInfoKHR {}
29961
29962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html>
29963#[repr(C)]
29964#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29965pub struct VideoDecodeH265InlineSessionParametersInfoKHR {
29966    pub s_type: StructureType,
29967    pub next: *const c_void,
29968    pub std_vps: *const video::StdVideoH265VideoParameterSet,
29969    pub std_sps: *const video::StdVideoH265SequenceParameterSet,
29970    pub std_pps: *const video::StdVideoH265PictureParameterSet,
29971}
29972
29973impl Default for VideoDecodeH265InlineSessionParametersInfoKHR {
29974    #[inline]
29975    fn default() -> Self {
29976        Self {
29977            s_type: StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR,
29978            next: ptr::null(),
29979            std_vps: ptr::null(),
29980            std_sps: ptr::null(),
29981            std_pps: ptr::null(),
29982        }
29983    }
29984}
29985
29986unsafe impl Send for VideoDecodeH265InlineSessionParametersInfoKHR {}
29987unsafe impl Sync for VideoDecodeH265InlineSessionParametersInfoKHR {}
29988
29989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html>
29990#[repr(C)]
29991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29992pub struct VideoDecodeH265PictureInfoKHR {
29993    pub s_type: StructureType,
29994    pub next: *const c_void,
29995    pub std_picture_info: *const video::StdVideoDecodeH265PictureInfo,
29996    pub slice_segment_count: u32,
29997    pub slice_segment_offsets: *const u32,
29998}
29999
30000impl Default for VideoDecodeH265PictureInfoKHR {
30001    #[inline]
30002    fn default() -> Self {
30003        Self {
30004            s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR,
30005            next: ptr::null(),
30006            std_picture_info: ptr::null(),
30007            slice_segment_count: u32::default(),
30008            slice_segment_offsets: ptr::null(),
30009        }
30010    }
30011}
30012
30013unsafe impl Send for VideoDecodeH265PictureInfoKHR {}
30014unsafe impl Sync for VideoDecodeH265PictureInfoKHR {}
30015
30016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html>
30017#[repr(C)]
30018#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30019pub struct VideoDecodeH265ProfileInfoKHR {
30020    pub s_type: StructureType,
30021    pub next: *const c_void,
30022    pub std_profile_idc: video::StdVideoH265ProfileIdc,
30023}
30024
30025impl Default for VideoDecodeH265ProfileInfoKHR {
30026    #[inline]
30027    fn default() -> Self {
30028        Self {
30029            s_type: StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR,
30030            next: ptr::null(),
30031            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
30032        }
30033    }
30034}
30035
30036unsafe impl Send for VideoDecodeH265ProfileInfoKHR {}
30037unsafe impl Sync for VideoDecodeH265ProfileInfoKHR {}
30038
30039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html>
30040#[repr(C)]
30041#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30042pub struct VideoDecodeH265SessionParametersAddInfoKHR {
30043    pub s_type: StructureType,
30044    pub next: *const c_void,
30045    pub std_vps_count: u32,
30046    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
30047    pub std_sps_count: u32,
30048    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
30049    pub std_pps_count: u32,
30050    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
30051}
30052
30053impl Default for VideoDecodeH265SessionParametersAddInfoKHR {
30054    #[inline]
30055    fn default() -> Self {
30056        Self {
30057            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
30058            next: ptr::null(),
30059            std_vps_count: u32::default(),
30060            std_vp_ss: ptr::null(),
30061            std_sps_count: u32::default(),
30062            std_sp_ss: ptr::null(),
30063            std_pps_count: u32::default(),
30064            std_pp_ss: ptr::null(),
30065        }
30066    }
30067}
30068
30069unsafe impl Send for VideoDecodeH265SessionParametersAddInfoKHR {}
30070unsafe impl Sync for VideoDecodeH265SessionParametersAddInfoKHR {}
30071
30072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html>
30073#[repr(C)]
30074#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30075pub struct VideoDecodeH265SessionParametersCreateInfoKHR {
30076    pub s_type: StructureType,
30077    pub next: *const c_void,
30078    pub max_std_vps_count: u32,
30079    pub max_std_sps_count: u32,
30080    pub max_std_pps_count: u32,
30081    pub parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoKHR,
30082}
30083
30084impl Default for VideoDecodeH265SessionParametersCreateInfoKHR {
30085    #[inline]
30086    fn default() -> Self {
30087        Self {
30088            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
30089            next: ptr::null(),
30090            max_std_vps_count: u32::default(),
30091            max_std_sps_count: u32::default(),
30092            max_std_pps_count: u32::default(),
30093            parameters_add_info: ptr::null(),
30094        }
30095    }
30096}
30097
30098unsafe impl Send for VideoDecodeH265SessionParametersCreateInfoKHR {}
30099unsafe impl Sync for VideoDecodeH265SessionParametersCreateInfoKHR {}
30100
30101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html>
30102#[repr(C)]
30103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30104pub struct VideoDecodeInfoKHR {
30105    pub s_type: StructureType,
30106    pub next: *const c_void,
30107    pub flags: VideoDecodeFlagsKHR,
30108    pub src_buffer: Buffer,
30109    pub src_buffer_offset: DeviceSize,
30110    pub src_buffer_range: DeviceSize,
30111    pub dst_picture_resource: VideoPictureResourceInfoKHR,
30112    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
30113    pub reference_slot_count: u32,
30114    pub reference_slots: *const VideoReferenceSlotInfoKHR,
30115}
30116
30117impl Default for VideoDecodeInfoKHR {
30118    #[inline]
30119    fn default() -> Self {
30120        Self {
30121            s_type: StructureType::VIDEO_DECODE_INFO_KHR,
30122            next: ptr::null(),
30123            flags: VideoDecodeFlagsKHR::default(),
30124            src_buffer: Buffer::default(),
30125            src_buffer_offset: DeviceSize::default(),
30126            src_buffer_range: DeviceSize::default(),
30127            dst_picture_resource: VideoPictureResourceInfoKHR::default(),
30128            setup_reference_slot: ptr::null(),
30129            reference_slot_count: u32::default(),
30130            reference_slots: ptr::null(),
30131        }
30132    }
30133}
30134
30135unsafe impl Send for VideoDecodeInfoKHR {}
30136unsafe impl Sync for VideoDecodeInfoKHR {}
30137
30138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html>
30139#[repr(C)]
30140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30141pub struct VideoDecodeUsageInfoKHR {
30142    pub s_type: StructureType,
30143    pub next: *const c_void,
30144    pub video_usage_hints: VideoDecodeUsageFlagsKHR,
30145}
30146
30147impl Default for VideoDecodeUsageInfoKHR {
30148    #[inline]
30149    fn default() -> Self {
30150        Self {
30151            s_type: StructureType::VIDEO_DECODE_USAGE_INFO_KHR,
30152            next: ptr::null(),
30153            video_usage_hints: VideoDecodeUsageFlagsKHR::default(),
30154        }
30155    }
30156}
30157
30158unsafe impl Send for VideoDecodeUsageInfoKHR {}
30159unsafe impl Sync for VideoDecodeUsageInfoKHR {}
30160
30161/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9CapabilitiesKHR.html>
30162#[repr(C)]
30163#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30164pub struct VideoDecodeVP9CapabilitiesKHR {
30165    pub s_type: StructureType,
30166    pub next: *mut c_void,
30167    pub max_level: video::StdVideoVP9Level,
30168}
30169
30170impl Default for VideoDecodeVP9CapabilitiesKHR {
30171    #[inline]
30172    fn default() -> Self {
30173        Self {
30174            s_type: StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR,
30175            next: ptr::null_mut(),
30176            max_level: video::StdVideoVP9Level::default(),
30177        }
30178    }
30179}
30180
30181unsafe impl Send for VideoDecodeVP9CapabilitiesKHR {}
30182unsafe impl Sync for VideoDecodeVP9CapabilitiesKHR {}
30183
30184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9PictureInfoKHR.html>
30185#[repr(C)]
30186#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30187pub struct VideoDecodeVP9PictureInfoKHR {
30188    pub s_type: StructureType,
30189    pub next: *const c_void,
30190    pub std_picture_info: *const video::StdVideoDecodeVP9PictureInfo,
30191    pub reference_name_slot_indices: [i32; MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
30192    pub uncompressed_header_offset: u32,
30193    pub compressed_header_offset: u32,
30194    pub tiles_offset: u32,
30195}
30196
30197impl Default for VideoDecodeVP9PictureInfoKHR {
30198    #[inline]
30199    fn default() -> Self {
30200        Self {
30201            s_type: StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR,
30202            next: ptr::null(),
30203            std_picture_info: ptr::null(),
30204            reference_name_slot_indices: [i32::default(); MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
30205            uncompressed_header_offset: u32::default(),
30206            compressed_header_offset: u32::default(),
30207            tiles_offset: u32::default(),
30208        }
30209    }
30210}
30211
30212unsafe impl Send for VideoDecodeVP9PictureInfoKHR {}
30213unsafe impl Sync for VideoDecodeVP9PictureInfoKHR {}
30214
30215/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9ProfileInfoKHR.html>
30216#[repr(C)]
30217#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30218pub struct VideoDecodeVP9ProfileInfoKHR {
30219    pub s_type: StructureType,
30220    pub next: *const c_void,
30221    pub std_profile: video::StdVideoVP9Profile,
30222}
30223
30224impl Default for VideoDecodeVP9ProfileInfoKHR {
30225    #[inline]
30226    fn default() -> Self {
30227        Self {
30228            s_type: StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR,
30229            next: ptr::null(),
30230            std_profile: video::StdVideoVP9Profile::default(),
30231        }
30232    }
30233}
30234
30235unsafe impl Send for VideoDecodeVP9ProfileInfoKHR {}
30236unsafe impl Sync for VideoDecodeVP9ProfileInfoKHR {}
30237
30238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html>
30239#[repr(C)]
30240#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30241pub struct VideoEncodeAV1CapabilitiesKHR {
30242    pub s_type: StructureType,
30243    pub next: *mut c_void,
30244    pub flags: VideoEncodeAV1CapabilityFlagsKHR,
30245    pub max_level: video::StdVideoAV1Level,
30246    pub coded_picture_alignment: Extent2D,
30247    pub max_tiles: Extent2D,
30248    pub min_tile_size: Extent2D,
30249    pub max_tile_size: Extent2D,
30250    pub superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
30251    pub max_single_reference_count: u32,
30252    pub single_reference_name_mask: u32,
30253    pub max_unidirectional_compound_reference_count: u32,
30254    pub max_unidirectional_compound_group1_reference_count: u32,
30255    pub unidirectional_compound_reference_name_mask: u32,
30256    pub max_bidirectional_compound_reference_count: u32,
30257    pub max_bidirectional_compound_group1_reference_count: u32,
30258    pub max_bidirectional_compound_group2_reference_count: u32,
30259    pub bidirectional_compound_reference_name_mask: u32,
30260    pub max_temporal_layer_count: u32,
30261    pub max_spatial_layer_count: u32,
30262    pub max_operating_points: u32,
30263    pub min_q_index: u32,
30264    pub max_q_index: u32,
30265    pub prefers_gop_remaining_frames: Bool32,
30266    pub requires_gop_remaining_frames: Bool32,
30267    pub std_syntax_flags: VideoEncodeAV1StdFlagsKHR,
30268}
30269
30270impl Default for VideoEncodeAV1CapabilitiesKHR {
30271    #[inline]
30272    fn default() -> Self {
30273        Self {
30274            s_type: StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR,
30275            next: ptr::null_mut(),
30276            flags: VideoEncodeAV1CapabilityFlagsKHR::default(),
30277            max_level: video::StdVideoAV1Level::default(),
30278            coded_picture_alignment: Extent2D::default(),
30279            max_tiles: Extent2D::default(),
30280            min_tile_size: Extent2D::default(),
30281            max_tile_size: Extent2D::default(),
30282            superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
30283            max_single_reference_count: u32::default(),
30284            single_reference_name_mask: u32::default(),
30285            max_unidirectional_compound_reference_count: u32::default(),
30286            max_unidirectional_compound_group1_reference_count: u32::default(),
30287            unidirectional_compound_reference_name_mask: u32::default(),
30288            max_bidirectional_compound_reference_count: u32::default(),
30289            max_bidirectional_compound_group1_reference_count: u32::default(),
30290            max_bidirectional_compound_group2_reference_count: u32::default(),
30291            bidirectional_compound_reference_name_mask: u32::default(),
30292            max_temporal_layer_count: u32::default(),
30293            max_spatial_layer_count: u32::default(),
30294            max_operating_points: u32::default(),
30295            min_q_index: u32::default(),
30296            max_q_index: u32::default(),
30297            prefers_gop_remaining_frames: Bool32::default(),
30298            requires_gop_remaining_frames: Bool32::default(),
30299            std_syntax_flags: VideoEncodeAV1StdFlagsKHR::default(),
30300        }
30301    }
30302}
30303
30304unsafe impl Send for VideoEncodeAV1CapabilitiesKHR {}
30305unsafe impl Sync for VideoEncodeAV1CapabilitiesKHR {}
30306
30307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html>
30308#[repr(C)]
30309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30310pub struct VideoEncodeAV1DpbSlotInfoKHR {
30311    pub s_type: StructureType,
30312    pub next: *const c_void,
30313    pub std_reference_info: *const video::StdVideoEncodeAV1ReferenceInfo,
30314}
30315
30316impl Default for VideoEncodeAV1DpbSlotInfoKHR {
30317    #[inline]
30318    fn default() -> Self {
30319        Self {
30320            s_type: StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR,
30321            next: ptr::null(),
30322            std_reference_info: ptr::null(),
30323        }
30324    }
30325}
30326
30327unsafe impl Send for VideoEncodeAV1DpbSlotInfoKHR {}
30328unsafe impl Sync for VideoEncodeAV1DpbSlotInfoKHR {}
30329
30330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html>
30331#[repr(C)]
30332#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30333pub struct VideoEncodeAV1FrameSizeKHR {
30334    pub intra_frame_size: u32,
30335    pub predictive_frame_size: u32,
30336    pub bipredictive_frame_size: u32,
30337}
30338
30339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html>
30340#[repr(C)]
30341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30342pub struct VideoEncodeAV1GopRemainingFrameInfoKHR {
30343    pub s_type: StructureType,
30344    pub next: *const c_void,
30345    pub use_gop_remaining_frames: Bool32,
30346    pub gop_remaining_intra: u32,
30347    pub gop_remaining_predictive: u32,
30348    pub gop_remaining_bipredictive: u32,
30349}
30350
30351impl Default for VideoEncodeAV1GopRemainingFrameInfoKHR {
30352    #[inline]
30353    fn default() -> Self {
30354        Self {
30355            s_type: StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR,
30356            next: ptr::null(),
30357            use_gop_remaining_frames: Bool32::default(),
30358            gop_remaining_intra: u32::default(),
30359            gop_remaining_predictive: u32::default(),
30360            gop_remaining_bipredictive: u32::default(),
30361        }
30362    }
30363}
30364
30365unsafe impl Send for VideoEncodeAV1GopRemainingFrameInfoKHR {}
30366unsafe impl Sync for VideoEncodeAV1GopRemainingFrameInfoKHR {}
30367
30368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html>
30369#[repr(C)]
30370#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30371pub struct VideoEncodeAV1PictureInfoKHR {
30372    pub s_type: StructureType,
30373    pub next: *const c_void,
30374    pub prediction_mode: VideoEncodeAV1PredictionModeKHR,
30375    pub rate_control_group: VideoEncodeAV1RateControlGroupKHR,
30376    pub constant_q_index: u32,
30377    pub std_picture_info: *const video::StdVideoEncodeAV1PictureInfo,
30378    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30379    pub primary_reference_cdf_only: Bool32,
30380    pub generate_obu_extension_header: Bool32,
30381}
30382
30383impl Default for VideoEncodeAV1PictureInfoKHR {
30384    #[inline]
30385    fn default() -> Self {
30386        Self {
30387            s_type: StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR,
30388            next: ptr::null(),
30389            prediction_mode: VideoEncodeAV1PredictionModeKHR::default(),
30390            rate_control_group: VideoEncodeAV1RateControlGroupKHR::default(),
30391            constant_q_index: u32::default(),
30392            std_picture_info: ptr::null(),
30393            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
30394            primary_reference_cdf_only: Bool32::default(),
30395            generate_obu_extension_header: Bool32::default(),
30396        }
30397    }
30398}
30399
30400unsafe impl Send for VideoEncodeAV1PictureInfoKHR {}
30401unsafe impl Sync for VideoEncodeAV1PictureInfoKHR {}
30402
30403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html>
30404#[repr(C)]
30405#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30406pub struct VideoEncodeAV1ProfileInfoKHR {
30407    pub s_type: StructureType,
30408    pub next: *const c_void,
30409    pub std_profile: video::StdVideoAV1Profile,
30410}
30411
30412impl Default for VideoEncodeAV1ProfileInfoKHR {
30413    #[inline]
30414    fn default() -> Self {
30415        Self {
30416            s_type: StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR,
30417            next: ptr::null(),
30418            std_profile: video::StdVideoAV1Profile::default(),
30419        }
30420    }
30421}
30422
30423unsafe impl Send for VideoEncodeAV1ProfileInfoKHR {}
30424unsafe impl Sync for VideoEncodeAV1ProfileInfoKHR {}
30425
30426/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html>
30427#[repr(C)]
30428#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30429pub struct VideoEncodeAV1QIndexKHR {
30430    pub intra_q_index: u32,
30431    pub predictive_q_index: u32,
30432    pub bipredictive_q_index: u32,
30433}
30434
30435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html>
30436#[repr(C)]
30437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30438pub struct VideoEncodeAV1QualityLevelPropertiesKHR {
30439    pub s_type: StructureType,
30440    pub next: *mut c_void,
30441    pub preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR,
30442    pub preferred_gop_frame_count: u32,
30443    pub preferred_key_frame_period: u32,
30444    pub preferred_consecutive_bipredictive_frame_count: u32,
30445    pub preferred_temporal_layer_count: u32,
30446    pub preferred_constant_q_index: VideoEncodeAV1QIndexKHR,
30447    pub preferred_max_single_reference_count: u32,
30448    pub preferred_single_reference_name_mask: u32,
30449    pub preferred_max_unidirectional_compound_reference_count: u32,
30450    pub preferred_max_unidirectional_compound_group1_reference_count: u32,
30451    pub preferred_unidirectional_compound_reference_name_mask: u32,
30452    pub preferred_max_bidirectional_compound_reference_count: u32,
30453    pub preferred_max_bidirectional_compound_group1_reference_count: u32,
30454    pub preferred_max_bidirectional_compound_group2_reference_count: u32,
30455    pub preferred_bidirectional_compound_reference_name_mask: u32,
30456}
30457
30458impl Default for VideoEncodeAV1QualityLevelPropertiesKHR {
30459    #[inline]
30460    fn default() -> Self {
30461        Self {
30462            s_type: StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR,
30463            next: ptr::null_mut(),
30464            preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR::default(),
30465            preferred_gop_frame_count: u32::default(),
30466            preferred_key_frame_period: u32::default(),
30467            preferred_consecutive_bipredictive_frame_count: u32::default(),
30468            preferred_temporal_layer_count: u32::default(),
30469            preferred_constant_q_index: VideoEncodeAV1QIndexKHR::default(),
30470            preferred_max_single_reference_count: u32::default(),
30471            preferred_single_reference_name_mask: u32::default(),
30472            preferred_max_unidirectional_compound_reference_count: u32::default(),
30473            preferred_max_unidirectional_compound_group1_reference_count: u32::default(),
30474            preferred_unidirectional_compound_reference_name_mask: u32::default(),
30475            preferred_max_bidirectional_compound_reference_count: u32::default(),
30476            preferred_max_bidirectional_compound_group1_reference_count: u32::default(),
30477            preferred_max_bidirectional_compound_group2_reference_count: u32::default(),
30478            preferred_bidirectional_compound_reference_name_mask: u32::default(),
30479        }
30480    }
30481}
30482
30483unsafe impl Send for VideoEncodeAV1QualityLevelPropertiesKHR {}
30484unsafe impl Sync for VideoEncodeAV1QualityLevelPropertiesKHR {}
30485
30486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html>
30487#[repr(C)]
30488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30489pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHR {
30490    pub s_type: StructureType,
30491    pub next: *mut c_void,
30492    pub min_q_index_delta: i32,
30493    pub max_q_index_delta: i32,
30494}
30495
30496impl Default for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
30497    #[inline]
30498    fn default() -> Self {
30499        Self {
30500            s_type: StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR,
30501            next: ptr::null_mut(),
30502            min_q_index_delta: i32::default(),
30503            max_q_index_delta: i32::default(),
30504        }
30505    }
30506}
30507
30508unsafe impl Send for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
30509unsafe impl Sync for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
30510
30511/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html>
30512#[repr(C)]
30513#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30514pub struct VideoEncodeAV1RateControlInfoKHR {
30515    pub s_type: StructureType,
30516    pub next: *const c_void,
30517    pub flags: VideoEncodeAV1RateControlFlagsKHR,
30518    pub gop_frame_count: u32,
30519    pub key_frame_period: u32,
30520    pub consecutive_bipredictive_frame_count: u32,
30521    pub temporal_layer_count: u32,
30522}
30523
30524impl Default for VideoEncodeAV1RateControlInfoKHR {
30525    #[inline]
30526    fn default() -> Self {
30527        Self {
30528            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR,
30529            next: ptr::null(),
30530            flags: VideoEncodeAV1RateControlFlagsKHR::default(),
30531            gop_frame_count: u32::default(),
30532            key_frame_period: u32::default(),
30533            consecutive_bipredictive_frame_count: u32::default(),
30534            temporal_layer_count: u32::default(),
30535        }
30536    }
30537}
30538
30539unsafe impl Send for VideoEncodeAV1RateControlInfoKHR {}
30540unsafe impl Sync for VideoEncodeAV1RateControlInfoKHR {}
30541
30542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html>
30543#[repr(C)]
30544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30545pub struct VideoEncodeAV1RateControlLayerInfoKHR {
30546    pub s_type: StructureType,
30547    pub next: *const c_void,
30548    pub use_min_q_index: Bool32,
30549    pub min_q_index: VideoEncodeAV1QIndexKHR,
30550    pub use_max_q_index: Bool32,
30551    pub max_q_index: VideoEncodeAV1QIndexKHR,
30552    pub use_max_frame_size: Bool32,
30553    pub max_frame_size: VideoEncodeAV1FrameSizeKHR,
30554}
30555
30556impl Default for VideoEncodeAV1RateControlLayerInfoKHR {
30557    #[inline]
30558    fn default() -> Self {
30559        Self {
30560            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR,
30561            next: ptr::null(),
30562            use_min_q_index: Bool32::default(),
30563            min_q_index: VideoEncodeAV1QIndexKHR::default(),
30564            use_max_q_index: Bool32::default(),
30565            max_q_index: VideoEncodeAV1QIndexKHR::default(),
30566            use_max_frame_size: Bool32::default(),
30567            max_frame_size: VideoEncodeAV1FrameSizeKHR::default(),
30568        }
30569    }
30570}
30571
30572unsafe impl Send for VideoEncodeAV1RateControlLayerInfoKHR {}
30573unsafe impl Sync for VideoEncodeAV1RateControlLayerInfoKHR {}
30574
30575/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html>
30576#[repr(C)]
30577#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30578pub struct VideoEncodeAV1SessionCreateInfoKHR {
30579    pub s_type: StructureType,
30580    pub next: *const c_void,
30581    pub use_max_level: Bool32,
30582    pub max_level: video::StdVideoAV1Level,
30583}
30584
30585impl Default for VideoEncodeAV1SessionCreateInfoKHR {
30586    #[inline]
30587    fn default() -> Self {
30588        Self {
30589            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR,
30590            next: ptr::null(),
30591            use_max_level: Bool32::default(),
30592            max_level: video::StdVideoAV1Level::default(),
30593        }
30594    }
30595}
30596
30597unsafe impl Send for VideoEncodeAV1SessionCreateInfoKHR {}
30598unsafe impl Sync for VideoEncodeAV1SessionCreateInfoKHR {}
30599
30600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html>
30601#[repr(C)]
30602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30603pub struct VideoEncodeAV1SessionParametersCreateInfoKHR {
30604    pub s_type: StructureType,
30605    pub next: *const c_void,
30606    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
30607    pub std_decoder_model_info: *const video::StdVideoEncodeAV1DecoderModelInfo,
30608    pub std_operating_point_count: u32,
30609    pub std_operating_points: *const video::StdVideoEncodeAV1OperatingPointInfo,
30610}
30611
30612impl Default for VideoEncodeAV1SessionParametersCreateInfoKHR {
30613    #[inline]
30614    fn default() -> Self {
30615        Self {
30616            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
30617            next: ptr::null(),
30618            std_sequence_header: ptr::null(),
30619            std_decoder_model_info: ptr::null(),
30620            std_operating_point_count: u32::default(),
30621            std_operating_points: ptr::null(),
30622        }
30623    }
30624}
30625
30626unsafe impl Send for VideoEncodeAV1SessionParametersCreateInfoKHR {}
30627unsafe impl Sync for VideoEncodeAV1SessionParametersCreateInfoKHR {}
30628
30629/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html>
30630#[repr(C)]
30631#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30632pub struct VideoEncodeCapabilitiesKHR {
30633    pub s_type: StructureType,
30634    pub next: *mut c_void,
30635    pub flags: VideoEncodeCapabilityFlagsKHR,
30636    pub rate_control_modes: VideoEncodeRateControlModeFlagsKHR,
30637    pub max_rate_control_layers: u32,
30638    pub max_bitrate: u64,
30639    pub max_quality_levels: u32,
30640    pub encode_input_picture_granularity: Extent2D,
30641    pub supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
30642}
30643
30644impl Default for VideoEncodeCapabilitiesKHR {
30645    #[inline]
30646    fn default() -> Self {
30647        Self {
30648            s_type: StructureType::VIDEO_ENCODE_CAPABILITIES_KHR,
30649            next: ptr::null_mut(),
30650            flags: VideoEncodeCapabilityFlagsKHR::default(),
30651            rate_control_modes: VideoEncodeRateControlModeFlagsKHR::default(),
30652            max_rate_control_layers: u32::default(),
30653            max_bitrate: u64::default(),
30654            max_quality_levels: u32::default(),
30655            encode_input_picture_granularity: Extent2D::default(),
30656            supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
30657        }
30658    }
30659}
30660
30661unsafe impl Send for VideoEncodeCapabilitiesKHR {}
30662unsafe impl Sync for VideoEncodeCapabilitiesKHR {}
30663
30664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html>
30665#[repr(C)]
30666#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30667pub struct VideoEncodeH264CapabilitiesKHR {
30668    pub s_type: StructureType,
30669    pub next: *mut c_void,
30670    pub flags: VideoEncodeH264CapabilityFlagsKHR,
30671    pub max_level_idc: video::StdVideoH264LevelIdc,
30672    pub max_slice_count: u32,
30673    pub max_p_picture_l0_reference_count: u32,
30674    pub max_b_picture_l0_reference_count: u32,
30675    pub max_l1_reference_count: u32,
30676    pub max_temporal_layer_count: u32,
30677    pub expect_dyadic_temporal_layer_pattern: Bool32,
30678    pub min_qp: i32,
30679    pub max_qp: i32,
30680    pub prefers_gop_remaining_frames: Bool32,
30681    pub requires_gop_remaining_frames: Bool32,
30682    pub std_syntax_flags: VideoEncodeH264StdFlagsKHR,
30683}
30684
30685impl Default for VideoEncodeH264CapabilitiesKHR {
30686    #[inline]
30687    fn default() -> Self {
30688        Self {
30689            s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR,
30690            next: ptr::null_mut(),
30691            flags: VideoEncodeH264CapabilityFlagsKHR::default(),
30692            max_level_idc: video::StdVideoH264LevelIdc::default(),
30693            max_slice_count: u32::default(),
30694            max_p_picture_l0_reference_count: u32::default(),
30695            max_b_picture_l0_reference_count: u32::default(),
30696            max_l1_reference_count: u32::default(),
30697            max_temporal_layer_count: u32::default(),
30698            expect_dyadic_temporal_layer_pattern: Bool32::default(),
30699            min_qp: i32::default(),
30700            max_qp: i32::default(),
30701            prefers_gop_remaining_frames: Bool32::default(),
30702            requires_gop_remaining_frames: Bool32::default(),
30703            std_syntax_flags: VideoEncodeH264StdFlagsKHR::default(),
30704        }
30705    }
30706}
30707
30708unsafe impl Send for VideoEncodeH264CapabilitiesKHR {}
30709unsafe impl Sync for VideoEncodeH264CapabilitiesKHR {}
30710
30711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html>
30712#[repr(C)]
30713#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30714pub struct VideoEncodeH264DpbSlotInfoKHR {
30715    pub s_type: StructureType,
30716    pub next: *const c_void,
30717    pub std_reference_info: *const video::StdVideoEncodeH264ReferenceInfo,
30718}
30719
30720impl Default for VideoEncodeH264DpbSlotInfoKHR {
30721    #[inline]
30722    fn default() -> Self {
30723        Self {
30724            s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR,
30725            next: ptr::null(),
30726            std_reference_info: ptr::null(),
30727        }
30728    }
30729}
30730
30731unsafe impl Send for VideoEncodeH264DpbSlotInfoKHR {}
30732unsafe impl Sync for VideoEncodeH264DpbSlotInfoKHR {}
30733
30734/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html>
30735#[repr(C)]
30736#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30737pub struct VideoEncodeH264FrameSizeKHR {
30738    pub frame_i_size: u32,
30739    pub frame_p_size: u32,
30740    pub frame_b_size: u32,
30741}
30742
30743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html>
30744#[repr(C)]
30745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30746pub struct VideoEncodeH264GopRemainingFrameInfoKHR {
30747    pub s_type: StructureType,
30748    pub next: *const c_void,
30749    pub use_gop_remaining_frames: Bool32,
30750    pub gop_remaining_i: u32,
30751    pub gop_remaining_p: u32,
30752    pub gop_remaining_b: u32,
30753}
30754
30755impl Default for VideoEncodeH264GopRemainingFrameInfoKHR {
30756    #[inline]
30757    fn default() -> Self {
30758        Self {
30759            s_type: StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR,
30760            next: ptr::null(),
30761            use_gop_remaining_frames: Bool32::default(),
30762            gop_remaining_i: u32::default(),
30763            gop_remaining_p: u32::default(),
30764            gop_remaining_b: u32::default(),
30765        }
30766    }
30767}
30768
30769unsafe impl Send for VideoEncodeH264GopRemainingFrameInfoKHR {}
30770unsafe impl Sync for VideoEncodeH264GopRemainingFrameInfoKHR {}
30771
30772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html>
30773#[repr(C)]
30774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30775pub struct VideoEncodeH264NaluSliceInfoKHR {
30776    pub s_type: StructureType,
30777    pub next: *const c_void,
30778    pub constant_qp: i32,
30779    pub std_slice_header: *const video::StdVideoEncodeH264SliceHeader,
30780}
30781
30782impl Default for VideoEncodeH264NaluSliceInfoKHR {
30783    #[inline]
30784    fn default() -> Self {
30785        Self {
30786            s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR,
30787            next: ptr::null(),
30788            constant_qp: i32::default(),
30789            std_slice_header: ptr::null(),
30790        }
30791    }
30792}
30793
30794unsafe impl Send for VideoEncodeH264NaluSliceInfoKHR {}
30795unsafe impl Sync for VideoEncodeH264NaluSliceInfoKHR {}
30796
30797/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html>
30798#[repr(C)]
30799#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30800pub struct VideoEncodeH264PictureInfoKHR {
30801    pub s_type: StructureType,
30802    pub next: *const c_void,
30803    pub nalu_slice_entry_count: u32,
30804    pub nalu_slice_entries: *const VideoEncodeH264NaluSliceInfoKHR,
30805    pub std_picture_info: *const video::StdVideoEncodeH264PictureInfo,
30806    pub generate_prefix_nalu: Bool32,
30807}
30808
30809impl Default for VideoEncodeH264PictureInfoKHR {
30810    #[inline]
30811    fn default() -> Self {
30812        Self {
30813            s_type: StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR,
30814            next: ptr::null(),
30815            nalu_slice_entry_count: u32::default(),
30816            nalu_slice_entries: ptr::null(),
30817            std_picture_info: ptr::null(),
30818            generate_prefix_nalu: Bool32::default(),
30819        }
30820    }
30821}
30822
30823unsafe impl Send for VideoEncodeH264PictureInfoKHR {}
30824unsafe impl Sync for VideoEncodeH264PictureInfoKHR {}
30825
30826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html>
30827#[repr(C)]
30828#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30829pub struct VideoEncodeH264ProfileInfoKHR {
30830    pub s_type: StructureType,
30831    pub next: *const c_void,
30832    pub std_profile_idc: video::StdVideoH264ProfileIdc,
30833}
30834
30835impl Default for VideoEncodeH264ProfileInfoKHR {
30836    #[inline]
30837    fn default() -> Self {
30838        Self {
30839            s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR,
30840            next: ptr::null(),
30841            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
30842        }
30843    }
30844}
30845
30846unsafe impl Send for VideoEncodeH264ProfileInfoKHR {}
30847unsafe impl Sync for VideoEncodeH264ProfileInfoKHR {}
30848
30849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html>
30850#[repr(C)]
30851#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30852pub struct VideoEncodeH264QpKHR {
30853    pub qp_i: i32,
30854    pub qp_p: i32,
30855    pub qp_b: i32,
30856}
30857
30858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html>
30859#[repr(C)]
30860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30861pub struct VideoEncodeH264QualityLevelPropertiesKHR {
30862    pub s_type: StructureType,
30863    pub next: *mut c_void,
30864    pub preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR,
30865    pub preferred_gop_frame_count: u32,
30866    pub preferred_idr_period: u32,
30867    pub preferred_consecutive_b_frame_count: u32,
30868    pub preferred_temporal_layer_count: u32,
30869    pub preferred_constant_qp: VideoEncodeH264QpKHR,
30870    pub preferred_max_l0_reference_count: u32,
30871    pub preferred_max_l1_reference_count: u32,
30872    pub preferred_std_entropy_coding_mode_flag: Bool32,
30873}
30874
30875impl Default for VideoEncodeH264QualityLevelPropertiesKHR {
30876    #[inline]
30877    fn default() -> Self {
30878        Self {
30879            s_type: StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
30880            next: ptr::null_mut(),
30881            preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR::default(),
30882            preferred_gop_frame_count: u32::default(),
30883            preferred_idr_period: u32::default(),
30884            preferred_consecutive_b_frame_count: u32::default(),
30885            preferred_temporal_layer_count: u32::default(),
30886            preferred_constant_qp: VideoEncodeH264QpKHR::default(),
30887            preferred_max_l0_reference_count: u32::default(),
30888            preferred_max_l1_reference_count: u32::default(),
30889            preferred_std_entropy_coding_mode_flag: Bool32::default(),
30890        }
30891    }
30892}
30893
30894unsafe impl Send for VideoEncodeH264QualityLevelPropertiesKHR {}
30895unsafe impl Sync for VideoEncodeH264QualityLevelPropertiesKHR {}
30896
30897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html>
30898#[repr(C)]
30899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30900pub struct VideoEncodeH264QuantizationMapCapabilitiesKHR {
30901    pub s_type: StructureType,
30902    pub next: *mut c_void,
30903    pub min_qp_delta: i32,
30904    pub max_qp_delta: i32,
30905}
30906
30907impl Default for VideoEncodeH264QuantizationMapCapabilitiesKHR {
30908    #[inline]
30909    fn default() -> Self {
30910        Self {
30911            s_type: StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR,
30912            next: ptr::null_mut(),
30913            min_qp_delta: i32::default(),
30914            max_qp_delta: i32::default(),
30915        }
30916    }
30917}
30918
30919unsafe impl Send for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
30920unsafe impl Sync for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
30921
30922/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html>
30923#[repr(C)]
30924#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30925pub struct VideoEncodeH264RateControlInfoKHR {
30926    pub s_type: StructureType,
30927    pub next: *const c_void,
30928    pub flags: VideoEncodeH264RateControlFlagsKHR,
30929    pub gop_frame_count: u32,
30930    pub idr_period: u32,
30931    pub consecutive_b_frame_count: u32,
30932    pub temporal_layer_count: u32,
30933}
30934
30935impl Default for VideoEncodeH264RateControlInfoKHR {
30936    #[inline]
30937    fn default() -> Self {
30938        Self {
30939            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR,
30940            next: ptr::null(),
30941            flags: VideoEncodeH264RateControlFlagsKHR::default(),
30942            gop_frame_count: u32::default(),
30943            idr_period: u32::default(),
30944            consecutive_b_frame_count: u32::default(),
30945            temporal_layer_count: u32::default(),
30946        }
30947    }
30948}
30949
30950unsafe impl Send for VideoEncodeH264RateControlInfoKHR {}
30951unsafe impl Sync for VideoEncodeH264RateControlInfoKHR {}
30952
30953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html>
30954#[repr(C)]
30955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30956pub struct VideoEncodeH264RateControlLayerInfoKHR {
30957    pub s_type: StructureType,
30958    pub next: *const c_void,
30959    pub use_min_qp: Bool32,
30960    pub min_qp: VideoEncodeH264QpKHR,
30961    pub use_max_qp: Bool32,
30962    pub max_qp: VideoEncodeH264QpKHR,
30963    pub use_max_frame_size: Bool32,
30964    pub max_frame_size: VideoEncodeH264FrameSizeKHR,
30965}
30966
30967impl Default for VideoEncodeH264RateControlLayerInfoKHR {
30968    #[inline]
30969    fn default() -> Self {
30970        Self {
30971            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,
30972            next: ptr::null(),
30973            use_min_qp: Bool32::default(),
30974            min_qp: VideoEncodeH264QpKHR::default(),
30975            use_max_qp: Bool32::default(),
30976            max_qp: VideoEncodeH264QpKHR::default(),
30977            use_max_frame_size: Bool32::default(),
30978            max_frame_size: VideoEncodeH264FrameSizeKHR::default(),
30979        }
30980    }
30981}
30982
30983unsafe impl Send for VideoEncodeH264RateControlLayerInfoKHR {}
30984unsafe impl Sync for VideoEncodeH264RateControlLayerInfoKHR {}
30985
30986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html>
30987#[repr(C)]
30988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30989pub struct VideoEncodeH264SessionCreateInfoKHR {
30990    pub s_type: StructureType,
30991    pub next: *const c_void,
30992    pub use_max_level_idc: Bool32,
30993    pub max_level_idc: video::StdVideoH264LevelIdc,
30994}
30995
30996impl Default for VideoEncodeH264SessionCreateInfoKHR {
30997    #[inline]
30998    fn default() -> Self {
30999        Self {
31000            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR,
31001            next: ptr::null(),
31002            use_max_level_idc: Bool32::default(),
31003            max_level_idc: video::StdVideoH264LevelIdc::default(),
31004        }
31005    }
31006}
31007
31008unsafe impl Send for VideoEncodeH264SessionCreateInfoKHR {}
31009unsafe impl Sync for VideoEncodeH264SessionCreateInfoKHR {}
31010
31011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html>
31012#[repr(C)]
31013#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31014pub struct VideoEncodeH264SessionParametersAddInfoKHR {
31015    pub s_type: StructureType,
31016    pub next: *const c_void,
31017    pub std_sps_count: u32,
31018    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
31019    pub std_pps_count: u32,
31020    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
31021}
31022
31023impl Default for VideoEncodeH264SessionParametersAddInfoKHR {
31024    #[inline]
31025    fn default() -> Self {
31026        Self {
31027            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
31028            next: ptr::null(),
31029            std_sps_count: u32::default(),
31030            std_sp_ss: ptr::null(),
31031            std_pps_count: u32::default(),
31032            std_pp_ss: ptr::null(),
31033        }
31034    }
31035}
31036
31037unsafe impl Send for VideoEncodeH264SessionParametersAddInfoKHR {}
31038unsafe impl Sync for VideoEncodeH264SessionParametersAddInfoKHR {}
31039
31040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html>
31041#[repr(C)]
31042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31043pub struct VideoEncodeH264SessionParametersCreateInfoKHR {
31044    pub s_type: StructureType,
31045    pub next: *const c_void,
31046    pub max_std_sps_count: u32,
31047    pub max_std_pps_count: u32,
31048    pub parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoKHR,
31049}
31050
31051impl Default for VideoEncodeH264SessionParametersCreateInfoKHR {
31052    #[inline]
31053    fn default() -> Self {
31054        Self {
31055            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
31056            next: ptr::null(),
31057            max_std_sps_count: u32::default(),
31058            max_std_pps_count: u32::default(),
31059            parameters_add_info: ptr::null(),
31060        }
31061    }
31062}
31063
31064unsafe impl Send for VideoEncodeH264SessionParametersCreateInfoKHR {}
31065unsafe impl Sync for VideoEncodeH264SessionParametersCreateInfoKHR {}
31066
31067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html>
31068#[repr(C)]
31069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31070pub struct VideoEncodeH264SessionParametersFeedbackInfoKHR {
31071    pub s_type: StructureType,
31072    pub next: *mut c_void,
31073    pub has_std_sps_overrides: Bool32,
31074    pub has_std_pps_overrides: Bool32,
31075}
31076
31077impl Default for VideoEncodeH264SessionParametersFeedbackInfoKHR {
31078    #[inline]
31079    fn default() -> Self {
31080        Self {
31081            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
31082            next: ptr::null_mut(),
31083            has_std_sps_overrides: Bool32::default(),
31084            has_std_pps_overrides: Bool32::default(),
31085        }
31086    }
31087}
31088
31089unsafe impl Send for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
31090unsafe impl Sync for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
31091
31092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html>
31093#[repr(C)]
31094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31095pub struct VideoEncodeH264SessionParametersGetInfoKHR {
31096    pub s_type: StructureType,
31097    pub next: *const c_void,
31098    pub write_std_sps: Bool32,
31099    pub write_std_pps: Bool32,
31100    pub std_sps_id: u32,
31101    pub std_pps_id: u32,
31102}
31103
31104impl Default for VideoEncodeH264SessionParametersGetInfoKHR {
31105    #[inline]
31106    fn default() -> Self {
31107        Self {
31108            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
31109            next: ptr::null(),
31110            write_std_sps: Bool32::default(),
31111            write_std_pps: Bool32::default(),
31112            std_sps_id: u32::default(),
31113            std_pps_id: u32::default(),
31114        }
31115    }
31116}
31117
31118unsafe impl Send for VideoEncodeH264SessionParametersGetInfoKHR {}
31119unsafe impl Sync for VideoEncodeH264SessionParametersGetInfoKHR {}
31120
31121/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html>
31122#[repr(C)]
31123#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31124pub struct VideoEncodeH265CapabilitiesKHR {
31125    pub s_type: StructureType,
31126    pub next: *mut c_void,
31127    pub flags: VideoEncodeH265CapabilityFlagsKHR,
31128    pub max_level_idc: video::StdVideoH265LevelIdc,
31129    pub max_slice_segment_count: u32,
31130    pub max_tiles: Extent2D,
31131    pub ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
31132    pub transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR,
31133    pub max_p_picture_l0_reference_count: u32,
31134    pub max_b_picture_l0_reference_count: u32,
31135    pub max_l1_reference_count: u32,
31136    pub max_sub_layer_count: u32,
31137    pub expect_dyadic_temporal_sub_layer_pattern: Bool32,
31138    pub min_qp: i32,
31139    pub max_qp: i32,
31140    pub prefers_gop_remaining_frames: Bool32,
31141    pub requires_gop_remaining_frames: Bool32,
31142    pub std_syntax_flags: VideoEncodeH265StdFlagsKHR,
31143}
31144
31145impl Default for VideoEncodeH265CapabilitiesKHR {
31146    #[inline]
31147    fn default() -> Self {
31148        Self {
31149            s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR,
31150            next: ptr::null_mut(),
31151            flags: VideoEncodeH265CapabilityFlagsKHR::default(),
31152            max_level_idc: video::StdVideoH265LevelIdc::default(),
31153            max_slice_segment_count: u32::default(),
31154            max_tiles: Extent2D::default(),
31155            ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
31156            transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR::default(),
31157            max_p_picture_l0_reference_count: u32::default(),
31158            max_b_picture_l0_reference_count: u32::default(),
31159            max_l1_reference_count: u32::default(),
31160            max_sub_layer_count: u32::default(),
31161            expect_dyadic_temporal_sub_layer_pattern: Bool32::default(),
31162            min_qp: i32::default(),
31163            max_qp: i32::default(),
31164            prefers_gop_remaining_frames: Bool32::default(),
31165            requires_gop_remaining_frames: Bool32::default(),
31166            std_syntax_flags: VideoEncodeH265StdFlagsKHR::default(),
31167        }
31168    }
31169}
31170
31171unsafe impl Send for VideoEncodeH265CapabilitiesKHR {}
31172unsafe impl Sync for VideoEncodeH265CapabilitiesKHR {}
31173
31174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html>
31175#[repr(C)]
31176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31177pub struct VideoEncodeH265DpbSlotInfoKHR {
31178    pub s_type: StructureType,
31179    pub next: *const c_void,
31180    pub std_reference_info: *const video::StdVideoEncodeH265ReferenceInfo,
31181}
31182
31183impl Default for VideoEncodeH265DpbSlotInfoKHR {
31184    #[inline]
31185    fn default() -> Self {
31186        Self {
31187            s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR,
31188            next: ptr::null(),
31189            std_reference_info: ptr::null(),
31190        }
31191    }
31192}
31193
31194unsafe impl Send for VideoEncodeH265DpbSlotInfoKHR {}
31195unsafe impl Sync for VideoEncodeH265DpbSlotInfoKHR {}
31196
31197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html>
31198#[repr(C)]
31199#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31200pub struct VideoEncodeH265FrameSizeKHR {
31201    pub frame_i_size: u32,
31202    pub frame_p_size: u32,
31203    pub frame_b_size: u32,
31204}
31205
31206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html>
31207#[repr(C)]
31208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31209pub struct VideoEncodeH265GopRemainingFrameInfoKHR {
31210    pub s_type: StructureType,
31211    pub next: *const c_void,
31212    pub use_gop_remaining_frames: Bool32,
31213    pub gop_remaining_i: u32,
31214    pub gop_remaining_p: u32,
31215    pub gop_remaining_b: u32,
31216}
31217
31218impl Default for VideoEncodeH265GopRemainingFrameInfoKHR {
31219    #[inline]
31220    fn default() -> Self {
31221        Self {
31222            s_type: StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR,
31223            next: ptr::null(),
31224            use_gop_remaining_frames: Bool32::default(),
31225            gop_remaining_i: u32::default(),
31226            gop_remaining_p: u32::default(),
31227            gop_remaining_b: u32::default(),
31228        }
31229    }
31230}
31231
31232unsafe impl Send for VideoEncodeH265GopRemainingFrameInfoKHR {}
31233unsafe impl Sync for VideoEncodeH265GopRemainingFrameInfoKHR {}
31234
31235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html>
31236#[repr(C)]
31237#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31238pub struct VideoEncodeH265NaluSliceSegmentInfoKHR {
31239    pub s_type: StructureType,
31240    pub next: *const c_void,
31241    pub constant_qp: i32,
31242    pub std_slice_segment_header: *const video::StdVideoEncodeH265SliceSegmentHeader,
31243}
31244
31245impl Default for VideoEncodeH265NaluSliceSegmentInfoKHR {
31246    #[inline]
31247    fn default() -> Self {
31248        Self {
31249            s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR,
31250            next: ptr::null(),
31251            constant_qp: i32::default(),
31252            std_slice_segment_header: ptr::null(),
31253        }
31254    }
31255}
31256
31257unsafe impl Send for VideoEncodeH265NaluSliceSegmentInfoKHR {}
31258unsafe impl Sync for VideoEncodeH265NaluSliceSegmentInfoKHR {}
31259
31260/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html>
31261#[repr(C)]
31262#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31263pub struct VideoEncodeH265PictureInfoKHR {
31264    pub s_type: StructureType,
31265    pub next: *const c_void,
31266    pub nalu_slice_segment_entry_count: u32,
31267    pub nalu_slice_segment_entries: *const VideoEncodeH265NaluSliceSegmentInfoKHR,
31268    pub std_picture_info: *const video::StdVideoEncodeH265PictureInfo,
31269}
31270
31271impl Default for VideoEncodeH265PictureInfoKHR {
31272    #[inline]
31273    fn default() -> Self {
31274        Self {
31275            s_type: StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR,
31276            next: ptr::null(),
31277            nalu_slice_segment_entry_count: u32::default(),
31278            nalu_slice_segment_entries: ptr::null(),
31279            std_picture_info: ptr::null(),
31280        }
31281    }
31282}
31283
31284unsafe impl Send for VideoEncodeH265PictureInfoKHR {}
31285unsafe impl Sync for VideoEncodeH265PictureInfoKHR {}
31286
31287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html>
31288#[repr(C)]
31289#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31290pub struct VideoEncodeH265ProfileInfoKHR {
31291    pub s_type: StructureType,
31292    pub next: *const c_void,
31293    pub std_profile_idc: video::StdVideoH265ProfileIdc,
31294}
31295
31296impl Default for VideoEncodeH265ProfileInfoKHR {
31297    #[inline]
31298    fn default() -> Self {
31299        Self {
31300            s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR,
31301            next: ptr::null(),
31302            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
31303        }
31304    }
31305}
31306
31307unsafe impl Send for VideoEncodeH265ProfileInfoKHR {}
31308unsafe impl Sync for VideoEncodeH265ProfileInfoKHR {}
31309
31310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html>
31311#[repr(C)]
31312#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31313pub struct VideoEncodeH265QpKHR {
31314    pub qp_i: i32,
31315    pub qp_p: i32,
31316    pub qp_b: i32,
31317}
31318
31319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html>
31320#[repr(C)]
31321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31322pub struct VideoEncodeH265QualityLevelPropertiesKHR {
31323    pub s_type: StructureType,
31324    pub next: *mut c_void,
31325    pub preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR,
31326    pub preferred_gop_frame_count: u32,
31327    pub preferred_idr_period: u32,
31328    pub preferred_consecutive_b_frame_count: u32,
31329    pub preferred_sub_layer_count: u32,
31330    pub preferred_constant_qp: VideoEncodeH265QpKHR,
31331    pub preferred_max_l0_reference_count: u32,
31332    pub preferred_max_l1_reference_count: u32,
31333}
31334
31335impl Default for VideoEncodeH265QualityLevelPropertiesKHR {
31336    #[inline]
31337    fn default() -> Self {
31338        Self {
31339            s_type: StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR,
31340            next: ptr::null_mut(),
31341            preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR::default(),
31342            preferred_gop_frame_count: u32::default(),
31343            preferred_idr_period: u32::default(),
31344            preferred_consecutive_b_frame_count: u32::default(),
31345            preferred_sub_layer_count: u32::default(),
31346            preferred_constant_qp: VideoEncodeH265QpKHR::default(),
31347            preferred_max_l0_reference_count: u32::default(),
31348            preferred_max_l1_reference_count: u32::default(),
31349        }
31350    }
31351}
31352
31353unsafe impl Send for VideoEncodeH265QualityLevelPropertiesKHR {}
31354unsafe impl Sync for VideoEncodeH265QualityLevelPropertiesKHR {}
31355
31356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html>
31357#[repr(C)]
31358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31359pub struct VideoEncodeH265QuantizationMapCapabilitiesKHR {
31360    pub s_type: StructureType,
31361    pub next: *mut c_void,
31362    pub min_qp_delta: i32,
31363    pub max_qp_delta: i32,
31364}
31365
31366impl Default for VideoEncodeH265QuantizationMapCapabilitiesKHR {
31367    #[inline]
31368    fn default() -> Self {
31369        Self {
31370            s_type: StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR,
31371            next: ptr::null_mut(),
31372            min_qp_delta: i32::default(),
31373            max_qp_delta: i32::default(),
31374        }
31375    }
31376}
31377
31378unsafe impl Send for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
31379unsafe impl Sync for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
31380
31381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html>
31382#[repr(C)]
31383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31384pub struct VideoEncodeH265RateControlInfoKHR {
31385    pub s_type: StructureType,
31386    pub next: *const c_void,
31387    pub flags: VideoEncodeH265RateControlFlagsKHR,
31388    pub gop_frame_count: u32,
31389    pub idr_period: u32,
31390    pub consecutive_b_frame_count: u32,
31391    pub sub_layer_count: u32,
31392}
31393
31394impl Default for VideoEncodeH265RateControlInfoKHR {
31395    #[inline]
31396    fn default() -> Self {
31397        Self {
31398            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR,
31399            next: ptr::null(),
31400            flags: VideoEncodeH265RateControlFlagsKHR::default(),
31401            gop_frame_count: u32::default(),
31402            idr_period: u32::default(),
31403            consecutive_b_frame_count: u32::default(),
31404            sub_layer_count: u32::default(),
31405        }
31406    }
31407}
31408
31409unsafe impl Send for VideoEncodeH265RateControlInfoKHR {}
31410unsafe impl Sync for VideoEncodeH265RateControlInfoKHR {}
31411
31412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html>
31413#[repr(C)]
31414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31415pub struct VideoEncodeH265RateControlLayerInfoKHR {
31416    pub s_type: StructureType,
31417    pub next: *const c_void,
31418    pub use_min_qp: Bool32,
31419    pub min_qp: VideoEncodeH265QpKHR,
31420    pub use_max_qp: Bool32,
31421    pub max_qp: VideoEncodeH265QpKHR,
31422    pub use_max_frame_size: Bool32,
31423    pub max_frame_size: VideoEncodeH265FrameSizeKHR,
31424}
31425
31426impl Default for VideoEncodeH265RateControlLayerInfoKHR {
31427    #[inline]
31428    fn default() -> Self {
31429        Self {
31430            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,
31431            next: ptr::null(),
31432            use_min_qp: Bool32::default(),
31433            min_qp: VideoEncodeH265QpKHR::default(),
31434            use_max_qp: Bool32::default(),
31435            max_qp: VideoEncodeH265QpKHR::default(),
31436            use_max_frame_size: Bool32::default(),
31437            max_frame_size: VideoEncodeH265FrameSizeKHR::default(),
31438        }
31439    }
31440}
31441
31442unsafe impl Send for VideoEncodeH265RateControlLayerInfoKHR {}
31443unsafe impl Sync for VideoEncodeH265RateControlLayerInfoKHR {}
31444
31445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html>
31446#[repr(C)]
31447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31448pub struct VideoEncodeH265SessionCreateInfoKHR {
31449    pub s_type: StructureType,
31450    pub next: *const c_void,
31451    pub use_max_level_idc: Bool32,
31452    pub max_level_idc: video::StdVideoH265LevelIdc,
31453}
31454
31455impl Default for VideoEncodeH265SessionCreateInfoKHR {
31456    #[inline]
31457    fn default() -> Self {
31458        Self {
31459            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR,
31460            next: ptr::null(),
31461            use_max_level_idc: Bool32::default(),
31462            max_level_idc: video::StdVideoH265LevelIdc::default(),
31463        }
31464    }
31465}
31466
31467unsafe impl Send for VideoEncodeH265SessionCreateInfoKHR {}
31468unsafe impl Sync for VideoEncodeH265SessionCreateInfoKHR {}
31469
31470/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html>
31471#[repr(C)]
31472#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31473pub struct VideoEncodeH265SessionParametersAddInfoKHR {
31474    pub s_type: StructureType,
31475    pub next: *const c_void,
31476    pub std_vps_count: u32,
31477    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
31478    pub std_sps_count: u32,
31479    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
31480    pub std_pps_count: u32,
31481    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
31482}
31483
31484impl Default for VideoEncodeH265SessionParametersAddInfoKHR {
31485    #[inline]
31486    fn default() -> Self {
31487        Self {
31488            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
31489            next: ptr::null(),
31490            std_vps_count: u32::default(),
31491            std_vp_ss: ptr::null(),
31492            std_sps_count: u32::default(),
31493            std_sp_ss: ptr::null(),
31494            std_pps_count: u32::default(),
31495            std_pp_ss: ptr::null(),
31496        }
31497    }
31498}
31499
31500unsafe impl Send for VideoEncodeH265SessionParametersAddInfoKHR {}
31501unsafe impl Sync for VideoEncodeH265SessionParametersAddInfoKHR {}
31502
31503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html>
31504#[repr(C)]
31505#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31506pub struct VideoEncodeH265SessionParametersCreateInfoKHR {
31507    pub s_type: StructureType,
31508    pub next: *const c_void,
31509    pub max_std_vps_count: u32,
31510    pub max_std_sps_count: u32,
31511    pub max_std_pps_count: u32,
31512    pub parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoKHR,
31513}
31514
31515impl Default for VideoEncodeH265SessionParametersCreateInfoKHR {
31516    #[inline]
31517    fn default() -> Self {
31518        Self {
31519            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
31520            next: ptr::null(),
31521            max_std_vps_count: u32::default(),
31522            max_std_sps_count: u32::default(),
31523            max_std_pps_count: u32::default(),
31524            parameters_add_info: ptr::null(),
31525        }
31526    }
31527}
31528
31529unsafe impl Send for VideoEncodeH265SessionParametersCreateInfoKHR {}
31530unsafe impl Sync for VideoEncodeH265SessionParametersCreateInfoKHR {}
31531
31532/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html>
31533#[repr(C)]
31534#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31535pub struct VideoEncodeH265SessionParametersFeedbackInfoKHR {
31536    pub s_type: StructureType,
31537    pub next: *mut c_void,
31538    pub has_std_vps_overrides: Bool32,
31539    pub has_std_sps_overrides: Bool32,
31540    pub has_std_pps_overrides: Bool32,
31541}
31542
31543impl Default for VideoEncodeH265SessionParametersFeedbackInfoKHR {
31544    #[inline]
31545    fn default() -> Self {
31546        Self {
31547            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
31548            next: ptr::null_mut(),
31549            has_std_vps_overrides: Bool32::default(),
31550            has_std_sps_overrides: Bool32::default(),
31551            has_std_pps_overrides: Bool32::default(),
31552        }
31553    }
31554}
31555
31556unsafe impl Send for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
31557unsafe impl Sync for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
31558
31559/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html>
31560#[repr(C)]
31561#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31562pub struct VideoEncodeH265SessionParametersGetInfoKHR {
31563    pub s_type: StructureType,
31564    pub next: *const c_void,
31565    pub write_std_vps: Bool32,
31566    pub write_std_sps: Bool32,
31567    pub write_std_pps: Bool32,
31568    pub std_vps_id: u32,
31569    pub std_sps_id: u32,
31570    pub std_pps_id: u32,
31571}
31572
31573impl Default for VideoEncodeH265SessionParametersGetInfoKHR {
31574    #[inline]
31575    fn default() -> Self {
31576        Self {
31577            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
31578            next: ptr::null(),
31579            write_std_vps: Bool32::default(),
31580            write_std_sps: Bool32::default(),
31581            write_std_pps: Bool32::default(),
31582            std_vps_id: u32::default(),
31583            std_sps_id: u32::default(),
31584            std_pps_id: u32::default(),
31585        }
31586    }
31587}
31588
31589unsafe impl Send for VideoEncodeH265SessionParametersGetInfoKHR {}
31590unsafe impl Sync for VideoEncodeH265SessionParametersGetInfoKHR {}
31591
31592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html>
31593#[repr(C)]
31594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31595pub struct VideoEncodeInfoKHR {
31596    pub s_type: StructureType,
31597    pub next: *const c_void,
31598    pub flags: VideoEncodeFlagsKHR,
31599    pub dst_buffer: Buffer,
31600    pub dst_buffer_offset: DeviceSize,
31601    pub dst_buffer_range: DeviceSize,
31602    pub src_picture_resource: VideoPictureResourceInfoKHR,
31603    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
31604    pub reference_slot_count: u32,
31605    pub reference_slots: *const VideoReferenceSlotInfoKHR,
31606    pub preceding_externally_encoded_bytes: u32,
31607}
31608
31609impl Default for VideoEncodeInfoKHR {
31610    #[inline]
31611    fn default() -> Self {
31612        Self {
31613            s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
31614            next: ptr::null(),
31615            flags: VideoEncodeFlagsKHR::default(),
31616            dst_buffer: Buffer::default(),
31617            dst_buffer_offset: DeviceSize::default(),
31618            dst_buffer_range: DeviceSize::default(),
31619            src_picture_resource: VideoPictureResourceInfoKHR::default(),
31620            setup_reference_slot: ptr::null(),
31621            reference_slot_count: u32::default(),
31622            reference_slots: ptr::null(),
31623            preceding_externally_encoded_bytes: u32::default(),
31624        }
31625    }
31626}
31627
31628unsafe impl Send for VideoEncodeInfoKHR {}
31629unsafe impl Sync for VideoEncodeInfoKHR {}
31630
31631/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshCapabilitiesKHR.html>
31632#[repr(C)]
31633#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31634pub struct VideoEncodeIntraRefreshCapabilitiesKHR {
31635    pub s_type: StructureType,
31636    pub next: *mut c_void,
31637    pub intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR,
31638    pub max_intra_refresh_cycle_duration: u32,
31639    pub max_intra_refresh_active_reference_pictures: u32,
31640    pub partition_independent_intra_refresh_regions: Bool32,
31641    pub non_rectangular_intra_refresh_regions: Bool32,
31642}
31643
31644impl Default for VideoEncodeIntraRefreshCapabilitiesKHR {
31645    #[inline]
31646    fn default() -> Self {
31647        Self {
31648            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR,
31649            next: ptr::null_mut(),
31650            intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR::default(),
31651            max_intra_refresh_cycle_duration: u32::default(),
31652            max_intra_refresh_active_reference_pictures: u32::default(),
31653            partition_independent_intra_refresh_regions: Bool32::default(),
31654            non_rectangular_intra_refresh_regions: Bool32::default(),
31655        }
31656    }
31657}
31658
31659unsafe impl Send for VideoEncodeIntraRefreshCapabilitiesKHR {}
31660unsafe impl Sync for VideoEncodeIntraRefreshCapabilitiesKHR {}
31661
31662/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshInfoKHR.html>
31663#[repr(C)]
31664#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31665pub struct VideoEncodeIntraRefreshInfoKHR {
31666    pub s_type: StructureType,
31667    pub next: *const c_void,
31668    pub intra_refresh_cycle_duration: u32,
31669    pub intra_refresh_index: u32,
31670}
31671
31672impl Default for VideoEncodeIntraRefreshInfoKHR {
31673    #[inline]
31674    fn default() -> Self {
31675        Self {
31676            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR,
31677            next: ptr::null(),
31678            intra_refresh_cycle_duration: u32::default(),
31679            intra_refresh_index: u32::default(),
31680        }
31681    }
31682}
31683
31684unsafe impl Send for VideoEncodeIntraRefreshInfoKHR {}
31685unsafe impl Sync for VideoEncodeIntraRefreshInfoKHR {}
31686
31687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeProfileRgbConversionInfoVALVE.html>
31688#[repr(C)]
31689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31690pub struct VideoEncodeProfileRgbConversionInfoVALVE {
31691    pub s_type: StructureType,
31692    pub next: *const c_void,
31693    pub perform_encode_rgb_conversion: Bool32,
31694}
31695
31696impl Default for VideoEncodeProfileRgbConversionInfoVALVE {
31697    #[inline]
31698    fn default() -> Self {
31699        Self {
31700            s_type: StructureType::VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE,
31701            next: ptr::null(),
31702            perform_encode_rgb_conversion: Bool32::default(),
31703        }
31704    }
31705}
31706
31707unsafe impl Send for VideoEncodeProfileRgbConversionInfoVALVE {}
31708unsafe impl Sync for VideoEncodeProfileRgbConversionInfoVALVE {}
31709
31710/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html>
31711#[repr(C)]
31712#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31713pub struct VideoEncodeQualityLevelInfoKHR {
31714    pub s_type: StructureType,
31715    pub next: *const c_void,
31716    pub quality_level: u32,
31717}
31718
31719impl Default for VideoEncodeQualityLevelInfoKHR {
31720    #[inline]
31721    fn default() -> Self {
31722        Self {
31723            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
31724            next: ptr::null(),
31725            quality_level: u32::default(),
31726        }
31727    }
31728}
31729
31730unsafe impl Send for VideoEncodeQualityLevelInfoKHR {}
31731unsafe impl Sync for VideoEncodeQualityLevelInfoKHR {}
31732
31733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html>
31734#[repr(C)]
31735#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31736pub struct VideoEncodeQualityLevelPropertiesKHR {
31737    pub s_type: StructureType,
31738    pub next: *mut c_void,
31739    pub preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
31740    pub preferred_rate_control_layer_count: u32,
31741}
31742
31743impl Default for VideoEncodeQualityLevelPropertiesKHR {
31744    #[inline]
31745    fn default() -> Self {
31746        Self {
31747            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR,
31748            next: ptr::null_mut(),
31749            preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
31750            preferred_rate_control_layer_count: u32::default(),
31751        }
31752    }
31753}
31754
31755unsafe impl Send for VideoEncodeQualityLevelPropertiesKHR {}
31756unsafe impl Sync for VideoEncodeQualityLevelPropertiesKHR {}
31757
31758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html>
31759#[repr(C)]
31760#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31761pub struct VideoEncodeQuantizationMapCapabilitiesKHR {
31762    pub s_type: StructureType,
31763    pub next: *mut c_void,
31764    pub max_quantization_map_extent: Extent2D,
31765}
31766
31767impl Default for VideoEncodeQuantizationMapCapabilitiesKHR {
31768    #[inline]
31769    fn default() -> Self {
31770        Self {
31771            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR,
31772            next: ptr::null_mut(),
31773            max_quantization_map_extent: Extent2D::default(),
31774        }
31775    }
31776}
31777
31778unsafe impl Send for VideoEncodeQuantizationMapCapabilitiesKHR {}
31779unsafe impl Sync for VideoEncodeQuantizationMapCapabilitiesKHR {}
31780
31781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html>
31782#[repr(C)]
31783#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31784pub struct VideoEncodeQuantizationMapInfoKHR {
31785    pub s_type: StructureType,
31786    pub next: *const c_void,
31787    pub quantization_map: ImageView,
31788    pub quantization_map_extent: Extent2D,
31789}
31790
31791impl Default for VideoEncodeQuantizationMapInfoKHR {
31792    #[inline]
31793    fn default() -> Self {
31794        Self {
31795            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR,
31796            next: ptr::null(),
31797            quantization_map: ImageView::default(),
31798            quantization_map_extent: Extent2D::default(),
31799        }
31800    }
31801}
31802
31803unsafe impl Send for VideoEncodeQuantizationMapInfoKHR {}
31804unsafe impl Sync for VideoEncodeQuantizationMapInfoKHR {}
31805
31806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html>
31807#[repr(C)]
31808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31809pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
31810    pub s_type: StructureType,
31811    pub next: *const c_void,
31812    pub quantization_map_texel_size: Extent2D,
31813}
31814
31815impl Default for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
31816    #[inline]
31817    fn default() -> Self {
31818        Self {
31819            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR,
31820            next: ptr::null(),
31821            quantization_map_texel_size: Extent2D::default(),
31822        }
31823    }
31824}
31825
31826unsafe impl Send for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
31827unsafe impl Sync for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
31828
31829/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html>
31830#[repr(C)]
31831#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31832pub struct VideoEncodeRateControlInfoKHR {
31833    pub s_type: StructureType,
31834    pub next: *const c_void,
31835    pub flags: VideoEncodeRateControlFlagsKHR,
31836    pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
31837    pub layer_count: u32,
31838    pub layers: *const VideoEncodeRateControlLayerInfoKHR,
31839    pub virtual_buffer_size_in_ms: u32,
31840    pub initial_virtual_buffer_size_in_ms: u32,
31841}
31842
31843impl Default for VideoEncodeRateControlInfoKHR {
31844    #[inline]
31845    fn default() -> Self {
31846        Self {
31847            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
31848            next: ptr::null(),
31849            flags: VideoEncodeRateControlFlagsKHR::default(),
31850            rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
31851            layer_count: u32::default(),
31852            layers: ptr::null(),
31853            virtual_buffer_size_in_ms: u32::default(),
31854            initial_virtual_buffer_size_in_ms: u32::default(),
31855        }
31856    }
31857}
31858
31859unsafe impl Send for VideoEncodeRateControlInfoKHR {}
31860unsafe impl Sync for VideoEncodeRateControlInfoKHR {}
31861
31862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>
31863#[repr(C)]
31864#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31865pub struct VideoEncodeRateControlLayerInfoKHR {
31866    pub s_type: StructureType,
31867    pub next: *const c_void,
31868    pub average_bitrate: u64,
31869    pub max_bitrate: u64,
31870    pub frame_rate_numerator: u32,
31871    pub frame_rate_denominator: u32,
31872}
31873
31874impl Default for VideoEncodeRateControlLayerInfoKHR {
31875    #[inline]
31876    fn default() -> Self {
31877        Self {
31878            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
31879            next: ptr::null(),
31880            average_bitrate: u64::default(),
31881            max_bitrate: u64::default(),
31882            frame_rate_numerator: u32::default(),
31883            frame_rate_denominator: u32::default(),
31884        }
31885    }
31886}
31887
31888unsafe impl Send for VideoEncodeRateControlLayerInfoKHR {}
31889unsafe impl Sync for VideoEncodeRateControlLayerInfoKHR {}
31890
31891/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbConversionCapabilitiesVALVE.html>
31892#[repr(C)]
31893#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31894pub struct VideoEncodeRgbConversionCapabilitiesVALVE {
31895    pub s_type: StructureType,
31896    pub next: *mut c_void,
31897    pub rgb_models: VideoEncodeRgbModelConversionFlagsVALVE,
31898    pub rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE,
31899    pub x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
31900    pub y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
31901}
31902
31903impl Default for VideoEncodeRgbConversionCapabilitiesVALVE {
31904    #[inline]
31905    fn default() -> Self {
31906        Self {
31907            s_type: StructureType::VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE,
31908            next: ptr::null_mut(),
31909            rgb_models: VideoEncodeRgbModelConversionFlagsVALVE::default(),
31910            rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
31911            x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
31912            y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
31913        }
31914    }
31915}
31916
31917unsafe impl Send for VideoEncodeRgbConversionCapabilitiesVALVE {}
31918unsafe impl Sync for VideoEncodeRgbConversionCapabilitiesVALVE {}
31919
31920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionIntraRefreshCreateInfoKHR.html>
31921#[repr(C)]
31922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31923pub struct VideoEncodeSessionIntraRefreshCreateInfoKHR {
31924    pub s_type: StructureType,
31925    pub next: *const c_void,
31926    pub intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR,
31927}
31928
31929impl Default for VideoEncodeSessionIntraRefreshCreateInfoKHR {
31930    #[inline]
31931    fn default() -> Self {
31932        Self {
31933            s_type: StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR,
31934            next: ptr::null(),
31935            intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR::default(),
31936        }
31937    }
31938}
31939
31940unsafe impl Send for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
31941unsafe impl Sync for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
31942
31943/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html>
31944#[repr(C)]
31945#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31946pub struct VideoEncodeSessionParametersFeedbackInfoKHR {
31947    pub s_type: StructureType,
31948    pub next: *mut c_void,
31949    pub has_overrides: Bool32,
31950}
31951
31952impl Default for VideoEncodeSessionParametersFeedbackInfoKHR {
31953    #[inline]
31954    fn default() -> Self {
31955        Self {
31956            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
31957            next: ptr::null_mut(),
31958            has_overrides: Bool32::default(),
31959        }
31960    }
31961}
31962
31963unsafe impl Send for VideoEncodeSessionParametersFeedbackInfoKHR {}
31964unsafe impl Sync for VideoEncodeSessionParametersFeedbackInfoKHR {}
31965
31966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html>
31967#[repr(C)]
31968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31969pub struct VideoEncodeSessionParametersGetInfoKHR {
31970    pub s_type: StructureType,
31971    pub next: *const c_void,
31972    pub video_session_parameters: VideoSessionParametersKHR,
31973}
31974
31975impl Default for VideoEncodeSessionParametersGetInfoKHR {
31976    #[inline]
31977    fn default() -> Self {
31978        Self {
31979            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
31980            next: ptr::null(),
31981            video_session_parameters: VideoSessionParametersKHR::default(),
31982        }
31983    }
31984}
31985
31986unsafe impl Send for VideoEncodeSessionParametersGetInfoKHR {}
31987unsafe impl Sync for VideoEncodeSessionParametersGetInfoKHR {}
31988
31989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionRgbConversionCreateInfoVALVE.html>
31990#[repr(C)]
31991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31992pub struct VideoEncodeSessionRgbConversionCreateInfoVALVE {
31993    pub s_type: StructureType,
31994    pub next: *const c_void,
31995    pub rgb_model: VideoEncodeRgbModelConversionFlagsVALVE,
31996    pub rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE,
31997    pub x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
31998    pub y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
31999}
32000
32001impl Default for VideoEncodeSessionRgbConversionCreateInfoVALVE {
32002    #[inline]
32003    fn default() -> Self {
32004        Self {
32005            s_type: StructureType::VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE,
32006            next: ptr::null(),
32007            rgb_model: VideoEncodeRgbModelConversionFlagsVALVE::default(),
32008            rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
32009            x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32010            y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
32011        }
32012    }
32013}
32014
32015unsafe impl Send for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
32016unsafe impl Sync for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
32017
32018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html>
32019#[repr(C)]
32020#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32021pub struct VideoEncodeUsageInfoKHR {
32022    pub s_type: StructureType,
32023    pub next: *const c_void,
32024    pub video_usage_hints: VideoEncodeUsageFlagsKHR,
32025    pub video_content_hints: VideoEncodeContentFlagsKHR,
32026    pub tuning_mode: VideoEncodeTuningModeKHR,
32027}
32028
32029impl Default for VideoEncodeUsageInfoKHR {
32030    #[inline]
32031    fn default() -> Self {
32032        Self {
32033            s_type: StructureType::VIDEO_ENCODE_USAGE_INFO_KHR,
32034            next: ptr::null(),
32035            video_usage_hints: VideoEncodeUsageFlagsKHR::default(),
32036            video_content_hints: VideoEncodeContentFlagsKHR::default(),
32037            tuning_mode: VideoEncodeTuningModeKHR::default(),
32038        }
32039    }
32040}
32041
32042unsafe impl Send for VideoEncodeUsageInfoKHR {}
32043unsafe impl Sync for VideoEncodeUsageInfoKHR {}
32044
32045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html>
32046#[repr(C)]
32047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32048pub struct VideoEndCodingInfoKHR {
32049    pub s_type: StructureType,
32050    pub next: *const c_void,
32051    pub flags: VideoEndCodingFlagsKHR,
32052}
32053
32054impl Default for VideoEndCodingInfoKHR {
32055    #[inline]
32056    fn default() -> Self {
32057        Self {
32058            s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
32059            next: ptr::null(),
32060            flags: VideoEndCodingFlagsKHR::default(),
32061        }
32062    }
32063}
32064
32065unsafe impl Send for VideoEndCodingInfoKHR {}
32066unsafe impl Sync for VideoEndCodingInfoKHR {}
32067
32068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html>
32069#[repr(C)]
32070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32071pub struct VideoFormatAV1QuantizationMapPropertiesKHR {
32072    pub s_type: StructureType,
32073    pub next: *mut c_void,
32074    pub compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
32075}
32076
32077impl Default for VideoFormatAV1QuantizationMapPropertiesKHR {
32078    #[inline]
32079    fn default() -> Self {
32080        Self {
32081            s_type: StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR,
32082            next: ptr::null_mut(),
32083            compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
32084        }
32085    }
32086}
32087
32088unsafe impl Send for VideoFormatAV1QuantizationMapPropertiesKHR {}
32089unsafe impl Sync for VideoFormatAV1QuantizationMapPropertiesKHR {}
32090
32091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html>
32092#[repr(C)]
32093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32094pub struct VideoFormatH265QuantizationMapPropertiesKHR {
32095    pub s_type: StructureType,
32096    pub next: *mut c_void,
32097    pub compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
32098}
32099
32100impl Default for VideoFormatH265QuantizationMapPropertiesKHR {
32101    #[inline]
32102    fn default() -> Self {
32103        Self {
32104            s_type: StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR,
32105            next: ptr::null_mut(),
32106            compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
32107        }
32108    }
32109}
32110
32111unsafe impl Send for VideoFormatH265QuantizationMapPropertiesKHR {}
32112unsafe impl Sync for VideoFormatH265QuantizationMapPropertiesKHR {}
32113
32114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html>
32115#[repr(C)]
32116#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32117pub struct VideoFormatPropertiesKHR {
32118    pub s_type: StructureType,
32119    pub next: *mut c_void,
32120    pub format: Format,
32121    pub component_mapping: ComponentMapping,
32122    pub image_create_flags: ImageCreateFlags,
32123    pub image_type: ImageType,
32124    pub image_tiling: ImageTiling,
32125    pub image_usage_flags: ImageUsageFlags,
32126}
32127
32128impl Default for VideoFormatPropertiesKHR {
32129    #[inline]
32130    fn default() -> Self {
32131        Self {
32132            s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
32133            next: ptr::null_mut(),
32134            format: Format::default(),
32135            component_mapping: ComponentMapping::default(),
32136            image_create_flags: ImageCreateFlags::default(),
32137            image_type: ImageType::default(),
32138            image_tiling: ImageTiling::default(),
32139            image_usage_flags: ImageUsageFlags::default(),
32140        }
32141    }
32142}
32143
32144unsafe impl Send for VideoFormatPropertiesKHR {}
32145unsafe impl Sync for VideoFormatPropertiesKHR {}
32146
32147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html>
32148#[repr(C)]
32149#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32150pub struct VideoFormatQuantizationMapPropertiesKHR {
32151    pub s_type: StructureType,
32152    pub next: *mut c_void,
32153    pub quantization_map_texel_size: Extent2D,
32154}
32155
32156impl Default for VideoFormatQuantizationMapPropertiesKHR {
32157    #[inline]
32158    fn default() -> Self {
32159        Self {
32160            s_type: StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR,
32161            next: ptr::null_mut(),
32162            quantization_map_texel_size: Extent2D::default(),
32163        }
32164    }
32165}
32166
32167unsafe impl Send for VideoFormatQuantizationMapPropertiesKHR {}
32168unsafe impl Sync for VideoFormatQuantizationMapPropertiesKHR {}
32169
32170/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html>
32171#[repr(C)]
32172#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32173pub struct VideoInlineQueryInfoKHR {
32174    pub s_type: StructureType,
32175    pub next: *const c_void,
32176    pub query_pool: QueryPool,
32177    pub first_query: u32,
32178    pub query_count: u32,
32179}
32180
32181impl Default for VideoInlineQueryInfoKHR {
32182    #[inline]
32183    fn default() -> Self {
32184        Self {
32185            s_type: StructureType::VIDEO_INLINE_QUERY_INFO_KHR,
32186            next: ptr::null(),
32187            query_pool: QueryPool::default(),
32188            first_query: u32::default(),
32189            query_count: u32::default(),
32190        }
32191    }
32192}
32193
32194unsafe impl Send for VideoInlineQueryInfoKHR {}
32195unsafe impl Sync for VideoInlineQueryInfoKHR {}
32196
32197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html>
32198#[repr(C)]
32199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32200pub struct VideoPictureResourceInfoKHR {
32201    pub s_type: StructureType,
32202    pub next: *const c_void,
32203    pub coded_offset: Offset2D,
32204    pub coded_extent: Extent2D,
32205    pub base_array_layer: u32,
32206    pub image_view_binding: ImageView,
32207}
32208
32209impl Default for VideoPictureResourceInfoKHR {
32210    #[inline]
32211    fn default() -> Self {
32212        Self {
32213            s_type: StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR,
32214            next: ptr::null(),
32215            coded_offset: Offset2D::default(),
32216            coded_extent: Extent2D::default(),
32217            base_array_layer: u32::default(),
32218            image_view_binding: ImageView::default(),
32219        }
32220    }
32221}
32222
32223unsafe impl Send for VideoPictureResourceInfoKHR {}
32224unsafe impl Sync for VideoPictureResourceInfoKHR {}
32225
32226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html>
32227#[repr(C)]
32228#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32229pub struct VideoProfileInfoKHR {
32230    pub s_type: StructureType,
32231    pub next: *const c_void,
32232    pub video_codec_operation: VideoCodecOperationFlagsKHR,
32233    pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
32234    pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
32235    pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
32236}
32237
32238impl Default for VideoProfileInfoKHR {
32239    #[inline]
32240    fn default() -> Self {
32241        Self {
32242            s_type: StructureType::VIDEO_PROFILE_INFO_KHR,
32243            next: ptr::null(),
32244            video_codec_operation: VideoCodecOperationFlagsKHR::default(),
32245            chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
32246            luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
32247            chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
32248        }
32249    }
32250}
32251
32252unsafe impl Send for VideoProfileInfoKHR {}
32253unsafe impl Sync for VideoProfileInfoKHR {}
32254
32255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html>
32256#[repr(C)]
32257#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32258pub struct VideoProfileListInfoKHR {
32259    pub s_type: StructureType,
32260    pub next: *const c_void,
32261    pub profile_count: u32,
32262    pub profiles: *const VideoProfileInfoKHR,
32263}
32264
32265impl Default for VideoProfileListInfoKHR {
32266    #[inline]
32267    fn default() -> Self {
32268        Self {
32269            s_type: StructureType::VIDEO_PROFILE_LIST_INFO_KHR,
32270            next: ptr::null(),
32271            profile_count: u32::default(),
32272            profiles: ptr::null(),
32273        }
32274    }
32275}
32276
32277unsafe impl Send for VideoProfileListInfoKHR {}
32278unsafe impl Sync for VideoProfileListInfoKHR {}
32279
32280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceIntraRefreshInfoKHR.html>
32281#[repr(C)]
32282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32283pub struct VideoReferenceIntraRefreshInfoKHR {
32284    pub s_type: StructureType,
32285    pub next: *const c_void,
32286    pub dirty_intra_refresh_regions: u32,
32287}
32288
32289impl Default for VideoReferenceIntraRefreshInfoKHR {
32290    #[inline]
32291    fn default() -> Self {
32292        Self {
32293            s_type: StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR,
32294            next: ptr::null(),
32295            dirty_intra_refresh_regions: u32::default(),
32296        }
32297    }
32298}
32299
32300unsafe impl Send for VideoReferenceIntraRefreshInfoKHR {}
32301unsafe impl Sync for VideoReferenceIntraRefreshInfoKHR {}
32302
32303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html>
32304#[repr(C)]
32305#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32306pub struct VideoReferenceSlotInfoKHR {
32307    pub s_type: StructureType,
32308    pub next: *const c_void,
32309    pub slot_index: i32,
32310    pub picture_resource: *const VideoPictureResourceInfoKHR,
32311}
32312
32313impl Default for VideoReferenceSlotInfoKHR {
32314    #[inline]
32315    fn default() -> Self {
32316        Self {
32317            s_type: StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR,
32318            next: ptr::null(),
32319            slot_index: i32::default(),
32320            picture_resource: ptr::null(),
32321        }
32322    }
32323}
32324
32325unsafe impl Send for VideoReferenceSlotInfoKHR {}
32326unsafe impl Sync for VideoReferenceSlotInfoKHR {}
32327
32328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html>
32329#[repr(C)]
32330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32331pub struct VideoSessionCreateInfoKHR {
32332    pub s_type: StructureType,
32333    pub next: *const c_void,
32334    pub queue_family_index: u32,
32335    pub flags: VideoSessionCreateFlagsKHR,
32336    pub video_profile: *const VideoProfileInfoKHR,
32337    pub picture_format: Format,
32338    pub max_coded_extent: Extent2D,
32339    pub reference_picture_format: Format,
32340    pub max_dpb_slots: u32,
32341    pub max_active_reference_pictures: u32,
32342    pub std_header_version: *const ExtensionProperties,
32343}
32344
32345impl Default for VideoSessionCreateInfoKHR {
32346    #[inline]
32347    fn default() -> Self {
32348        Self {
32349            s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
32350            next: ptr::null(),
32351            queue_family_index: u32::default(),
32352            flags: VideoSessionCreateFlagsKHR::default(),
32353            video_profile: ptr::null(),
32354            picture_format: Format::default(),
32355            max_coded_extent: Extent2D::default(),
32356            reference_picture_format: Format::default(),
32357            max_dpb_slots: u32::default(),
32358            max_active_reference_pictures: u32::default(),
32359            std_header_version: ptr::null(),
32360        }
32361    }
32362}
32363
32364unsafe impl Send for VideoSessionCreateInfoKHR {}
32365unsafe impl Sync for VideoSessionCreateInfoKHR {}
32366
32367/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html>
32368#[repr(C)]
32369#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32370pub struct VideoSessionMemoryRequirementsKHR {
32371    pub s_type: StructureType,
32372    pub next: *mut c_void,
32373    pub memory_bind_index: u32,
32374    pub memory_requirements: MemoryRequirements,
32375}
32376
32377impl Default for VideoSessionMemoryRequirementsKHR {
32378    #[inline]
32379    fn default() -> Self {
32380        Self {
32381            s_type: StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
32382            next: ptr::null_mut(),
32383            memory_bind_index: u32::default(),
32384            memory_requirements: MemoryRequirements::default(),
32385        }
32386    }
32387}
32388
32389unsafe impl Send for VideoSessionMemoryRequirementsKHR {}
32390unsafe impl Sync for VideoSessionMemoryRequirementsKHR {}
32391
32392/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html>
32393#[repr(C)]
32394#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32395pub struct VideoSessionParametersCreateInfoKHR {
32396    pub s_type: StructureType,
32397    pub next: *const c_void,
32398    pub flags: VideoSessionParametersCreateFlagsKHR,
32399    pub video_session_parameters_template: VideoSessionParametersKHR,
32400    pub video_session: VideoSessionKHR,
32401}
32402
32403impl Default for VideoSessionParametersCreateInfoKHR {
32404    #[inline]
32405    fn default() -> Self {
32406        Self {
32407            s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
32408            next: ptr::null(),
32409            flags: VideoSessionParametersCreateFlagsKHR::default(),
32410            video_session_parameters_template: VideoSessionParametersKHR::default(),
32411            video_session: VideoSessionKHR::default(),
32412        }
32413    }
32414}
32415
32416unsafe impl Send for VideoSessionParametersCreateInfoKHR {}
32417unsafe impl Sync for VideoSessionParametersCreateInfoKHR {}
32418
32419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html>
32420#[repr(C)]
32421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32422pub struct VideoSessionParametersUpdateInfoKHR {
32423    pub s_type: StructureType,
32424    pub next: *const c_void,
32425    pub update_sequence_count: u32,
32426}
32427
32428impl Default for VideoSessionParametersUpdateInfoKHR {
32429    #[inline]
32430    fn default() -> Self {
32431        Self {
32432            s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
32433            next: ptr::null(),
32434            update_sequence_count: u32::default(),
32435        }
32436    }
32437}
32438
32439unsafe impl Send for VideoSessionParametersUpdateInfoKHR {}
32440unsafe impl Sync for VideoSessionParametersUpdateInfoKHR {}
32441
32442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewport.html>
32443#[repr(C)]
32444#[derive(Copy, Clone, Default, Debug, PartialEq)]
32445pub struct Viewport {
32446    pub x: f32,
32447    pub y: f32,
32448    pub width: f32,
32449    pub height: f32,
32450    pub min_depth: f32,
32451    pub max_depth: f32,
32452}
32453
32454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html>
32455#[repr(C)]
32456#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
32457pub struct ViewportSwizzleNV {
32458    pub x: ViewportCoordinateSwizzleNV,
32459    pub y: ViewportCoordinateSwizzleNV,
32460    pub z: ViewportCoordinateSwizzleNV,
32461    pub w: ViewportCoordinateSwizzleNV,
32462}
32463
32464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportWScalingNV.html>
32465#[repr(C)]
32466#[derive(Copy, Clone, Default, Debug, PartialEq)]
32467pub struct ViewportWScalingNV {
32468    pub xcoeff: f32,
32469    pub ycoeff: f32,
32470}
32471
32472/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html>
32473#[repr(C)]
32474#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32475pub struct WaylandSurfaceCreateInfoKHR {
32476    pub s_type: StructureType,
32477    pub next: *const c_void,
32478    pub flags: WaylandSurfaceCreateFlagsKHR,
32479    pub display: *mut wl_display,
32480    pub surface: *mut wl_surface,
32481}
32482
32483impl Default for WaylandSurfaceCreateInfoKHR {
32484    #[inline]
32485    fn default() -> Self {
32486        Self {
32487            s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
32488            next: ptr::null(),
32489            flags: WaylandSurfaceCreateFlagsKHR::default(),
32490            display: ptr::null_mut(),
32491            surface: ptr::null_mut(),
32492        }
32493    }
32494}
32495
32496unsafe impl Send for WaylandSurfaceCreateInfoKHR {}
32497unsafe impl Sync for WaylandSurfaceCreateInfoKHR {}
32498
32499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>
32500#[repr(C)]
32501#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32502pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
32503    pub s_type: StructureType,
32504    pub next: *const c_void,
32505    pub acquire_count: u32,
32506    pub acquire_syncs: *const DeviceMemory,
32507    pub acquire_keys: *const u64,
32508    pub acquire_timeouts: *const u32,
32509    pub release_count: u32,
32510    pub release_syncs: *const DeviceMemory,
32511    pub release_keys: *const u64,
32512}
32513
32514impl Default for Win32KeyedMutexAcquireReleaseInfoKHR {
32515    #[inline]
32516    fn default() -> Self {
32517        Self {
32518            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
32519            next: ptr::null(),
32520            acquire_count: u32::default(),
32521            acquire_syncs: ptr::null(),
32522            acquire_keys: ptr::null(),
32523            acquire_timeouts: ptr::null(),
32524            release_count: u32::default(),
32525            release_syncs: ptr::null(),
32526            release_keys: ptr::null(),
32527        }
32528    }
32529}
32530
32531unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoKHR {}
32532unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoKHR {}
32533
32534/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>
32535#[repr(C)]
32536#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32537pub struct Win32KeyedMutexAcquireReleaseInfoNV {
32538    pub s_type: StructureType,
32539    pub next: *const c_void,
32540    pub acquire_count: u32,
32541    pub acquire_syncs: *const DeviceMemory,
32542    pub acquire_keys: *const u64,
32543    pub acquire_timeout_milliseconds: *const u32,
32544    pub release_count: u32,
32545    pub release_syncs: *const DeviceMemory,
32546    pub release_keys: *const u64,
32547}
32548
32549impl Default for Win32KeyedMutexAcquireReleaseInfoNV {
32550    #[inline]
32551    fn default() -> Self {
32552        Self {
32553            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
32554            next: ptr::null(),
32555            acquire_count: u32::default(),
32556            acquire_syncs: ptr::null(),
32557            acquire_keys: ptr::null(),
32558            acquire_timeout_milliseconds: ptr::null(),
32559            release_count: u32::default(),
32560            release_syncs: ptr::null(),
32561            release_keys: ptr::null(),
32562        }
32563    }
32564}
32565
32566unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoNV {}
32567unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoNV {}
32568
32569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html>
32570#[repr(C)]
32571#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32572pub struct Win32SurfaceCreateInfoKHR {
32573    pub s_type: StructureType,
32574    pub next: *const c_void,
32575    pub flags: Win32SurfaceCreateFlagsKHR,
32576    pub hinstance: HINSTANCE,
32577    pub hwnd: HWND,
32578}
32579
32580impl Default for Win32SurfaceCreateInfoKHR {
32581    #[inline]
32582    fn default() -> Self {
32583        Self {
32584            s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
32585            next: ptr::null(),
32586            flags: Win32SurfaceCreateFlagsKHR::default(),
32587            hinstance: ptr::null_mut(),
32588            hwnd: ptr::null_mut(),
32589        }
32590    }
32591}
32592
32593unsafe impl Send for Win32SurfaceCreateInfoKHR {}
32594unsafe impl Sync for Win32SurfaceCreateInfoKHR {}
32595
32596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html>
32597#[repr(C)]
32598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32599pub struct WriteDescriptorSet {
32600    pub s_type: StructureType,
32601    pub next: *const c_void,
32602    pub dst_set: DescriptorSet,
32603    pub dst_binding: u32,
32604    pub dst_array_element: u32,
32605    pub descriptor_count: u32,
32606    pub descriptor_type: DescriptorType,
32607    pub image_info: *const DescriptorImageInfo,
32608    pub buffer_info: *const DescriptorBufferInfo,
32609    pub texel_buffer_view: *const BufferView,
32610}
32611
32612impl Default for WriteDescriptorSet {
32613    #[inline]
32614    fn default() -> Self {
32615        Self {
32616            s_type: StructureType::WRITE_DESCRIPTOR_SET,
32617            next: ptr::null(),
32618            dst_set: DescriptorSet::default(),
32619            dst_binding: u32::default(),
32620            dst_array_element: u32::default(),
32621            descriptor_count: u32::default(),
32622            descriptor_type: DescriptorType::default(),
32623            image_info: ptr::null(),
32624            buffer_info: ptr::null(),
32625            texel_buffer_view: ptr::null(),
32626        }
32627    }
32628}
32629
32630unsafe impl Send for WriteDescriptorSet {}
32631unsafe impl Sync for WriteDescriptorSet {}
32632
32633/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>
32634#[repr(C)]
32635#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32636pub struct WriteDescriptorSetAccelerationStructureKHR {
32637    pub s_type: StructureType,
32638    pub next: *const c_void,
32639    pub acceleration_structure_count: u32,
32640    pub acceleration_structures: *const AccelerationStructureKHR,
32641}
32642
32643impl Default for WriteDescriptorSetAccelerationStructureKHR {
32644    #[inline]
32645    fn default() -> Self {
32646        Self {
32647            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
32648            next: ptr::null(),
32649            acceleration_structure_count: u32::default(),
32650            acceleration_structures: ptr::null(),
32651        }
32652    }
32653}
32654
32655unsafe impl Send for WriteDescriptorSetAccelerationStructureKHR {}
32656unsafe impl Sync for WriteDescriptorSetAccelerationStructureKHR {}
32657
32658/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>
32659#[repr(C)]
32660#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32661pub struct WriteDescriptorSetAccelerationStructureNV {
32662    pub s_type: StructureType,
32663    pub next: *const c_void,
32664    pub acceleration_structure_count: u32,
32665    pub acceleration_structures: *const AccelerationStructureNV,
32666}
32667
32668impl Default for WriteDescriptorSetAccelerationStructureNV {
32669    #[inline]
32670    fn default() -> Self {
32671        Self {
32672            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
32673            next: ptr::null(),
32674            acceleration_structure_count: u32::default(),
32675            acceleration_structures: ptr::null(),
32676        }
32677    }
32678}
32679
32680unsafe impl Send for WriteDescriptorSetAccelerationStructureNV {}
32681unsafe impl Sync for WriteDescriptorSetAccelerationStructureNV {}
32682
32683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html>
32684#[repr(C)]
32685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32686pub struct WriteDescriptorSetInlineUniformBlock {
32687    pub s_type: StructureType,
32688    pub next: *const c_void,
32689    pub data_size: u32,
32690    pub data: *const c_void,
32691}
32692
32693impl Default for WriteDescriptorSetInlineUniformBlock {
32694    #[inline]
32695    fn default() -> Self {
32696        Self {
32697            s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
32698            next: ptr::null(),
32699            data_size: u32::default(),
32700            data: ptr::null(),
32701        }
32702    }
32703}
32704
32705unsafe impl Send for WriteDescriptorSetInlineUniformBlock {}
32706unsafe impl Sync for WriteDescriptorSetInlineUniformBlock {}
32707
32708/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html>
32709#[repr(C)]
32710#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32711pub struct WriteDescriptorSetPartitionedAccelerationStructureNV {
32712    pub s_type: StructureType,
32713    pub next: *mut c_void,
32714    pub acceleration_structure_count: u32,
32715    pub acceleration_structures: *const DeviceAddress,
32716}
32717
32718impl Default for WriteDescriptorSetPartitionedAccelerationStructureNV {
32719    #[inline]
32720    fn default() -> Self {
32721        Self {
32722            s_type: StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV,
32723            next: ptr::null_mut(),
32724            acceleration_structure_count: u32::default(),
32725            acceleration_structures: ptr::null(),
32726        }
32727    }
32728}
32729
32730unsafe impl Send for WriteDescriptorSetPartitionedAccelerationStructureNV {}
32731unsafe impl Sync for WriteDescriptorSetPartitionedAccelerationStructureNV {}
32732
32733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetTensorARM.html>
32734#[repr(C)]
32735#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32736pub struct WriteDescriptorSetTensorARM {
32737    pub s_type: StructureType,
32738    pub next: *const c_void,
32739    pub tensor_view_count: u32,
32740    pub tensor_views: *const TensorViewARM,
32741}
32742
32743impl Default for WriteDescriptorSetTensorARM {
32744    #[inline]
32745    fn default() -> Self {
32746        Self {
32747            s_type: StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM,
32748            next: ptr::null(),
32749            tensor_view_count: u32::default(),
32750            tensor_views: ptr::null(),
32751        }
32752    }
32753}
32754
32755unsafe impl Send for WriteDescriptorSetTensorARM {}
32756unsafe impl Sync for WriteDescriptorSetTensorARM {}
32757
32758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html>
32759#[repr(C)]
32760#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32761pub struct WriteIndirectExecutionSetPipelineEXT {
32762    pub s_type: StructureType,
32763    pub next: *const c_void,
32764    pub index: u32,
32765    pub pipeline: Pipeline,
32766}
32767
32768impl Default for WriteIndirectExecutionSetPipelineEXT {
32769    #[inline]
32770    fn default() -> Self {
32771        Self {
32772            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT,
32773            next: ptr::null(),
32774            index: u32::default(),
32775            pipeline: Pipeline::default(),
32776        }
32777    }
32778}
32779
32780unsafe impl Send for WriteIndirectExecutionSetPipelineEXT {}
32781unsafe impl Sync for WriteIndirectExecutionSetPipelineEXT {}
32782
32783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html>
32784#[repr(C)]
32785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32786pub struct WriteIndirectExecutionSetShaderEXT {
32787    pub s_type: StructureType,
32788    pub next: *const c_void,
32789    pub index: u32,
32790    pub shader: ShaderEXT,
32791}
32792
32793impl Default for WriteIndirectExecutionSetShaderEXT {
32794    #[inline]
32795    fn default() -> Self {
32796        Self {
32797            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT,
32798            next: ptr::null(),
32799            index: u32::default(),
32800            shader: ShaderEXT::default(),
32801        }
32802    }
32803}
32804
32805unsafe impl Send for WriteIndirectExecutionSetShaderEXT {}
32806unsafe impl Sync for WriteIndirectExecutionSetShaderEXT {}
32807
32808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXYColorEXT.html>
32809#[repr(C)]
32810#[derive(Copy, Clone, Default, Debug, PartialEq)]
32811pub struct XYColorEXT {
32812    pub x: f32,
32813    pub y: f32,
32814}
32815
32816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html>
32817#[repr(C)]
32818#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32819pub struct XcbSurfaceCreateInfoKHR {
32820    pub s_type: StructureType,
32821    pub next: *const c_void,
32822    pub flags: XcbSurfaceCreateFlagsKHR,
32823    pub connection: *mut xcb_connection_t,
32824    pub window: xcb_window_t,
32825}
32826
32827impl Default for XcbSurfaceCreateInfoKHR {
32828    #[inline]
32829    fn default() -> Self {
32830        Self {
32831            s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
32832            next: ptr::null(),
32833            flags: XcbSurfaceCreateFlagsKHR::default(),
32834            connection: ptr::null_mut(),
32835            window: xcb_window_t::default(),
32836        }
32837    }
32838}
32839
32840unsafe impl Send for XcbSurfaceCreateInfoKHR {}
32841unsafe impl Sync for XcbSurfaceCreateInfoKHR {}
32842
32843/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html>
32844#[repr(C)]
32845#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32846pub struct XlibSurfaceCreateInfoKHR {
32847    pub s_type: StructureType,
32848    pub next: *const c_void,
32849    pub flags: XlibSurfaceCreateFlagsKHR,
32850    pub dpy: *mut Display,
32851    pub window: Window,
32852}
32853
32854impl Default for XlibSurfaceCreateInfoKHR {
32855    #[inline]
32856    fn default() -> Self {
32857        Self {
32858            s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
32859            next: ptr::null(),
32860            flags: XlibSurfaceCreateFlagsKHR::default(),
32861            dpy: ptr::null_mut(),
32862            window: Window::default(),
32863        }
32864    }
32865}
32866
32867unsafe impl Send for XlibSurfaceCreateInfoKHR {}
32868unsafe impl Sync for XlibSurfaceCreateInfoKHR {}
32869
32870/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsNV.html>
32871pub type AabbPositionsNV = AabbPositionsKHR;
32872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceNV.html>
32873pub type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
32874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2KHR.html>
32875pub type AttachmentDescription2KHR = AttachmentDescription2;
32876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayoutKHR.html>
32877pub type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
32878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2KHR.html>
32879pub type AttachmentReference2KHR = AttachmentReference2;
32880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayoutKHR.html>
32881pub type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
32882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoNV.html>
32883pub type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
32884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfoKHR.html>
32885pub type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
32886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfoKHR.html>
32887pub type BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
32888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfoKHR.html>
32889pub type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
32890/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfoKHR.html>
32891pub type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
32892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfoKHR.html>
32893pub type BindImageMemoryInfoKHR = BindImageMemoryInfo;
32894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfoKHR.html>
32895pub type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
32896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatusKHR.html>
32897pub type BindMemoryStatusKHR = BindMemoryStatus;
32898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
32899pub type BlitImageInfo2KHR = BlitImageInfo2;
32900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
32901pub type BufferCopy2KHR = BufferCopy2;
32902/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoEXT.html>
32903pub type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
32904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoKHR.html>
32905pub type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
32906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
32907pub type BufferImageCopy2KHR = BufferImageCopy2;
32908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2KHR.html>
32909pub type BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
32910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2KHR.html>
32911pub type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
32912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfoKHR.html>
32913pub type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
32914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfoKHR.html>
32915pub type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
32916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoEXT.html>
32917pub type CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
32918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>
32919pub type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
32920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfoKHR.html>
32921pub type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
32922/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersionKHR.html>
32923pub type ConformanceVersionKHR = ConformanceVersion;
32924/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
32925pub type CopyBufferInfo2KHR = CopyBufferInfo2;
32926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
32927pub type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
32928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
32929pub type CopyImageInfo2KHR = CopyImageInfo2;
32930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
32931pub type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
32932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfoEXT.html>
32933pub type CopyImageToImageInfoEXT = CopyImageToImageInfo;
32934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfoEXT.html>
32935pub type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
32936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandNV.html>
32937pub type CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR;
32938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandNV.html>
32939pub type CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR;
32940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfoEXT.html>
32941pub type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
32942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfoKHR.html>
32943pub type DependencyInfoKHR = DependencyInfo;
32944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>
32945pub type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
32946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.html>
32947pub type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
32948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupportKHR.html>
32949pub type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
32950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.html>
32951pub type DescriptorSetVariableDescriptorCountAllocateInfoEXT =
32952    DescriptorSetVariableDescriptorCountAllocateInfo;
32953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.html>
32954pub type DescriptorSetVariableDescriptorCountLayoutSupportEXT =
32955    DescriptorSetVariableDescriptorCountLayoutSupport;
32956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html>
32957pub type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
32958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntryKHR.html>
32959pub type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
32960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirementsKHR.html>
32961pub type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
32962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfoKHR.html>
32963pub type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
32964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfoKHR.html>
32965pub type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
32966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfoKHR.html>
32967pub type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
32968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfoKHR.html>
32969pub type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
32970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfoKHR.html>
32971pub type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
32972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirementsKHR.html>
32973pub type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
32974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfoKHR.html>
32975pub type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
32976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfoKHR.html>
32977pub type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
32978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfoEXT.html>
32979pub type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
32980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>
32981pub type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
32982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoKHR.html>
32983pub type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
32984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfoKHR.html>
32985pub type ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
32986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoKHR.html>
32987pub type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
32988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfoKHR.html>
32989pub type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
32990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferPropertiesKHR.html>
32991pub type ExternalBufferPropertiesKHR = ExternalBufferProperties;
32992/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFencePropertiesKHR.html>
32993pub type ExternalFencePropertiesKHR = ExternalFenceProperties;
32994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesKHR.html>
32995pub type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
32996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfoKHR.html>
32997pub type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
32998/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoKHR.html>
32999pub type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
33000/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryPropertiesKHR.html>
33001pub type ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
33002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphorePropertiesKHR.html>
33003pub type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
33004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2KHR.html>
33005pub type FormatProperties2KHR = FormatProperties2;
33006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3KHR.html>
33007pub type FormatProperties3KHR = FormatProperties3;
33008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfoKHR.html>
33009pub type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
33010/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfoKHR.html>
33011pub type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
33012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQueryEXT.html>
33013pub type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
33014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfoEXT.html>
33015pub type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
33016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
33017pub type ImageBlit2KHR = ImageBlit2;
33018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
33019pub type ImageCopy2KHR = ImageCopy2;
33020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfoKHR.html>
33021pub type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
33022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2KHR.html>
33023pub type ImageFormatProperties2KHR = ImageFormatProperties2;
33024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2KHR.html>
33025pub type ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
33026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2KHR.html>
33027pub type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
33028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html>
33029pub type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
33030/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
33031pub type ImageResolve2KHR = ImageResolve2;
33032/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html>
33033pub type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
33034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfoEXT.html>
33035pub type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
33036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2EXT.html>
33037pub type ImageSubresource2EXT = ImageSubresource2;
33038/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2KHR.html>
33039pub type ImageSubresource2KHR = ImageSubresource2;
33040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopyEXT.html>
33041pub type ImageToMemoryCopyEXT = ImageToMemoryCopy;
33042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfoKHR.html>
33043pub type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
33044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReferenceKHR.html>
33045pub type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
33046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfoKHR.html>
33047pub type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
33048/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2KHR.html>
33049pub type MemoryBarrier2KHR = MemoryBarrier2;
33050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoKHR.html>
33051pub type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
33052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirementsKHR.html>
33053pub type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
33054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfoKHR.html>
33055pub type MemoryMapInfoKHR = MemoryMapInfo;
33056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfoKHR.html>
33057pub type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
33058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2KHR.html>
33059pub type MemoryRequirements2KHR = MemoryRequirements2;
33060/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopyEXT.html>
33061pub type MemoryToImageCopyEXT = MemoryToImageCopy;
33062/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfoKHR.html>
33063pub type MemoryUnmapInfoKHR = MemoryUnmapInfo;
33064/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>
33065pub type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
33066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListVALVE.html>
33067pub type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
33068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html>
33069pub type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
33070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeaturesKHR.html>
33071pub type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
33072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferAddressFeaturesEXT.html>
33073pub type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
33074/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.html>
33075pub type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
33076/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>
33077pub type PhysicalDeviceComputeShaderDerivativesFeaturesNV =
33078    PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
33079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html>
33080pub type PhysicalDeviceCopyMemoryIndirectPropertiesNV =
33081    PhysicalDeviceCopyMemoryIndirectPropertiesKHR;
33082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html>
33083pub type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
33084/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.html>
33085pub type PhysicalDeviceDepthStencilResolvePropertiesKHR =
33086    PhysicalDeviceDepthStencilResolveProperties;
33087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.html>
33088pub type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
33089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.html>
33090pub type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
33091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverPropertiesKHR.html>
33092pub type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
33093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>
33094pub type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
33095/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR.html>
33096pub type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR =
33097    PhysicalDeviceDynamicRenderingLocalReadFeatures;
33098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html>
33099pub type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
33100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html>
33101pub type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
33102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html>
33103pub type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
33104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciBufFeaturesNV.html>
33105pub type PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
33106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html>
33107pub type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
33108/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2KHR.html>
33109pub type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
33110/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloat16Int8FeaturesKHR.html>
33111pub type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
33112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsPropertiesKHR.html>
33113pub type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
33114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>
33115pub type PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM =
33116    PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
33117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>
33118pub type PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM =
33119    PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
33120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>
33121pub type PhysicalDeviceFragmentShaderBarycentricFeaturesNV =
33122    PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
33123/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>
33124pub type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
33125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html>
33126pub type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
33127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupPropertiesKHR.html>
33128pub type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
33129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeaturesEXT.html>
33130pub type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
33131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyPropertiesEXT.html>
33132pub type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
33133/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeaturesEXT.html>
33134pub type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
33135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDPropertiesKHR.html>
33136pub type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
33137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html>
33138pub type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
33139/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>
33140pub type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
33141/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.html>
33142pub type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
33143/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>
33144pub type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
33145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesKHR.html>
33146pub type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
33147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>
33148pub type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
33149/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>
33150pub type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
33151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>
33152pub type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
33153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesKHR.html>
33154pub type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
33155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>
33156pub type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
33157/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesKHR.html>
33158pub type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
33159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3PropertiesKHR.html>
33160pub type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
33161/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>
33162pub type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
33163/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>
33164pub type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
33165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5FeaturesKHR.html>
33166pub type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
33167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5PropertiesKHR.html>
33168pub type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
33169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6FeaturesKHR.html>
33170pub type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
33171/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6PropertiesKHR.html>
33172pub type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
33173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2KHR.html>
33174pub type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
33175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeaturesKHR.html>
33176pub type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
33177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPropertiesKHR.html>
33178pub type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
33179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>
33180pub type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE =
33181    PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
33182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>
33183pub type PhysicalDevicePipelineCreationCacheControlFeaturesEXT =
33184    PhysicalDevicePipelineCreationCacheControlFeatures;
33185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html>
33186pub type PhysicalDevicePipelineProtectedAccessFeaturesEXT =
33187    PhysicalDevicePipelineProtectedAccessFeatures;
33188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html>
33189pub type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
33190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html>
33191pub type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
33192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html>
33193pub type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
33194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT.html>
33195pub type PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT =
33196    PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;
33197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>
33198pub type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
33199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2KHR.html>
33200pub type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
33201/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>
33202pub type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
33203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>
33204pub type PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM =
33205    PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
33206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>
33207pub type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR;
33208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>
33209pub type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR;
33210/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html>
33211pub type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
33212    PhysicalDeviceSamplerFilterMinmaxProperties;
33213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html>
33214pub type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
33215    PhysicalDeviceSamplerYcbcrConversionFeatures;
33216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.html>
33217pub type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
33218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.html>
33219pub type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR =
33220    PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
33221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.html>
33222pub type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
33223/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>
33224pub type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT =
33225    PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
33226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html>
33227pub type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
33228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeaturesKHR.html>
33229pub type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
33230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.html>
33231pub type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
33232/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2FeaturesKHR.html>
33233pub type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
33234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>
33235pub type PhysicalDeviceShaderIntegerDotProductFeaturesKHR =
33236    PhysicalDeviceShaderIntegerDotProductFeatures;
33237/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>
33238pub type PhysicalDeviceShaderIntegerDotProductPropertiesKHR =
33239    PhysicalDeviceShaderIntegerDotProductProperties;
33240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.html>
33241pub type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR =
33242    PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
33243/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR.html>
33244pub type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
33245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>
33246pub type PhysicalDeviceShaderTerminateInvocationFeaturesKHR =
33247    PhysicalDeviceShaderTerminateInvocationFeatures;
33248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html>
33249pub type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
33250/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>
33251pub type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
33252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>
33253pub type PhysicalDeviceSubgroupSizeControlPropertiesEXT =
33254    PhysicalDeviceSubgroupSizeControlProperties;
33255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html>
33256pub type PhysicalDeviceSwapchainMaintenance1FeaturesEXT =
33257    PhysicalDeviceSwapchainMaintenance1FeaturesKHR;
33258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>
33259pub type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
33260/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>
33261pub type PhysicalDeviceTexelBufferAlignmentPropertiesEXT =
33262    PhysicalDeviceTexelBufferAlignmentProperties;
33263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>
33264pub type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT =
33265    PhysicalDeviceTextureCompressionASTCHDRFeatures;
33266/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.html>
33267pub type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
33268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.html>
33269pub type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
33270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolPropertiesEXT.html>
33271pub type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
33272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.html>
33273pub type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR =
33274    PhysicalDeviceUniformBufferStandardLayoutFeatures;
33275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeatures.html>
33276pub type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
33277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html>
33278pub type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
33279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeaturesKHR.html>
33280pub type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
33281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>
33282pub type PhysicalDeviceVertexAttributeDivisorFeaturesEXT =
33283    PhysicalDeviceVertexAttributeDivisorFeatures;
33284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR.html>
33285pub type PhysicalDeviceVertexAttributeDivisorFeaturesKHR =
33286    PhysicalDeviceVertexAttributeDivisorFeatures;
33287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.html>
33288pub type PhysicalDeviceVertexAttributeDivisorPropertiesKHR =
33289    PhysicalDeviceVertexAttributeDivisorProperties;
33290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.html>
33291pub type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
33292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>
33293pub type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR =
33294    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
33295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfoKHR.html>
33296pub type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
33297/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>
33298pub type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
33299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackEXT.html>
33300pub type PipelineCreationFeedbackEXT = PipelineCreationFeedback;
33301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoEXT.html>
33302pub type PipelineInfoEXT = PipelineInfoKHR;
33303/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>
33304pub type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
33305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoKHR.html>
33306pub type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
33307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfoKHR.html>
33308pub type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
33309/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfoEXT.html>
33310pub type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
33311/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>
33312pub type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT =
33313    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
33314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html>
33315pub type PipelineTessellationDomainOriginStateCreateInfoKHR =
33316    PipelineTessellationDomainOriginStateCreateInfo;
33317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>
33318pub type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
33319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoKHR.html>
33320pub type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
33321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfoEXT.html>
33322pub type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
33323/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfoKHR.html>
33324pub type PushConstantsInfoKHR = PushConstantsInfo;
33325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfoKHR.html>
33326pub type PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
33327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfoKHR.html>
33328pub type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
33329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfoINTEL.html>
33330pub type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
33331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>
33332pub type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
33333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesKHR.html>
33334pub type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
33335/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2KHR.html>
33336pub type QueueFamilyProperties2KHR = QueueFamilyProperties2;
33337/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoEXT.html>
33338pub type ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR;
33339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfoKHR.html>
33340pub type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
33341/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2KHR.html>
33342pub type RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
33343/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html>
33344pub type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
33345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfoKHR.html>
33346pub type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
33347/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfoKHR.html>
33348pub type RenderingAreaInfoKHR = RenderingAreaInfo;
33349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfoKHR.html>
33350pub type RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
33351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfoKHR.html>
33352pub type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
33353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfoKHR.html>
33354pub type RenderingInfoKHR = RenderingInfo;
33355/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfoKHR.html>
33356pub type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
33357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
33358pub type ResolveImageInfo2KHR = ResolveImageInfo2;
33359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfoEXT.html>
33360pub type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
33361/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html>
33362pub type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
33363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html>
33364pub type SamplerYcbcrConversionImageFormatPropertiesKHR =
33365    SamplerYcbcrConversionImageFormatProperties;
33366/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfoKHR.html>
33367pub type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
33368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfoKHR.html>
33369pub type SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
33370/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfoKHR.html>
33371pub type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
33372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfoKHR.html>
33373pub type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
33374/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfoKHR.html>
33375pub type SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
33376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderRequiredSubgroupSizeCreateInfoEXT.html>
33377pub type ShaderRequiredSubgroupSizeCreateInfoEXT =
33378    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
33379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2KHR.html>
33380pub type SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
33381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2KHR.html>
33382pub type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
33383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2KHR.html>
33384pub type SubmitInfo2KHR = SubmitInfo2;
33385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfoKHR.html>
33386pub type SubpassBeginInfoKHR = SubpassBeginInfo;
33387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2KHR.html>
33388pub type SubpassDependency2KHR = SubpassDependency2;
33389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2KHR.html>
33390pub type SubpassDescription2KHR = SubpassDescription2;
33391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolveKHR.html>
33392pub type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
33393/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfoKHR.html>
33394pub type SubpassEndInfoKHR = SubpassEndInfo;
33395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>
33396pub type SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT;
33397/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySizeEXT.html>
33398pub type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
33399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2EXT.html>
33400pub type SubresourceLayout2EXT = SubresourceLayout2;
33401/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2KHR.html>
33402pub type SubresourceLayout2KHR = SubresourceLayout2;
33403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityEXT.html>
33404pub type SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR;
33405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeEXT.html>
33406pub type SurfacePresentModeEXT = SurfacePresentModeKHR;
33407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesEXT.html>
33408pub type SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR;
33409/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoEXT.html>
33410pub type SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR;
33411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoEXT.html>
33412pub type SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR;
33413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoEXT.html>
33414pub type SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR;
33415/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoEXT.html>
33416pub type SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR;
33417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfoKHR.html>
33418pub type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
33419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixNV.html>
33420pub type TransformMatrixNV = TransformMatrixKHR;
33421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>
33422pub type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
33423/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionKHR.html>
33424pub type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
33425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>
33426pub type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;