Skip to main content

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: *mut 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_mut(),
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/VkBeginCustomResolveInfoEXT.html>
1401#[repr(C)]
1402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1403pub struct BeginCustomResolveInfoEXT {
1404    pub s_type: StructureType,
1405    pub next: *mut c_void,
1406}
1407
1408impl Default for BeginCustomResolveInfoEXT {
1409    #[inline]
1410    fn default() -> Self {
1411        Self {
1412            s_type: StructureType::BEGIN_CUSTOM_RESOLVE_INFO_EXT,
1413            next: ptr::null_mut(),
1414        }
1415    }
1416}
1417
1418unsafe impl Send for BeginCustomResolveInfoEXT {}
1419unsafe impl Sync for BeginCustomResolveInfoEXT {}
1420
1421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html>
1422#[repr(C)]
1423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1424pub struct BindAccelerationStructureMemoryInfoNV {
1425    pub s_type: StructureType,
1426    pub next: *const c_void,
1427    pub acceleration_structure: AccelerationStructureNV,
1428    pub memory: DeviceMemory,
1429    pub memory_offset: DeviceSize,
1430    pub device_index_count: u32,
1431    pub device_indices: *const u32,
1432}
1433
1434impl Default for BindAccelerationStructureMemoryInfoNV {
1435    #[inline]
1436    fn default() -> Self {
1437        Self {
1438            s_type: StructureType::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
1439            next: ptr::null(),
1440            acceleration_structure: AccelerationStructureNV::default(),
1441            memory: DeviceMemory::default(),
1442            memory_offset: DeviceSize::default(),
1443            device_index_count: u32::default(),
1444            device_indices: ptr::null(),
1445        }
1446    }
1447}
1448
1449unsafe impl Send for BindAccelerationStructureMemoryInfoNV {}
1450unsafe impl Sync for BindAccelerationStructureMemoryInfoNV {}
1451
1452/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html>
1453#[repr(C)]
1454#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1455pub struct BindBufferMemoryDeviceGroupInfo {
1456    pub s_type: StructureType,
1457    pub next: *const c_void,
1458    pub device_index_count: u32,
1459    pub device_indices: *const u32,
1460}
1461
1462impl Default for BindBufferMemoryDeviceGroupInfo {
1463    #[inline]
1464    fn default() -> Self {
1465        Self {
1466            s_type: StructureType::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1467            next: ptr::null(),
1468            device_index_count: u32::default(),
1469            device_indices: ptr::null(),
1470        }
1471    }
1472}
1473
1474unsafe impl Send for BindBufferMemoryDeviceGroupInfo {}
1475unsafe impl Sync for BindBufferMemoryDeviceGroupInfo {}
1476
1477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html>
1478#[repr(C)]
1479#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1480pub struct BindBufferMemoryInfo {
1481    pub s_type: StructureType,
1482    pub next: *const c_void,
1483    pub buffer: Buffer,
1484    pub memory: DeviceMemory,
1485    pub memory_offset: DeviceSize,
1486}
1487
1488impl Default for BindBufferMemoryInfo {
1489    #[inline]
1490    fn default() -> Self {
1491        Self {
1492            s_type: StructureType::BIND_BUFFER_MEMORY_INFO,
1493            next: ptr::null(),
1494            buffer: Buffer::default(),
1495            memory: DeviceMemory::default(),
1496            memory_offset: DeviceSize::default(),
1497        }
1498    }
1499}
1500
1501unsafe impl Send for BindBufferMemoryInfo {}
1502unsafe impl Sync for BindBufferMemoryInfo {}
1503
1504/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDataGraphPipelineSessionMemoryInfoARM.html>
1505#[repr(C)]
1506#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1507pub struct BindDataGraphPipelineSessionMemoryInfoARM {
1508    pub s_type: StructureType,
1509    pub next: *const c_void,
1510    pub session: DataGraphPipelineSessionARM,
1511    pub bind_point: DataGraphPipelineSessionBindPointARM,
1512    pub object_index: u32,
1513    pub memory: DeviceMemory,
1514    pub memory_offset: DeviceSize,
1515}
1516
1517impl Default for BindDataGraphPipelineSessionMemoryInfoARM {
1518    #[inline]
1519    fn default() -> Self {
1520        Self {
1521            s_type: StructureType::BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM,
1522            next: ptr::null(),
1523            session: DataGraphPipelineSessionARM::default(),
1524            bind_point: DataGraphPipelineSessionBindPointARM::default(),
1525            object_index: u32::default(),
1526            memory: DeviceMemory::default(),
1527            memory_offset: DeviceSize::default(),
1528        }
1529    }
1530}
1531
1532unsafe impl Send for BindDataGraphPipelineSessionMemoryInfoARM {}
1533unsafe impl Sync for BindDataGraphPipelineSessionMemoryInfoARM {}
1534
1535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html>
1536#[repr(C)]
1537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1538pub struct BindDescriptorBufferEmbeddedSamplersInfoEXT {
1539    pub s_type: StructureType,
1540    pub next: *const c_void,
1541    pub stage_flags: ShaderStageFlags,
1542    pub layout: PipelineLayout,
1543    pub set: u32,
1544}
1545
1546impl Default for BindDescriptorBufferEmbeddedSamplersInfoEXT {
1547    #[inline]
1548    fn default() -> Self {
1549        Self {
1550            s_type: StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT,
1551            next: ptr::null(),
1552            stage_flags: ShaderStageFlags::default(),
1553            layout: PipelineLayout::default(),
1554            set: u32::default(),
1555        }
1556    }
1557}
1558
1559unsafe impl Send for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1560unsafe impl Sync for BindDescriptorBufferEmbeddedSamplersInfoEXT {}
1561
1562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html>
1563#[repr(C)]
1564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1565pub struct BindDescriptorSetsInfo {
1566    pub s_type: StructureType,
1567    pub next: *const c_void,
1568    pub stage_flags: ShaderStageFlags,
1569    pub layout: PipelineLayout,
1570    pub first_set: u32,
1571    pub descriptor_set_count: u32,
1572    pub descriptor_sets: *const DescriptorSet,
1573    pub dynamic_offset_count: u32,
1574    pub dynamic_offsets: *const u32,
1575}
1576
1577impl Default for BindDescriptorSetsInfo {
1578    #[inline]
1579    fn default() -> Self {
1580        Self {
1581            s_type: StructureType::BIND_DESCRIPTOR_SETS_INFO,
1582            next: ptr::null(),
1583            stage_flags: ShaderStageFlags::default(),
1584            layout: PipelineLayout::default(),
1585            first_set: u32::default(),
1586            descriptor_set_count: u32::default(),
1587            descriptor_sets: ptr::null(),
1588            dynamic_offset_count: u32::default(),
1589            dynamic_offsets: ptr::null(),
1590        }
1591    }
1592}
1593
1594unsafe impl Send for BindDescriptorSetsInfo {}
1595unsafe impl Sync for BindDescriptorSetsInfo {}
1596
1597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindHeapInfoEXT.html>
1598#[repr(C)]
1599#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1600pub struct BindHeapInfoEXT {
1601    pub s_type: StructureType,
1602    pub next: *const c_void,
1603    pub heap_range: DeviceAddressRangeEXT,
1604    pub reserved_range_offset: DeviceSize,
1605    pub reserved_range_size: DeviceSize,
1606}
1607
1608impl Default for BindHeapInfoEXT {
1609    #[inline]
1610    fn default() -> Self {
1611        Self {
1612            s_type: StructureType::BIND_HEAP_INFO_EXT,
1613            next: ptr::null(),
1614            heap_range: DeviceAddressRangeEXT::default(),
1615            reserved_range_offset: DeviceSize::default(),
1616            reserved_range_size: DeviceSize::default(),
1617        }
1618    }
1619}
1620
1621unsafe impl Send for BindHeapInfoEXT {}
1622unsafe impl Sync for BindHeapInfoEXT {}
1623
1624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html>
1625#[repr(C)]
1626#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1627pub struct BindImageMemoryDeviceGroupInfo {
1628    pub s_type: StructureType,
1629    pub next: *const c_void,
1630    pub device_index_count: u32,
1631    pub device_indices: *const u32,
1632    pub split_instance_bind_region_count: u32,
1633    pub split_instance_bind_regions: *const Rect2D,
1634}
1635
1636impl Default for BindImageMemoryDeviceGroupInfo {
1637    #[inline]
1638    fn default() -> Self {
1639        Self {
1640            s_type: StructureType::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1641            next: ptr::null(),
1642            device_index_count: u32::default(),
1643            device_indices: ptr::null(),
1644            split_instance_bind_region_count: u32::default(),
1645            split_instance_bind_regions: ptr::null(),
1646        }
1647    }
1648}
1649
1650unsafe impl Send for BindImageMemoryDeviceGroupInfo {}
1651unsafe impl Sync for BindImageMemoryDeviceGroupInfo {}
1652
1653/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html>
1654#[repr(C)]
1655#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1656pub struct BindImageMemoryInfo {
1657    pub s_type: StructureType,
1658    pub next: *const c_void,
1659    pub image: Image,
1660    pub memory: DeviceMemory,
1661    pub memory_offset: DeviceSize,
1662}
1663
1664impl Default for BindImageMemoryInfo {
1665    #[inline]
1666    fn default() -> Self {
1667        Self {
1668            s_type: StructureType::BIND_IMAGE_MEMORY_INFO,
1669            next: ptr::null(),
1670            image: Image::default(),
1671            memory: DeviceMemory::default(),
1672            memory_offset: DeviceSize::default(),
1673        }
1674    }
1675}
1676
1677unsafe impl Send for BindImageMemoryInfo {}
1678unsafe impl Sync for BindImageMemoryInfo {}
1679
1680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html>
1681#[repr(C)]
1682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1683pub struct BindImageMemorySwapchainInfoKHR {
1684    pub s_type: StructureType,
1685    pub next: *const c_void,
1686    pub swapchain: SwapchainKHR,
1687    pub image_index: u32,
1688}
1689
1690impl Default for BindImageMemorySwapchainInfoKHR {
1691    #[inline]
1692    fn default() -> Self {
1693        Self {
1694            s_type: StructureType::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
1695            next: ptr::null(),
1696            swapchain: SwapchainKHR::default(),
1697            image_index: u32::default(),
1698        }
1699    }
1700}
1701
1702unsafe impl Send for BindImageMemorySwapchainInfoKHR {}
1703unsafe impl Sync for BindImageMemorySwapchainInfoKHR {}
1704
1705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html>
1706#[repr(C)]
1707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1708pub struct BindImagePlaneMemoryInfo {
1709    pub s_type: StructureType,
1710    pub next: *const c_void,
1711    pub plane_aspect: ImageAspectFlags,
1712}
1713
1714impl Default for BindImagePlaneMemoryInfo {
1715    #[inline]
1716    fn default() -> Self {
1717        Self {
1718            s_type: StructureType::BIND_IMAGE_PLANE_MEMORY_INFO,
1719            next: ptr::null(),
1720            plane_aspect: ImageAspectFlags::default(),
1721        }
1722    }
1723}
1724
1725unsafe impl Send for BindImagePlaneMemoryInfo {}
1726unsafe impl Sync for BindImagePlaneMemoryInfo {}
1727
1728/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html>
1729#[repr(C)]
1730#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1731pub struct BindIndexBufferIndirectCommandEXT {
1732    pub buffer_address: DeviceAddress,
1733    pub size: u32,
1734    pub index_type: IndexType,
1735}
1736
1737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html>
1738#[repr(C)]
1739#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1740pub struct BindIndexBufferIndirectCommandNV {
1741    pub buffer_address: DeviceAddress,
1742    pub size: u32,
1743    pub index_type: IndexType,
1744}
1745
1746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatus.html>
1747#[repr(C)]
1748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1749pub struct BindMemoryStatus {
1750    pub s_type: StructureType,
1751    pub next: *const c_void,
1752    pub result: *mut Result,
1753}
1754
1755impl Default for BindMemoryStatus {
1756    #[inline]
1757    fn default() -> Self {
1758        Self {
1759            s_type: StructureType::BIND_MEMORY_STATUS,
1760            next: ptr::null(),
1761            result: ptr::null_mut(),
1762        }
1763    }
1764}
1765
1766unsafe impl Send for BindMemoryStatus {}
1767unsafe impl Sync for BindMemoryStatus {}
1768
1769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html>
1770#[repr(C)]
1771#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1772pub struct BindPipelineIndirectCommandNV {
1773    pub pipeline_address: DeviceAddress,
1774}
1775
1776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html>
1777#[repr(C)]
1778#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1779pub struct BindShaderGroupIndirectCommandNV {
1780    pub group_index: u32,
1781}
1782
1783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindSparseInfo.html>
1784#[repr(C)]
1785#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1786pub struct BindSparseInfo {
1787    pub s_type: StructureType,
1788    pub next: *const c_void,
1789    pub wait_semaphore_count: u32,
1790    pub wait_semaphores: *const Semaphore,
1791    pub buffer_bind_count: u32,
1792    pub buffer_binds: *const SparseBufferMemoryBindInfo,
1793    pub image_opaque_bind_count: u32,
1794    pub image_opaque_binds: *const SparseImageOpaqueMemoryBindInfo,
1795    pub image_bind_count: u32,
1796    pub image_binds: *const SparseImageMemoryBindInfo,
1797    pub signal_semaphore_count: u32,
1798    pub signal_semaphores: *const Semaphore,
1799}
1800
1801impl Default for BindSparseInfo {
1802    #[inline]
1803    fn default() -> Self {
1804        Self {
1805            s_type: StructureType::BIND_SPARSE_INFO,
1806            next: ptr::null(),
1807            wait_semaphore_count: u32::default(),
1808            wait_semaphores: ptr::null(),
1809            buffer_bind_count: u32::default(),
1810            buffer_binds: ptr::null(),
1811            image_opaque_bind_count: u32::default(),
1812            image_opaque_binds: ptr::null(),
1813            image_bind_count: u32::default(),
1814            image_binds: ptr::null(),
1815            signal_semaphore_count: u32::default(),
1816            signal_semaphores: ptr::null(),
1817        }
1818    }
1819}
1820
1821unsafe impl Send for BindSparseInfo {}
1822unsafe impl Sync for BindSparseInfo {}
1823
1824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindTensorMemoryInfoARM.html>
1825#[repr(C)]
1826#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1827pub struct BindTensorMemoryInfoARM {
1828    pub s_type: StructureType,
1829    pub next: *const c_void,
1830    pub tensor: TensorARM,
1831    pub memory: DeviceMemory,
1832    pub memory_offset: DeviceSize,
1833}
1834
1835impl Default for BindTensorMemoryInfoARM {
1836    #[inline]
1837    fn default() -> Self {
1838        Self {
1839            s_type: StructureType::BIND_TENSOR_MEMORY_INFO_ARM,
1840            next: ptr::null(),
1841            tensor: TensorARM::default(),
1842            memory: DeviceMemory::default(),
1843            memory_offset: DeviceSize::default(),
1844        }
1845    }
1846}
1847
1848unsafe impl Send for BindTensorMemoryInfoARM {}
1849unsafe impl Sync for BindTensorMemoryInfoARM {}
1850
1851/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html>
1852#[repr(C)]
1853#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1854pub struct BindVertexBufferIndirectCommandEXT {
1855    pub buffer_address: DeviceAddress,
1856    pub size: u32,
1857    pub stride: u32,
1858}
1859
1860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html>
1861#[repr(C)]
1862#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
1863pub struct BindVertexBufferIndirectCommandNV {
1864    pub buffer_address: DeviceAddress,
1865    pub size: u32,
1866    pub stride: u32,
1867}
1868
1869/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html>
1870#[repr(C)]
1871#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1872pub struct BindVideoSessionMemoryInfoKHR {
1873    pub s_type: StructureType,
1874    pub next: *const c_void,
1875    pub memory_bind_index: u32,
1876    pub memory: DeviceMemory,
1877    pub memory_offset: DeviceSize,
1878    pub memory_size: DeviceSize,
1879}
1880
1881impl Default for BindVideoSessionMemoryInfoKHR {
1882    #[inline]
1883    fn default() -> Self {
1884        Self {
1885            s_type: StructureType::BIND_VIDEO_SESSION_MEMORY_INFO_KHR,
1886            next: ptr::null(),
1887            memory_bind_index: u32::default(),
1888            memory: DeviceMemory::default(),
1889            memory_offset: DeviceSize::default(),
1890            memory_size: DeviceSize::default(),
1891        }
1892    }
1893}
1894
1895unsafe impl Send for BindVideoSessionMemoryInfoKHR {}
1896unsafe impl Sync for BindVideoSessionMemoryInfoKHR {}
1897
1898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html>
1899#[repr(C)]
1900#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1901pub struct BlitImageCubicWeightsInfoQCOM {
1902    pub s_type: StructureType,
1903    pub next: *const c_void,
1904    pub cubic_weights: CubicFilterWeightsQCOM,
1905}
1906
1907impl Default for BlitImageCubicWeightsInfoQCOM {
1908    #[inline]
1909    fn default() -> Self {
1910        Self {
1911            s_type: StructureType::BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM,
1912            next: ptr::null(),
1913            cubic_weights: CubicFilterWeightsQCOM::default(),
1914        }
1915    }
1916}
1917
1918unsafe impl Send for BlitImageCubicWeightsInfoQCOM {}
1919unsafe impl Sync for BlitImageCubicWeightsInfoQCOM {}
1920
1921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2.html>
1922#[repr(C)]
1923#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1924pub struct BlitImageInfo2 {
1925    pub s_type: StructureType,
1926    pub next: *const c_void,
1927    pub src_image: Image,
1928    pub src_image_layout: ImageLayout,
1929    pub dst_image: Image,
1930    pub dst_image_layout: ImageLayout,
1931    pub region_count: u32,
1932    pub regions: *const ImageBlit2,
1933    pub filter: Filter,
1934}
1935
1936impl Default for BlitImageInfo2 {
1937    #[inline]
1938    fn default() -> Self {
1939        Self {
1940            s_type: StructureType::BLIT_IMAGE_INFO_2,
1941            next: ptr::null(),
1942            src_image: Image::default(),
1943            src_image_layout: ImageLayout::default(),
1944            dst_image: Image::default(),
1945            dst_image_layout: ImageLayout::default(),
1946            region_count: u32::default(),
1947            regions: ptr::null(),
1948            filter: Filter::default(),
1949        }
1950    }
1951}
1952
1953unsafe impl Send for BlitImageInfo2 {}
1954unsafe impl Sync for BlitImageInfo2 {}
1955
1956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html>
1957#[repr(C)]
1958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1959pub struct BufferCaptureDescriptorDataInfoEXT {
1960    pub s_type: StructureType,
1961    pub next: *const c_void,
1962    pub buffer: Buffer,
1963}
1964
1965impl Default for BufferCaptureDescriptorDataInfoEXT {
1966    #[inline]
1967    fn default() -> Self {
1968        Self {
1969            s_type: StructureType::BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
1970            next: ptr::null(),
1971            buffer: Buffer::default(),
1972        }
1973    }
1974}
1975
1976unsafe impl Send for BufferCaptureDescriptorDataInfoEXT {}
1977unsafe impl Sync for BufferCaptureDescriptorDataInfoEXT {}
1978
1979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html>
1980#[repr(C)]
1981#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
1982pub struct BufferCollectionBufferCreateInfoFUCHSIA {
1983    pub s_type: StructureType,
1984    pub next: *const c_void,
1985    pub collection: BufferCollectionFUCHSIA,
1986    pub index: u32,
1987}
1988
1989impl Default for BufferCollectionBufferCreateInfoFUCHSIA {
1990    #[inline]
1991    fn default() -> Self {
1992        Self {
1993            s_type: StructureType::BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA,
1994            next: ptr::null(),
1995            collection: BufferCollectionFUCHSIA::default(),
1996            index: u32::default(),
1997        }
1998    }
1999}
2000
2001unsafe impl Send for BufferCollectionBufferCreateInfoFUCHSIA {}
2002unsafe impl Sync for BufferCollectionBufferCreateInfoFUCHSIA {}
2003
2004/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html>
2005#[repr(C)]
2006#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2007pub struct BufferCollectionConstraintsInfoFUCHSIA {
2008    pub s_type: StructureType,
2009    pub next: *const c_void,
2010    pub min_buffer_count: u32,
2011    pub max_buffer_count: u32,
2012    pub min_buffer_count_for_camping: u32,
2013    pub min_buffer_count_for_dedicated_slack: u32,
2014    pub min_buffer_count_for_shared_slack: u32,
2015}
2016
2017impl Default for BufferCollectionConstraintsInfoFUCHSIA {
2018    #[inline]
2019    fn default() -> Self {
2020        Self {
2021            s_type: StructureType::BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA,
2022            next: ptr::null(),
2023            min_buffer_count: u32::default(),
2024            max_buffer_count: u32::default(),
2025            min_buffer_count_for_camping: u32::default(),
2026            min_buffer_count_for_dedicated_slack: u32::default(),
2027            min_buffer_count_for_shared_slack: u32::default(),
2028        }
2029    }
2030}
2031
2032unsafe impl Send for BufferCollectionConstraintsInfoFUCHSIA {}
2033unsafe impl Sync for BufferCollectionConstraintsInfoFUCHSIA {}
2034
2035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html>
2036#[repr(C)]
2037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2038pub struct BufferCollectionCreateInfoFUCHSIA {
2039    pub s_type: StructureType,
2040    pub next: *const c_void,
2041    pub collection_token: zx_handle_t,
2042}
2043
2044impl Default for BufferCollectionCreateInfoFUCHSIA {
2045    #[inline]
2046    fn default() -> Self {
2047        Self {
2048            s_type: StructureType::BUFFER_COLLECTION_CREATE_INFO_FUCHSIA,
2049            next: ptr::null(),
2050            collection_token: zx_handle_t::default(),
2051        }
2052    }
2053}
2054
2055unsafe impl Send for BufferCollectionCreateInfoFUCHSIA {}
2056unsafe impl Sync for BufferCollectionCreateInfoFUCHSIA {}
2057
2058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html>
2059#[repr(C)]
2060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2061pub struct BufferCollectionImageCreateInfoFUCHSIA {
2062    pub s_type: StructureType,
2063    pub next: *const c_void,
2064    pub collection: BufferCollectionFUCHSIA,
2065    pub index: u32,
2066}
2067
2068impl Default for BufferCollectionImageCreateInfoFUCHSIA {
2069    #[inline]
2070    fn default() -> Self {
2071        Self {
2072            s_type: StructureType::BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA,
2073            next: ptr::null(),
2074            collection: BufferCollectionFUCHSIA::default(),
2075            index: u32::default(),
2076        }
2077    }
2078}
2079
2080unsafe impl Send for BufferCollectionImageCreateInfoFUCHSIA {}
2081unsafe impl Sync for BufferCollectionImageCreateInfoFUCHSIA {}
2082
2083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html>
2084#[repr(C)]
2085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2086pub struct BufferCollectionPropertiesFUCHSIA {
2087    pub s_type: StructureType,
2088    pub next: *mut c_void,
2089    pub memory_type_bits: u32,
2090    pub buffer_count: u32,
2091    pub create_info_index: u32,
2092    pub sysmem_pixel_format: u64,
2093    pub format_features: FormatFeatureFlags,
2094    pub sysmem_color_space_index: SysmemColorSpaceFUCHSIA,
2095    pub sampler_ycbcr_conversion_components: ComponentMapping,
2096    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
2097    pub suggested_ycbcr_range: SamplerYcbcrRange,
2098    pub suggested_x_chroma_offset: ChromaLocation,
2099    pub suggested_y_chroma_offset: ChromaLocation,
2100}
2101
2102impl Default for BufferCollectionPropertiesFUCHSIA {
2103    #[inline]
2104    fn default() -> Self {
2105        Self {
2106            s_type: StructureType::BUFFER_COLLECTION_PROPERTIES_FUCHSIA,
2107            next: ptr::null_mut(),
2108            memory_type_bits: u32::default(),
2109            buffer_count: u32::default(),
2110            create_info_index: u32::default(),
2111            sysmem_pixel_format: u64::default(),
2112            format_features: FormatFeatureFlags::default(),
2113            sysmem_color_space_index: SysmemColorSpaceFUCHSIA::default(),
2114            sampler_ycbcr_conversion_components: ComponentMapping::default(),
2115            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
2116            suggested_ycbcr_range: SamplerYcbcrRange::default(),
2117            suggested_x_chroma_offset: ChromaLocation::default(),
2118            suggested_y_chroma_offset: ChromaLocation::default(),
2119        }
2120    }
2121}
2122
2123unsafe impl Send for BufferCollectionPropertiesFUCHSIA {}
2124unsafe impl Sync for BufferCollectionPropertiesFUCHSIA {}
2125
2126/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html>
2127#[repr(C)]
2128#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2129pub struct BufferConstraintsInfoFUCHSIA {
2130    pub s_type: StructureType,
2131    pub next: *const c_void,
2132    pub create_info: BufferCreateInfo,
2133    pub required_format_features: FormatFeatureFlags,
2134    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
2135}
2136
2137impl Default for BufferConstraintsInfoFUCHSIA {
2138    #[inline]
2139    fn default() -> Self {
2140        Self {
2141            s_type: StructureType::BUFFER_CONSTRAINTS_INFO_FUCHSIA,
2142            next: ptr::null(),
2143            create_info: BufferCreateInfo::default(),
2144            required_format_features: FormatFeatureFlags::default(),
2145            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
2146        }
2147    }
2148}
2149
2150unsafe impl Send for BufferConstraintsInfoFUCHSIA {}
2151unsafe impl Sync for BufferConstraintsInfoFUCHSIA {}
2152
2153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy.html>
2154#[repr(C)]
2155#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2156pub struct BufferCopy {
2157    pub src_offset: DeviceSize,
2158    pub dst_offset: DeviceSize,
2159    pub size: DeviceSize,
2160}
2161
2162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2.html>
2163#[repr(C)]
2164#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2165pub struct BufferCopy2 {
2166    pub s_type: StructureType,
2167    pub next: *const c_void,
2168    pub src_offset: DeviceSize,
2169    pub dst_offset: DeviceSize,
2170    pub size: DeviceSize,
2171}
2172
2173impl Default for BufferCopy2 {
2174    #[inline]
2175    fn default() -> Self {
2176        Self {
2177            s_type: StructureType::BUFFER_COPY_2,
2178            next: ptr::null(),
2179            src_offset: DeviceSize::default(),
2180            dst_offset: DeviceSize::default(),
2181            size: DeviceSize::default(),
2182        }
2183    }
2184}
2185
2186unsafe impl Send for BufferCopy2 {}
2187unsafe impl Sync for BufferCopy2 {}
2188
2189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCreateInfo.html>
2190#[repr(C)]
2191#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2192pub struct BufferCreateInfo {
2193    pub s_type: StructureType,
2194    pub next: *const c_void,
2195    pub flags: BufferCreateFlags,
2196    pub size: DeviceSize,
2197    pub usage: BufferUsageFlags,
2198    pub sharing_mode: SharingMode,
2199    pub queue_family_index_count: u32,
2200    pub queue_family_indices: *const u32,
2201}
2202
2203impl Default for BufferCreateInfo {
2204    #[inline]
2205    fn default() -> Self {
2206        Self {
2207            s_type: StructureType::BUFFER_CREATE_INFO,
2208            next: ptr::null(),
2209            flags: BufferCreateFlags::default(),
2210            size: DeviceSize::default(),
2211            usage: BufferUsageFlags::default(),
2212            sharing_mode: SharingMode::default(),
2213            queue_family_index_count: u32::default(),
2214            queue_family_indices: ptr::null(),
2215        }
2216    }
2217}
2218
2219unsafe impl Send for BufferCreateInfo {}
2220unsafe impl Sync for BufferCreateInfo {}
2221
2222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html>
2223#[repr(C)]
2224#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2225pub struct BufferDeviceAddressCreateInfoEXT {
2226    pub s_type: StructureType,
2227    pub next: *const c_void,
2228    pub device_address: DeviceAddress,
2229}
2230
2231impl Default for BufferDeviceAddressCreateInfoEXT {
2232    #[inline]
2233    fn default() -> Self {
2234        Self {
2235            s_type: StructureType::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
2236            next: ptr::null(),
2237            device_address: DeviceAddress::default(),
2238        }
2239    }
2240}
2241
2242unsafe impl Send for BufferDeviceAddressCreateInfoEXT {}
2243unsafe impl Sync for BufferDeviceAddressCreateInfoEXT {}
2244
2245/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html>
2246#[repr(C)]
2247#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2248pub struct BufferDeviceAddressInfo {
2249    pub s_type: StructureType,
2250    pub next: *const c_void,
2251    pub buffer: Buffer,
2252}
2253
2254impl Default for BufferDeviceAddressInfo {
2255    #[inline]
2256    fn default() -> Self {
2257        Self {
2258            s_type: StructureType::BUFFER_DEVICE_ADDRESS_INFO,
2259            next: ptr::null(),
2260            buffer: Buffer::default(),
2261        }
2262    }
2263}
2264
2265unsafe impl Send for BufferDeviceAddressInfo {}
2266unsafe impl Sync for BufferDeviceAddressInfo {}
2267
2268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy.html>
2269#[repr(C)]
2270#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2271pub struct BufferImageCopy {
2272    pub buffer_offset: DeviceSize,
2273    pub buffer_row_length: u32,
2274    pub buffer_image_height: u32,
2275    pub image_subresource: ImageSubresourceLayers,
2276    pub image_offset: Offset3D,
2277    pub image_extent: Extent3D,
2278}
2279
2280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2.html>
2281#[repr(C)]
2282#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2283pub struct BufferImageCopy2 {
2284    pub s_type: StructureType,
2285    pub next: *const c_void,
2286    pub buffer_offset: DeviceSize,
2287    pub buffer_row_length: u32,
2288    pub buffer_image_height: u32,
2289    pub image_subresource: ImageSubresourceLayers,
2290    pub image_offset: Offset3D,
2291    pub image_extent: Extent3D,
2292}
2293
2294impl Default for BufferImageCopy2 {
2295    #[inline]
2296    fn default() -> Self {
2297        Self {
2298            s_type: StructureType::BUFFER_IMAGE_COPY_2,
2299            next: ptr::null(),
2300            buffer_offset: DeviceSize::default(),
2301            buffer_row_length: u32::default(),
2302            buffer_image_height: u32::default(),
2303            image_subresource: ImageSubresourceLayers::default(),
2304            image_offset: Offset3D::default(),
2305            image_extent: Extent3D::default(),
2306        }
2307    }
2308}
2309
2310unsafe impl Send for BufferImageCopy2 {}
2311unsafe impl Sync for BufferImageCopy2 {}
2312
2313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html>
2314#[repr(C)]
2315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2316pub struct BufferMemoryBarrier {
2317    pub s_type: StructureType,
2318    pub next: *const c_void,
2319    pub src_access_mask: AccessFlags,
2320    pub dst_access_mask: AccessFlags,
2321    pub src_queue_family_index: u32,
2322    pub dst_queue_family_index: u32,
2323    pub buffer: Buffer,
2324    pub offset: DeviceSize,
2325    pub size: DeviceSize,
2326}
2327
2328impl Default for BufferMemoryBarrier {
2329    #[inline]
2330    fn default() -> Self {
2331        Self {
2332            s_type: StructureType::BUFFER_MEMORY_BARRIER,
2333            next: ptr::null(),
2334            src_access_mask: AccessFlags::default(),
2335            dst_access_mask: AccessFlags::default(),
2336            src_queue_family_index: u32::default(),
2337            dst_queue_family_index: u32::default(),
2338            buffer: Buffer::default(),
2339            offset: DeviceSize::default(),
2340            size: DeviceSize::default(),
2341        }
2342    }
2343}
2344
2345unsafe impl Send for BufferMemoryBarrier {}
2346unsafe impl Sync for BufferMemoryBarrier {}
2347
2348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html>
2349#[repr(C)]
2350#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2351pub struct BufferMemoryBarrier2 {
2352    pub s_type: StructureType,
2353    pub next: *const c_void,
2354    pub src_stage_mask: PipelineStageFlags2,
2355    pub src_access_mask: AccessFlags2,
2356    pub dst_stage_mask: PipelineStageFlags2,
2357    pub dst_access_mask: AccessFlags2,
2358    pub src_queue_family_index: u32,
2359    pub dst_queue_family_index: u32,
2360    pub buffer: Buffer,
2361    pub offset: DeviceSize,
2362    pub size: DeviceSize,
2363}
2364
2365impl Default for BufferMemoryBarrier2 {
2366    #[inline]
2367    fn default() -> Self {
2368        Self {
2369            s_type: StructureType::BUFFER_MEMORY_BARRIER_2,
2370            next: ptr::null(),
2371            src_stage_mask: PipelineStageFlags2::default(),
2372            src_access_mask: AccessFlags2::default(),
2373            dst_stage_mask: PipelineStageFlags2::default(),
2374            dst_access_mask: AccessFlags2::default(),
2375            src_queue_family_index: u32::default(),
2376            dst_queue_family_index: u32::default(),
2377            buffer: Buffer::default(),
2378            offset: DeviceSize::default(),
2379            size: DeviceSize::default(),
2380        }
2381    }
2382}
2383
2384unsafe impl Send for BufferMemoryBarrier2 {}
2385unsafe impl Sync for BufferMemoryBarrier2 {}
2386
2387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html>
2388#[repr(C)]
2389#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2390pub struct BufferMemoryRequirementsInfo2 {
2391    pub s_type: StructureType,
2392    pub next: *const c_void,
2393    pub buffer: Buffer,
2394}
2395
2396impl Default for BufferMemoryRequirementsInfo2 {
2397    #[inline]
2398    fn default() -> Self {
2399        Self {
2400            s_type: StructureType::BUFFER_MEMORY_REQUIREMENTS_INFO_2,
2401            next: ptr::null(),
2402            buffer: Buffer::default(),
2403        }
2404    }
2405}
2406
2407unsafe impl Send for BufferMemoryRequirementsInfo2 {}
2408unsafe impl Sync for BufferMemoryRequirementsInfo2 {}
2409
2410/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html>
2411#[repr(C)]
2412#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2413pub struct BufferOpaqueCaptureAddressCreateInfo {
2414    pub s_type: StructureType,
2415    pub next: *const c_void,
2416    pub opaque_capture_address: u64,
2417}
2418
2419impl Default for BufferOpaqueCaptureAddressCreateInfo {
2420    #[inline]
2421    fn default() -> Self {
2422        Self {
2423            s_type: StructureType::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
2424            next: ptr::null(),
2425            opaque_capture_address: u64::default(),
2426        }
2427    }
2428}
2429
2430unsafe impl Send for BufferOpaqueCaptureAddressCreateInfo {}
2431unsafe impl Sync for BufferOpaqueCaptureAddressCreateInfo {}
2432
2433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html>
2434#[repr(C)]
2435#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2436pub struct BufferUsageFlags2CreateInfo {
2437    pub s_type: StructureType,
2438    pub next: *const c_void,
2439    pub usage: BufferUsageFlags2,
2440}
2441
2442impl Default for BufferUsageFlags2CreateInfo {
2443    #[inline]
2444    fn default() -> Self {
2445        Self {
2446            s_type: StructureType::BUFFER_USAGE_FLAGS_2_CREATE_INFO,
2447            next: ptr::null(),
2448            usage: BufferUsageFlags2::default(),
2449        }
2450    }
2451}
2452
2453unsafe impl Send for BufferUsageFlags2CreateInfo {}
2454unsafe impl Sync for BufferUsageFlags2CreateInfo {}
2455
2456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html>
2457#[repr(C)]
2458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2459pub struct BufferViewCreateInfo {
2460    pub s_type: StructureType,
2461    pub next: *const c_void,
2462    pub flags: BufferViewCreateFlags,
2463    pub buffer: Buffer,
2464    pub format: Format,
2465    pub offset: DeviceSize,
2466    pub range: DeviceSize,
2467}
2468
2469impl Default for BufferViewCreateInfo {
2470    #[inline]
2471    fn default() -> Self {
2472        Self {
2473            s_type: StructureType::BUFFER_VIEW_CREATE_INFO,
2474            next: ptr::null(),
2475            flags: BufferViewCreateFlags::default(),
2476            buffer: Buffer::default(),
2477            format: Format::default(),
2478            offset: DeviceSize::default(),
2479            range: DeviceSize::default(),
2480        }
2481    }
2482}
2483
2484unsafe impl Send for BufferViewCreateInfo {}
2485unsafe impl Sync for BufferViewCreateInfo {}
2486
2487/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html>
2488#[repr(C)]
2489#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2490pub struct BuildPartitionedAccelerationStructureIndirectCommandNV {
2491    pub op_type: PartitionedAccelerationStructureOpTypeNV,
2492    pub arg_count: u32,
2493    pub arg_data: StridedDeviceAddressNV,
2494}
2495
2496/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html>
2497#[repr(C)]
2498#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2499pub struct BuildPartitionedAccelerationStructureInfoNV {
2500    pub s_type: StructureType,
2501    pub next: *mut c_void,
2502    pub input: PartitionedAccelerationStructureInstancesInputNV,
2503    pub src_acceleration_structure_data: DeviceAddress,
2504    pub dst_acceleration_structure_data: DeviceAddress,
2505    pub scratch_data: DeviceAddress,
2506    pub src_infos: DeviceAddress,
2507    pub src_infos_count: DeviceAddress,
2508}
2509
2510impl Default for BuildPartitionedAccelerationStructureInfoNV {
2511    #[inline]
2512    fn default() -> Self {
2513        Self {
2514            s_type: StructureType::BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV,
2515            next: ptr::null_mut(),
2516            input: PartitionedAccelerationStructureInstancesInputNV::default(),
2517            src_acceleration_structure_data: DeviceAddress::default(),
2518            dst_acceleration_structure_data: DeviceAddress::default(),
2519            scratch_data: DeviceAddress::default(),
2520            src_infos: DeviceAddress::default(),
2521            src_infos_count: DeviceAddress::default(),
2522        }
2523    }
2524}
2525
2526unsafe impl Send for BuildPartitionedAccelerationStructureInfoNV {}
2527unsafe impl Sync for BuildPartitionedAccelerationStructureInfoNV {}
2528
2529/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html>
2530#[repr(C)]
2531#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2532pub struct CalibratedTimestampInfoKHR {
2533    pub s_type: StructureType,
2534    pub next: *const c_void,
2535    pub time_domain: TimeDomainKHR,
2536}
2537
2538impl Default for CalibratedTimestampInfoKHR {
2539    #[inline]
2540    fn default() -> Self {
2541        Self {
2542            s_type: StructureType::CALIBRATED_TIMESTAMP_INFO_KHR,
2543            next: ptr::null(),
2544            time_domain: TimeDomainKHR::default(),
2545        }
2546    }
2547}
2548
2549unsafe impl Send for CalibratedTimestampInfoKHR {}
2550unsafe impl Sync for CalibratedTimestampInfoKHR {}
2551
2552/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointData2NV.html>
2553#[repr(C)]
2554#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2555pub struct CheckpointData2NV {
2556    pub s_type: StructureType,
2557    pub next: *mut c_void,
2558    pub stage: PipelineStageFlags2,
2559    pub checkpoint_marker: *mut c_void,
2560}
2561
2562impl Default for CheckpointData2NV {
2563    #[inline]
2564    fn default() -> Self {
2565        Self {
2566            s_type: StructureType::CHECKPOINT_DATA_2_NV,
2567            next: ptr::null_mut(),
2568            stage: PipelineStageFlags2::default(),
2569            checkpoint_marker: ptr::null_mut(),
2570        }
2571    }
2572}
2573
2574unsafe impl Send for CheckpointData2NV {}
2575unsafe impl Sync for CheckpointData2NV {}
2576
2577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCheckpointDataNV.html>
2578#[repr(C)]
2579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2580pub struct CheckpointDataNV {
2581    pub s_type: StructureType,
2582    pub next: *mut c_void,
2583    pub stage: PipelineStageFlags,
2584    pub checkpoint_marker: *mut c_void,
2585}
2586
2587impl Default for CheckpointDataNV {
2588    #[inline]
2589    fn default() -> Self {
2590        Self {
2591            s_type: StructureType::CHECKPOINT_DATA_NV,
2592            next: ptr::null_mut(),
2593            stage: PipelineStageFlags::default(),
2594            checkpoint_marker: ptr::null_mut(),
2595        }
2596    }
2597}
2598
2599unsafe impl Send for CheckpointDataNV {}
2600unsafe impl Sync for CheckpointDataNV {}
2601
2602/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearAttachment.html>
2603#[repr(C)]
2604#[derive(Copy, Clone, Default, Debug)]
2605pub struct ClearAttachment {
2606    pub aspect_mask: ImageAspectFlags,
2607    pub color_attachment: u32,
2608    pub clear_value: ClearValue,
2609}
2610
2611/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html>
2612#[repr(C)]
2613#[derive(Copy, Clone, Default, Debug, PartialEq)]
2614pub struct ClearDepthStencilValue {
2615    pub depth: f32,
2616    pub stencil: u32,
2617}
2618
2619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClearRect.html>
2620#[repr(C)]
2621#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2622pub struct ClearRect {
2623    pub rect: Rect2D,
2624    pub base_array_layer: u32,
2625    pub layer_count: u32,
2626}
2627
2628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html>
2629#[repr(C)]
2630#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2631pub struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV {
2632    pub cluster_references_count: u32,
2633    pub cluster_references_stride: u32,
2634    pub cluster_references: DeviceAddress,
2635}
2636
2637bitfields32! {
2638    struct ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0 {
2639        (triangle_count, with_triangle_count)[0 .. 9],
2640        (vertex_count, with_vertex_count)[9 .. 18],
2641        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2642        (index_type, with_index_type)[24 .. 28],
2643        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2644    }
2645}
2646
2647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html>
2648#[repr(C)]
2649#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2650pub struct ClusterAccelerationStructureBuildTriangleClusterInfoNV {
2651    pub cluster_id: u32,
2652    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2653    pub base_geometry_index_and_geometry_flags:
2654        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2655    pub index_buffer_stride: u16,
2656    pub vertex_buffer_stride: u16,
2657    pub geometry_index_and_flags_buffer_stride: u16,
2658    pub opacity_micromap_index_buffer_stride: u16,
2659    pub index_buffer: DeviceAddress,
2660    pub vertex_buffer: DeviceAddress,
2661    pub geometry_index_and_flags_buffer: DeviceAddress,
2662    pub opacity_micromap_array: DeviceAddress,
2663    pub opacity_micromap_index_buffer: DeviceAddress,
2664    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterInfoNVBitfields0,
2665}
2666
2667bitfields32! {
2668    struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0 {
2669        (triangle_count, with_triangle_count)[0 .. 9],
2670        (vertex_count, with_vertex_count)[9 .. 18],
2671        (position_truncate_bit_count, with_position_truncate_bit_count)[18 .. 24],
2672        (index_type, with_index_type)[24 .. 28],
2673        (opacity_micromap_index_type, with_opacity_micromap_index_type)[28 .. 32],
2674    }
2675}
2676
2677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html>
2678#[repr(C)]
2679#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2680pub struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV {
2681    pub cluster_id: u32,
2682    pub cluster_flags: ClusterAccelerationStructureClusterFlagsNV,
2683    pub base_geometry_index_and_geometry_flags:
2684        ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV,
2685    pub index_buffer_stride: u16,
2686    pub vertex_buffer_stride: u16,
2687    pub geometry_index_and_flags_buffer_stride: u16,
2688    pub opacity_micromap_index_buffer_stride: u16,
2689    pub index_buffer: DeviceAddress,
2690    pub vertex_buffer: DeviceAddress,
2691    pub geometry_index_and_flags_buffer: DeviceAddress,
2692    pub opacity_micromap_array: DeviceAddress,
2693    pub opacity_micromap_index_buffer: DeviceAddress,
2694    pub instantiation_bounding_box_limit: DeviceAddress,
2695    pub bitfields0: ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNVBitfields0,
2696}
2697
2698/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html>
2699#[repr(C)]
2700#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2701pub struct ClusterAccelerationStructureClustersBottomLevelInputNV {
2702    pub s_type: StructureType,
2703    pub next: *mut c_void,
2704    pub max_total_cluster_count: u32,
2705    pub max_cluster_count_per_acceleration_structure: u32,
2706}
2707
2708impl Default for ClusterAccelerationStructureClustersBottomLevelInputNV {
2709    #[inline]
2710    fn default() -> Self {
2711        Self {
2712            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV,
2713            next: ptr::null_mut(),
2714            max_total_cluster_count: u32::default(),
2715            max_cluster_count_per_acceleration_structure: u32::default(),
2716        }
2717    }
2718}
2719
2720unsafe impl Send for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2721unsafe impl Sync for ClusterAccelerationStructureClustersBottomLevelInputNV {}
2722
2723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html>
2724#[repr(C)]
2725#[derive(Copy, Clone, Debug)]
2726pub struct ClusterAccelerationStructureCommandsInfoNV {
2727    pub s_type: StructureType,
2728    pub next: *mut c_void,
2729    pub input: ClusterAccelerationStructureInputInfoNV,
2730    pub dst_implicit_data: DeviceAddress,
2731    pub scratch_data: DeviceAddress,
2732    pub dst_addresses_array: StridedDeviceAddressRegionKHR,
2733    pub dst_sizes_array: StridedDeviceAddressRegionKHR,
2734    pub src_infos_array: StridedDeviceAddressRegionKHR,
2735    pub src_infos_count: DeviceAddress,
2736    pub address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV,
2737}
2738
2739impl Default for ClusterAccelerationStructureCommandsInfoNV {
2740    #[inline]
2741    fn default() -> Self {
2742        Self {
2743            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV,
2744            next: ptr::null_mut(),
2745            input: ClusterAccelerationStructureInputInfoNV::default(),
2746            dst_implicit_data: DeviceAddress::default(),
2747            scratch_data: DeviceAddress::default(),
2748            dst_addresses_array: StridedDeviceAddressRegionKHR::default(),
2749            dst_sizes_array: StridedDeviceAddressRegionKHR::default(),
2750            src_infos_array: StridedDeviceAddressRegionKHR::default(),
2751            src_infos_count: DeviceAddress::default(),
2752            address_resolution_flags: ClusterAccelerationStructureAddressResolutionFlagsNV::default(
2753            ),
2754        }
2755    }
2756}
2757
2758unsafe impl Send for ClusterAccelerationStructureCommandsInfoNV {}
2759unsafe impl Sync for ClusterAccelerationStructureCommandsInfoNV {}
2760
2761bitfields32! {
2762    struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0 {
2763        (geometry_index, with_geometry_index)[0 .. 24],
2764        (reserved, with_reserved)[24 .. 29],
2765        (geometry_flags, with_geometry_flags)[29 .. 32],
2766    }
2767}
2768
2769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html>
2770#[repr(C)]
2771#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2772pub struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV {
2773    pub bitfields0: ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNVBitfields0,
2774}
2775
2776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGetTemplateIndicesInfoNV.html>
2777#[repr(C)]
2778#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2779pub struct ClusterAccelerationStructureGetTemplateIndicesInfoNV {
2780    pub cluster_template_address: DeviceAddress,
2781}
2782
2783/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html>
2784#[repr(C)]
2785#[derive(Copy, Clone, Debug)]
2786pub struct ClusterAccelerationStructureInputInfoNV {
2787    pub s_type: StructureType,
2788    pub next: *mut c_void,
2789    pub max_acceleration_structure_count: u32,
2790    pub flags: BuildAccelerationStructureFlagsKHR,
2791    pub op_type: ClusterAccelerationStructureOpTypeNV,
2792    pub op_mode: ClusterAccelerationStructureOpModeNV,
2793    pub op_input: ClusterAccelerationStructureOpInputNV,
2794}
2795
2796impl Default for ClusterAccelerationStructureInputInfoNV {
2797    #[inline]
2798    fn default() -> Self {
2799        Self {
2800            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV,
2801            next: ptr::null_mut(),
2802            max_acceleration_structure_count: u32::default(),
2803            flags: BuildAccelerationStructureFlagsKHR::default(),
2804            op_type: ClusterAccelerationStructureOpTypeNV::default(),
2805            op_mode: ClusterAccelerationStructureOpModeNV::default(),
2806            op_input: ClusterAccelerationStructureOpInputNV::default(),
2807        }
2808    }
2809}
2810
2811unsafe impl Send for ClusterAccelerationStructureInputInfoNV {}
2812unsafe impl Sync for ClusterAccelerationStructureInputInfoNV {}
2813
2814bitfields32! {
2815    struct ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0 {
2816        (geometry_index_offset, with_geometry_index_offset)[0 .. 24],
2817        (reserved, with_reserved)[24 .. 32],
2818    }
2819}
2820
2821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html>
2822#[repr(C)]
2823#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2824pub struct ClusterAccelerationStructureInstantiateClusterInfoNV {
2825    pub cluster_id_offset: u32,
2826    pub cluster_template_address: DeviceAddress,
2827    pub vertex_buffer: StridedDeviceAddressNV,
2828    pub bitfields0: ClusterAccelerationStructureInstantiateClusterInfoNVBitfields0,
2829}
2830
2831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html>
2832#[repr(C)]
2833#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2834pub struct ClusterAccelerationStructureMoveObjectsInfoNV {
2835    pub src_acceleration_structure: DeviceAddress,
2836}
2837
2838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html>
2839#[repr(C)]
2840#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2841pub struct ClusterAccelerationStructureMoveObjectsInputNV {
2842    pub s_type: StructureType,
2843    pub next: *mut c_void,
2844    pub type_: ClusterAccelerationStructureTypeNV,
2845    pub no_move_overlap: Bool32,
2846    pub max_moved_bytes: DeviceSize,
2847}
2848
2849impl Default for ClusterAccelerationStructureMoveObjectsInputNV {
2850    #[inline]
2851    fn default() -> Self {
2852        Self {
2853            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV,
2854            next: ptr::null_mut(),
2855            type_: ClusterAccelerationStructureTypeNV::default(),
2856            no_move_overlap: Bool32::default(),
2857            max_moved_bytes: DeviceSize::default(),
2858        }
2859    }
2860}
2861
2862unsafe impl Send for ClusterAccelerationStructureMoveObjectsInputNV {}
2863unsafe impl Sync for ClusterAccelerationStructureMoveObjectsInputNV {}
2864
2865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html>
2866#[repr(C)]
2867#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2868pub struct ClusterAccelerationStructureTriangleClusterInputNV {
2869    pub s_type: StructureType,
2870    pub next: *mut c_void,
2871    pub vertex_format: Format,
2872    pub max_geometry_index_value: u32,
2873    pub max_cluster_unique_geometry_count: u32,
2874    pub max_cluster_triangle_count: u32,
2875    pub max_cluster_vertex_count: u32,
2876    pub max_total_triangle_count: u32,
2877    pub max_total_vertex_count: u32,
2878    pub min_position_truncate_bit_count: u32,
2879}
2880
2881impl Default for ClusterAccelerationStructureTriangleClusterInputNV {
2882    #[inline]
2883    fn default() -> Self {
2884        Self {
2885            s_type: StructureType::CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV,
2886            next: ptr::null_mut(),
2887            vertex_format: Format::default(),
2888            max_geometry_index_value: u32::default(),
2889            max_cluster_unique_geometry_count: u32::default(),
2890            max_cluster_triangle_count: u32::default(),
2891            max_cluster_vertex_count: u32::default(),
2892            max_total_triangle_count: u32::default(),
2893            max_total_vertex_count: u32::default(),
2894            min_position_truncate_bit_count: u32::default(),
2895        }
2896    }
2897}
2898
2899unsafe impl Send for ClusterAccelerationStructureTriangleClusterInputNV {}
2900unsafe impl Sync for ClusterAccelerationStructureTriangleClusterInputNV {}
2901
2902/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html>
2903#[repr(C)]
2904#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2905pub struct CoarseSampleLocationNV {
2906    pub pixel_x: u32,
2907    pub pixel_y: u32,
2908    pub sample: u32,
2909}
2910
2911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html>
2912#[repr(C)]
2913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2914pub struct CoarseSampleOrderCustomNV {
2915    pub shading_rate: ShadingRatePaletteEntryNV,
2916    pub sample_count: u32,
2917    pub sample_location_count: u32,
2918    pub sample_locations: *const CoarseSampleLocationNV,
2919}
2920
2921impl Default for CoarseSampleOrderCustomNV {
2922    #[inline]
2923    fn default() -> Self {
2924        Self {
2925            shading_rate: ShadingRatePaletteEntryNV::default(),
2926            sample_count: u32::default(),
2927            sample_location_count: u32::default(),
2928            sample_locations: ptr::null(),
2929        }
2930    }
2931}
2932
2933unsafe impl Send for CoarseSampleOrderCustomNV {}
2934unsafe impl Sync for CoarseSampleOrderCustomNV {}
2935
2936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html>
2937#[repr(C)]
2938#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2939pub struct ColorBlendAdvancedEXT {
2940    pub advanced_blend_op: BlendOp,
2941    pub src_premultiplied: Bool32,
2942    pub dst_premultiplied: Bool32,
2943    pub blend_overlap: BlendOverlapEXT,
2944    pub clamp_results: Bool32,
2945}
2946
2947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html>
2948#[repr(C)]
2949#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
2950pub struct ColorBlendEquationEXT {
2951    pub src_color_blend_factor: BlendFactor,
2952    pub dst_color_blend_factor: BlendFactor,
2953    pub color_blend_op: BlendOp,
2954    pub src_alpha_blend_factor: BlendFactor,
2955    pub dst_alpha_blend_factor: BlendFactor,
2956    pub alpha_blend_op: BlendOp,
2957}
2958
2959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html>
2960#[repr(C)]
2961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2962pub struct CommandBufferAllocateInfo {
2963    pub s_type: StructureType,
2964    pub next: *const c_void,
2965    pub command_pool: CommandPool,
2966    pub level: CommandBufferLevel,
2967    pub command_buffer_count: u32,
2968}
2969
2970impl Default for CommandBufferAllocateInfo {
2971    #[inline]
2972    fn default() -> Self {
2973        Self {
2974            s_type: StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
2975            next: ptr::null(),
2976            command_pool: CommandPool::default(),
2977            level: CommandBufferLevel::default(),
2978            command_buffer_count: u32::default(),
2979        }
2980    }
2981}
2982
2983unsafe impl Send for CommandBufferAllocateInfo {}
2984unsafe impl Sync for CommandBufferAllocateInfo {}
2985
2986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html>
2987#[repr(C)]
2988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
2989pub struct CommandBufferBeginInfo {
2990    pub s_type: StructureType,
2991    pub next: *const c_void,
2992    pub flags: CommandBufferUsageFlags,
2993    pub inheritance_info: *const CommandBufferInheritanceInfo,
2994}
2995
2996impl Default for CommandBufferBeginInfo {
2997    #[inline]
2998    fn default() -> Self {
2999        Self {
3000            s_type: StructureType::COMMAND_BUFFER_BEGIN_INFO,
3001            next: ptr::null(),
3002            flags: CommandBufferUsageFlags::default(),
3003            inheritance_info: ptr::null(),
3004        }
3005    }
3006}
3007
3008unsafe impl Send for CommandBufferBeginInfo {}
3009unsafe impl Sync for CommandBufferBeginInfo {}
3010
3011/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html>
3012#[repr(C)]
3013#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3014pub struct CommandBufferInheritanceConditionalRenderingInfoEXT {
3015    pub s_type: StructureType,
3016    pub next: *const c_void,
3017    pub conditional_rendering_enable: Bool32,
3018}
3019
3020impl Default for CommandBufferInheritanceConditionalRenderingInfoEXT {
3021    #[inline]
3022    fn default() -> Self {
3023        Self {
3024            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
3025            next: ptr::null(),
3026            conditional_rendering_enable: Bool32::default(),
3027        }
3028    }
3029}
3030
3031unsafe impl Send for CommandBufferInheritanceConditionalRenderingInfoEXT {}
3032unsafe impl Sync for CommandBufferInheritanceConditionalRenderingInfoEXT {}
3033
3034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceDescriptorHeapInfoEXT.html>
3035#[repr(C)]
3036#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3037pub struct CommandBufferInheritanceDescriptorHeapInfoEXT {
3038    pub s_type: StructureType,
3039    pub next: *const c_void,
3040    pub sampler_heap_bind_info: *const BindHeapInfoEXT,
3041    pub resource_heap_bind_info: *const BindHeapInfoEXT,
3042}
3043
3044impl Default for CommandBufferInheritanceDescriptorHeapInfoEXT {
3045    #[inline]
3046    fn default() -> Self {
3047        Self {
3048            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT,
3049            next: ptr::null(),
3050            sampler_heap_bind_info: ptr::null(),
3051            resource_heap_bind_info: ptr::null(),
3052        }
3053    }
3054}
3055
3056unsafe impl Send for CommandBufferInheritanceDescriptorHeapInfoEXT {}
3057unsafe impl Sync for CommandBufferInheritanceDescriptorHeapInfoEXT {}
3058
3059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html>
3060#[repr(C)]
3061#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3062pub struct CommandBufferInheritanceInfo {
3063    pub s_type: StructureType,
3064    pub next: *const c_void,
3065    pub render_pass: RenderPass,
3066    pub subpass: u32,
3067    pub framebuffer: Framebuffer,
3068    pub occlusion_query_enable: Bool32,
3069    pub query_flags: QueryControlFlags,
3070    pub pipeline_statistics: QueryPipelineStatisticFlags,
3071}
3072
3073impl Default for CommandBufferInheritanceInfo {
3074    #[inline]
3075    fn default() -> Self {
3076        Self {
3077            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
3078            next: ptr::null(),
3079            render_pass: RenderPass::default(),
3080            subpass: u32::default(),
3081            framebuffer: Framebuffer::default(),
3082            occlusion_query_enable: Bool32::default(),
3083            query_flags: QueryControlFlags::default(),
3084            pipeline_statistics: QueryPipelineStatisticFlags::default(),
3085        }
3086    }
3087}
3088
3089unsafe impl Send for CommandBufferInheritanceInfo {}
3090unsafe impl Sync for CommandBufferInheritanceInfo {}
3091
3092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html>
3093#[repr(C)]
3094#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3095pub struct CommandBufferInheritanceRenderPassTransformInfoQCOM {
3096    pub s_type: StructureType,
3097    pub next: *const c_void,
3098    pub transform: SurfaceTransformFlagsKHR,
3099    pub render_area: Rect2D,
3100}
3101
3102impl Default for CommandBufferInheritanceRenderPassTransformInfoQCOM {
3103    #[inline]
3104    fn default() -> Self {
3105        Self {
3106            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
3107            next: ptr::null(),
3108            transform: SurfaceTransformFlagsKHR::default(),
3109            render_area: Rect2D::default(),
3110        }
3111    }
3112}
3113
3114unsafe impl Send for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3115unsafe impl Sync for CommandBufferInheritanceRenderPassTransformInfoQCOM {}
3116
3117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html>
3118#[repr(C)]
3119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3120pub struct CommandBufferInheritanceRenderingInfo {
3121    pub s_type: StructureType,
3122    pub next: *const c_void,
3123    pub flags: RenderingFlags,
3124    pub view_mask: u32,
3125    pub color_attachment_count: u32,
3126    pub color_attachment_formats: *const Format,
3127    pub depth_attachment_format: Format,
3128    pub stencil_attachment_format: Format,
3129    pub rasterization_samples: SampleCountFlags,
3130}
3131
3132impl Default for CommandBufferInheritanceRenderingInfo {
3133    #[inline]
3134    fn default() -> Self {
3135        Self {
3136            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
3137            next: ptr::null(),
3138            flags: RenderingFlags::default(),
3139            view_mask: u32::default(),
3140            color_attachment_count: u32::default(),
3141            color_attachment_formats: ptr::null(),
3142            depth_attachment_format: Format::default(),
3143            stencil_attachment_format: Format::default(),
3144            rasterization_samples: SampleCountFlags::default(),
3145        }
3146    }
3147}
3148
3149unsafe impl Send for CommandBufferInheritanceRenderingInfo {}
3150unsafe impl Sync for CommandBufferInheritanceRenderingInfo {}
3151
3152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html>
3153#[repr(C)]
3154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3155pub struct CommandBufferInheritanceViewportScissorInfoNV {
3156    pub s_type: StructureType,
3157    pub next: *const c_void,
3158    pub viewport_scissor_2d: Bool32,
3159    pub viewport_depth_count: u32,
3160    pub viewport_depths: *const Viewport,
3161}
3162
3163impl Default for CommandBufferInheritanceViewportScissorInfoNV {
3164    #[inline]
3165    fn default() -> Self {
3166        Self {
3167            s_type: StructureType::COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
3168            next: ptr::null(),
3169            viewport_scissor_2d: Bool32::default(),
3170            viewport_depth_count: u32::default(),
3171            viewport_depths: ptr::null(),
3172        }
3173    }
3174}
3175
3176unsafe impl Send for CommandBufferInheritanceViewportScissorInfoNV {}
3177unsafe impl Sync for CommandBufferInheritanceViewportScissorInfoNV {}
3178
3179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html>
3180#[repr(C)]
3181#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3182pub struct CommandBufferSubmitInfo {
3183    pub s_type: StructureType,
3184    pub next: *const c_void,
3185    pub command_buffer: CommandBuffer,
3186    pub device_mask: u32,
3187}
3188
3189impl Default for CommandBufferSubmitInfo {
3190    #[inline]
3191    fn default() -> Self {
3192        Self {
3193            s_type: StructureType::COMMAND_BUFFER_SUBMIT_INFO,
3194            next: ptr::null(),
3195            command_buffer: CommandBuffer::default(),
3196            device_mask: u32::default(),
3197        }
3198    }
3199}
3200
3201unsafe impl Send for CommandBufferSubmitInfo {}
3202unsafe impl Sync for CommandBufferSubmitInfo {}
3203
3204/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html>
3205#[repr(C)]
3206#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3207pub struct CommandPoolCreateInfo {
3208    pub s_type: StructureType,
3209    pub next: *const c_void,
3210    pub flags: CommandPoolCreateFlags,
3211    pub queue_family_index: u32,
3212}
3213
3214impl Default for CommandPoolCreateInfo {
3215    #[inline]
3216    fn default() -> Self {
3217        Self {
3218            s_type: StructureType::COMMAND_POOL_CREATE_INFO,
3219            next: ptr::null(),
3220            flags: CommandPoolCreateFlags::default(),
3221            queue_family_index: u32::default(),
3222        }
3223    }
3224}
3225
3226unsafe impl Send for CommandPoolCreateInfo {}
3227unsafe impl Sync for CommandPoolCreateInfo {}
3228
3229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComponentMapping.html>
3230#[repr(C)]
3231#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3232pub struct ComponentMapping {
3233    pub r: ComponentSwizzle,
3234    pub g: ComponentSwizzle,
3235    pub b: ComponentSwizzle,
3236    pub a: ComponentSwizzle,
3237}
3238
3239/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputeOccupancyPriorityParametersNV.html>
3240#[repr(C)]
3241#[derive(Copy, Clone, Debug, PartialEq)]
3242pub struct ComputeOccupancyPriorityParametersNV {
3243    pub s_type: StructureType,
3244    pub next: *const c_void,
3245    pub occupancy_priority: f32,
3246    pub occupancy_throttling: f32,
3247}
3248
3249impl Default for ComputeOccupancyPriorityParametersNV {
3250    #[inline]
3251    fn default() -> Self {
3252        Self {
3253            s_type: StructureType::COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV,
3254            next: ptr::null(),
3255            occupancy_priority: f32::default(),
3256            occupancy_throttling: f32::default(),
3257        }
3258    }
3259}
3260
3261unsafe impl Send for ComputeOccupancyPriorityParametersNV {}
3262unsafe impl Sync for ComputeOccupancyPriorityParametersNV {}
3263
3264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html>
3265#[repr(C)]
3266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3267pub struct ComputePipelineCreateInfo {
3268    pub s_type: StructureType,
3269    pub next: *const c_void,
3270    pub flags: PipelineCreateFlags,
3271    pub stage: PipelineShaderStageCreateInfo,
3272    pub layout: PipelineLayout,
3273    pub base_pipeline_handle: Pipeline,
3274    pub base_pipeline_index: i32,
3275}
3276
3277impl Default for ComputePipelineCreateInfo {
3278    #[inline]
3279    fn default() -> Self {
3280        Self {
3281            s_type: StructureType::COMPUTE_PIPELINE_CREATE_INFO,
3282            next: ptr::null(),
3283            flags: PipelineCreateFlags::default(),
3284            stage: PipelineShaderStageCreateInfo::default(),
3285            layout: PipelineLayout::default(),
3286            base_pipeline_handle: Pipeline::default(),
3287            base_pipeline_index: i32::default(),
3288        }
3289    }
3290}
3291
3292unsafe impl Send for ComputePipelineCreateInfo {}
3293unsafe impl Sync for ComputePipelineCreateInfo {}
3294
3295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html>
3296#[repr(C)]
3297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3298pub struct ComputePipelineIndirectBufferInfoNV {
3299    pub s_type: StructureType,
3300    pub next: *const c_void,
3301    pub device_address: DeviceAddress,
3302    pub size: DeviceSize,
3303    pub pipeline_device_address_capture_replay: DeviceAddress,
3304}
3305
3306impl Default for ComputePipelineIndirectBufferInfoNV {
3307    #[inline]
3308    fn default() -> Self {
3309        Self {
3310            s_type: StructureType::COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV,
3311            next: ptr::null(),
3312            device_address: DeviceAddress::default(),
3313            size: DeviceSize::default(),
3314            pipeline_device_address_capture_replay: DeviceAddress::default(),
3315        }
3316    }
3317}
3318
3319unsafe impl Send for ComputePipelineIndirectBufferInfoNV {}
3320unsafe impl Sync for ComputePipelineIndirectBufferInfoNV {}
3321
3322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html>
3323#[repr(C)]
3324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3325pub struct ConditionalRenderingBeginInfoEXT {
3326    pub s_type: StructureType,
3327    pub next: *const c_void,
3328    pub buffer: Buffer,
3329    pub offset: DeviceSize,
3330    pub flags: ConditionalRenderingFlagsEXT,
3331}
3332
3333impl Default for ConditionalRenderingBeginInfoEXT {
3334    #[inline]
3335    fn default() -> Self {
3336        Self {
3337            s_type: StructureType::CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
3338            next: ptr::null(),
3339            buffer: Buffer::default(),
3340            offset: DeviceSize::default(),
3341            flags: ConditionalRenderingFlagsEXT::default(),
3342        }
3343    }
3344}
3345
3346unsafe impl Send for ConditionalRenderingBeginInfoEXT {}
3347unsafe impl Sync for ConditionalRenderingBeginInfoEXT {}
3348
3349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersion.html>
3350#[repr(C)]
3351#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3352pub struct ConformanceVersion {
3353    pub major: u8,
3354    pub minor: u8,
3355    pub subminor: u8,
3356    pub patch: u8,
3357}
3358
3359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html>
3360#[repr(C)]
3361#[derive(Copy, Clone, Debug)]
3362pub struct ConvertCooperativeVectorMatrixInfoNV {
3363    pub s_type: StructureType,
3364    pub next: *const c_void,
3365    pub src_size: usize,
3366    pub src_data: DeviceOrHostAddressConstKHR,
3367    pub dst_size: *mut usize,
3368    pub dst_data: DeviceOrHostAddressKHR,
3369    pub src_component_type: ComponentTypeKHR,
3370    pub dst_component_type: ComponentTypeKHR,
3371    pub num_rows: u32,
3372    pub num_columns: u32,
3373    pub src_layout: CooperativeVectorMatrixLayoutNV,
3374    pub src_stride: usize,
3375    pub dst_layout: CooperativeVectorMatrixLayoutNV,
3376    pub dst_stride: usize,
3377}
3378
3379impl Default for ConvertCooperativeVectorMatrixInfoNV {
3380    #[inline]
3381    fn default() -> Self {
3382        Self {
3383            s_type: StructureType::CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV,
3384            next: ptr::null(),
3385            src_size: usize::default(),
3386            src_data: DeviceOrHostAddressConstKHR::default(),
3387            dst_size: ptr::null_mut(),
3388            dst_data: DeviceOrHostAddressKHR::default(),
3389            src_component_type: ComponentTypeKHR::default(),
3390            dst_component_type: ComponentTypeKHR::default(),
3391            num_rows: u32::default(),
3392            num_columns: u32::default(),
3393            src_layout: CooperativeVectorMatrixLayoutNV::default(),
3394            src_stride: usize::default(),
3395            dst_layout: CooperativeVectorMatrixLayoutNV::default(),
3396            dst_stride: usize::default(),
3397        }
3398    }
3399}
3400
3401unsafe impl Send for ConvertCooperativeVectorMatrixInfoNV {}
3402unsafe impl Sync for ConvertCooperativeVectorMatrixInfoNV {}
3403
3404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html>
3405#[repr(C)]
3406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3407pub struct CooperativeMatrixFlexibleDimensionsPropertiesNV {
3408    pub s_type: StructureType,
3409    pub next: *mut c_void,
3410    pub m_granularity: u32,
3411    pub n_granularity: u32,
3412    pub k_granularity: u32,
3413    pub a_type: ComponentTypeKHR,
3414    pub b_type: ComponentTypeKHR,
3415    pub c_type: ComponentTypeKHR,
3416    pub result_type: ComponentTypeKHR,
3417    pub saturating_accumulation: Bool32,
3418    pub scope: ScopeKHR,
3419    pub workgroup_invocations: u32,
3420}
3421
3422impl Default for CooperativeMatrixFlexibleDimensionsPropertiesNV {
3423    #[inline]
3424    fn default() -> Self {
3425        Self {
3426            s_type: StructureType::COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV,
3427            next: ptr::null_mut(),
3428            m_granularity: u32::default(),
3429            n_granularity: u32::default(),
3430            k_granularity: u32::default(),
3431            a_type: ComponentTypeKHR::default(),
3432            b_type: ComponentTypeKHR::default(),
3433            c_type: ComponentTypeKHR::default(),
3434            result_type: ComponentTypeKHR::default(),
3435            saturating_accumulation: Bool32::default(),
3436            scope: ScopeKHR::default(),
3437            workgroup_invocations: u32::default(),
3438        }
3439    }
3440}
3441
3442unsafe impl Send for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3443unsafe impl Sync for CooperativeMatrixFlexibleDimensionsPropertiesNV {}
3444
3445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html>
3446#[repr(C)]
3447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3448pub struct CooperativeMatrixPropertiesKHR {
3449    pub s_type: StructureType,
3450    pub next: *mut c_void,
3451    pub m_size: u32,
3452    pub n_size: u32,
3453    pub k_size: u32,
3454    pub a_type: ComponentTypeKHR,
3455    pub b_type: ComponentTypeKHR,
3456    pub c_type: ComponentTypeKHR,
3457    pub result_type: ComponentTypeKHR,
3458    pub saturating_accumulation: Bool32,
3459    pub scope: ScopeKHR,
3460}
3461
3462impl Default for CooperativeMatrixPropertiesKHR {
3463    #[inline]
3464    fn default() -> Self {
3465        Self {
3466            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_KHR,
3467            next: ptr::null_mut(),
3468            m_size: u32::default(),
3469            n_size: u32::default(),
3470            k_size: u32::default(),
3471            a_type: ComponentTypeKHR::default(),
3472            b_type: ComponentTypeKHR::default(),
3473            c_type: ComponentTypeKHR::default(),
3474            result_type: ComponentTypeKHR::default(),
3475            saturating_accumulation: Bool32::default(),
3476            scope: ScopeKHR::default(),
3477        }
3478    }
3479}
3480
3481unsafe impl Send for CooperativeMatrixPropertiesKHR {}
3482unsafe impl Sync for CooperativeMatrixPropertiesKHR {}
3483
3484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html>
3485#[repr(C)]
3486#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3487pub struct CooperativeMatrixPropertiesNV {
3488    pub s_type: StructureType,
3489    pub next: *mut c_void,
3490    pub m_size: u32,
3491    pub n_size: u32,
3492    pub k_size: u32,
3493    pub a_type: ComponentTypeNV,
3494    pub b_type: ComponentTypeNV,
3495    pub c_type: ComponentTypeNV,
3496    pub d_type: ComponentTypeNV,
3497    pub scope: ScopeNV,
3498}
3499
3500impl Default for CooperativeMatrixPropertiesNV {
3501    #[inline]
3502    fn default() -> Self {
3503        Self {
3504            s_type: StructureType::COOPERATIVE_MATRIX_PROPERTIES_NV,
3505            next: ptr::null_mut(),
3506            m_size: u32::default(),
3507            n_size: u32::default(),
3508            k_size: u32::default(),
3509            a_type: ComponentTypeNV::default(),
3510            b_type: ComponentTypeNV::default(),
3511            c_type: ComponentTypeNV::default(),
3512            d_type: ComponentTypeNV::default(),
3513            scope: ScopeNV::default(),
3514        }
3515    }
3516}
3517
3518unsafe impl Send for CooperativeMatrixPropertiesNV {}
3519unsafe impl Sync for CooperativeMatrixPropertiesNV {}
3520
3521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html>
3522#[repr(C)]
3523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3524pub struct CooperativeVectorPropertiesNV {
3525    pub s_type: StructureType,
3526    pub next: *mut c_void,
3527    pub input_type: ComponentTypeKHR,
3528    pub input_interpretation: ComponentTypeKHR,
3529    pub matrix_interpretation: ComponentTypeKHR,
3530    pub bias_interpretation: ComponentTypeKHR,
3531    pub result_type: ComponentTypeKHR,
3532    pub transpose: Bool32,
3533}
3534
3535impl Default for CooperativeVectorPropertiesNV {
3536    #[inline]
3537    fn default() -> Self {
3538        Self {
3539            s_type: StructureType::COOPERATIVE_VECTOR_PROPERTIES_NV,
3540            next: ptr::null_mut(),
3541            input_type: ComponentTypeKHR::default(),
3542            input_interpretation: ComponentTypeKHR::default(),
3543            matrix_interpretation: ComponentTypeKHR::default(),
3544            bias_interpretation: ComponentTypeKHR::default(),
3545            result_type: ComponentTypeKHR::default(),
3546            transpose: Bool32::default(),
3547        }
3548    }
3549}
3550
3551unsafe impl Send for CooperativeVectorPropertiesNV {}
3552unsafe impl Sync for CooperativeVectorPropertiesNV {}
3553
3554/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html>
3555#[repr(C)]
3556#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3557pub struct CopyAccelerationStructureInfoKHR {
3558    pub s_type: StructureType,
3559    pub next: *const c_void,
3560    pub src: AccelerationStructureKHR,
3561    pub dst: AccelerationStructureKHR,
3562    pub mode: CopyAccelerationStructureModeKHR,
3563}
3564
3565impl Default for CopyAccelerationStructureInfoKHR {
3566    #[inline]
3567    fn default() -> Self {
3568        Self {
3569            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_INFO_KHR,
3570            next: ptr::null(),
3571            src: AccelerationStructureKHR::default(),
3572            dst: AccelerationStructureKHR::default(),
3573            mode: CopyAccelerationStructureModeKHR::default(),
3574        }
3575    }
3576}
3577
3578unsafe impl Send for CopyAccelerationStructureInfoKHR {}
3579unsafe impl Sync for CopyAccelerationStructureInfoKHR {}
3580
3581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html>
3582#[repr(C)]
3583#[derive(Copy, Clone, Debug)]
3584pub struct CopyAccelerationStructureToMemoryInfoKHR {
3585    pub s_type: StructureType,
3586    pub next: *const c_void,
3587    pub src: AccelerationStructureKHR,
3588    pub dst: DeviceOrHostAddressKHR,
3589    pub mode: CopyAccelerationStructureModeKHR,
3590}
3591
3592impl Default for CopyAccelerationStructureToMemoryInfoKHR {
3593    #[inline]
3594    fn default() -> Self {
3595        Self {
3596            s_type: StructureType::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,
3597            next: ptr::null(),
3598            src: AccelerationStructureKHR::default(),
3599            dst: DeviceOrHostAddressKHR::default(),
3600            mode: CopyAccelerationStructureModeKHR::default(),
3601        }
3602    }
3603}
3604
3605unsafe impl Send for CopyAccelerationStructureToMemoryInfoKHR {}
3606unsafe impl Sync for CopyAccelerationStructureToMemoryInfoKHR {}
3607
3608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html>
3609#[repr(C)]
3610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3611pub struct CopyBufferInfo2 {
3612    pub s_type: StructureType,
3613    pub next: *const c_void,
3614    pub src_buffer: Buffer,
3615    pub dst_buffer: Buffer,
3616    pub region_count: u32,
3617    pub regions: *const BufferCopy2,
3618}
3619
3620impl Default for CopyBufferInfo2 {
3621    #[inline]
3622    fn default() -> Self {
3623        Self {
3624            s_type: StructureType::COPY_BUFFER_INFO_2,
3625            next: ptr::null(),
3626            src_buffer: Buffer::default(),
3627            dst_buffer: Buffer::default(),
3628            region_count: u32::default(),
3629            regions: ptr::null(),
3630        }
3631    }
3632}
3633
3634unsafe impl Send for CopyBufferInfo2 {}
3635unsafe impl Sync for CopyBufferInfo2 {}
3636
3637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html>
3638#[repr(C)]
3639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3640pub struct CopyBufferToImageInfo2 {
3641    pub s_type: StructureType,
3642    pub next: *const c_void,
3643    pub src_buffer: Buffer,
3644    pub dst_image: Image,
3645    pub dst_image_layout: ImageLayout,
3646    pub region_count: u32,
3647    pub regions: *const BufferImageCopy2,
3648}
3649
3650impl Default for CopyBufferToImageInfo2 {
3651    #[inline]
3652    fn default() -> Self {
3653        Self {
3654            s_type: StructureType::COPY_BUFFER_TO_IMAGE_INFO_2,
3655            next: ptr::null(),
3656            src_buffer: Buffer::default(),
3657            dst_image: Image::default(),
3658            dst_image_layout: ImageLayout::default(),
3659            region_count: u32::default(),
3660            regions: ptr::null(),
3661        }
3662    }
3663}
3664
3665unsafe impl Send for CopyBufferToImageInfo2 {}
3666unsafe impl Sync for CopyBufferToImageInfo2 {}
3667
3668/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html>
3669#[repr(C)]
3670#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3671pub struct CopyCommandTransformInfoQCOM {
3672    pub s_type: StructureType,
3673    pub next: *const c_void,
3674    pub transform: SurfaceTransformFlagsKHR,
3675}
3676
3677impl Default for CopyCommandTransformInfoQCOM {
3678    #[inline]
3679    fn default() -> Self {
3680        Self {
3681            s_type: StructureType::COPY_COMMAND_TRANSFORM_INFO_QCOM,
3682            next: ptr::null(),
3683            transform: SurfaceTransformFlagsKHR::default(),
3684        }
3685    }
3686}
3687
3688unsafe impl Send for CopyCommandTransformInfoQCOM {}
3689unsafe impl Sync for CopyCommandTransformInfoQCOM {}
3690
3691/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html>
3692#[repr(C)]
3693#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3694pub struct CopyDescriptorSet {
3695    pub s_type: StructureType,
3696    pub next: *const c_void,
3697    pub src_set: DescriptorSet,
3698    pub src_binding: u32,
3699    pub src_array_element: u32,
3700    pub dst_set: DescriptorSet,
3701    pub dst_binding: u32,
3702    pub dst_array_element: u32,
3703    pub descriptor_count: u32,
3704}
3705
3706impl Default for CopyDescriptorSet {
3707    #[inline]
3708    fn default() -> Self {
3709        Self {
3710            s_type: StructureType::COPY_DESCRIPTOR_SET,
3711            next: ptr::null(),
3712            src_set: DescriptorSet::default(),
3713            src_binding: u32::default(),
3714            src_array_element: u32::default(),
3715            dst_set: DescriptorSet::default(),
3716            dst_binding: u32::default(),
3717            dst_array_element: u32::default(),
3718            descriptor_count: u32::default(),
3719        }
3720    }
3721}
3722
3723unsafe impl Send for CopyDescriptorSet {}
3724unsafe impl Sync for CopyDescriptorSet {}
3725
3726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2.html>
3727#[repr(C)]
3728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3729pub struct CopyImageInfo2 {
3730    pub s_type: StructureType,
3731    pub next: *const c_void,
3732    pub src_image: Image,
3733    pub src_image_layout: ImageLayout,
3734    pub dst_image: Image,
3735    pub dst_image_layout: ImageLayout,
3736    pub region_count: u32,
3737    pub regions: *const ImageCopy2,
3738}
3739
3740impl Default for CopyImageInfo2 {
3741    #[inline]
3742    fn default() -> Self {
3743        Self {
3744            s_type: StructureType::COPY_IMAGE_INFO_2,
3745            next: ptr::null(),
3746            src_image: Image::default(),
3747            src_image_layout: ImageLayout::default(),
3748            dst_image: Image::default(),
3749            dst_image_layout: ImageLayout::default(),
3750            region_count: u32::default(),
3751            regions: ptr::null(),
3752        }
3753    }
3754}
3755
3756unsafe impl Send for CopyImageInfo2 {}
3757unsafe impl Sync for CopyImageInfo2 {}
3758
3759/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html>
3760#[repr(C)]
3761#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3762pub struct CopyImageToBufferInfo2 {
3763    pub s_type: StructureType,
3764    pub next: *const c_void,
3765    pub src_image: Image,
3766    pub src_image_layout: ImageLayout,
3767    pub dst_buffer: Buffer,
3768    pub region_count: u32,
3769    pub regions: *const BufferImageCopy2,
3770}
3771
3772impl Default for CopyImageToBufferInfo2 {
3773    #[inline]
3774    fn default() -> Self {
3775        Self {
3776            s_type: StructureType::COPY_IMAGE_TO_BUFFER_INFO_2,
3777            next: ptr::null(),
3778            src_image: Image::default(),
3779            src_image_layout: ImageLayout::default(),
3780            dst_buffer: Buffer::default(),
3781            region_count: u32::default(),
3782            regions: ptr::null(),
3783        }
3784    }
3785}
3786
3787unsafe impl Send for CopyImageToBufferInfo2 {}
3788unsafe impl Sync for CopyImageToBufferInfo2 {}
3789
3790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html>
3791#[repr(C)]
3792#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3793pub struct CopyImageToImageInfo {
3794    pub s_type: StructureType,
3795    pub next: *const c_void,
3796    pub flags: HostImageCopyFlags,
3797    pub src_image: Image,
3798    pub src_image_layout: ImageLayout,
3799    pub dst_image: Image,
3800    pub dst_image_layout: ImageLayout,
3801    pub region_count: u32,
3802    pub regions: *const ImageCopy2,
3803}
3804
3805impl Default for CopyImageToImageInfo {
3806    #[inline]
3807    fn default() -> Self {
3808        Self {
3809            s_type: StructureType::COPY_IMAGE_TO_IMAGE_INFO,
3810            next: ptr::null(),
3811            flags: HostImageCopyFlags::default(),
3812            src_image: Image::default(),
3813            src_image_layout: ImageLayout::default(),
3814            dst_image: Image::default(),
3815            dst_image_layout: ImageLayout::default(),
3816            region_count: u32::default(),
3817            regions: ptr::null(),
3818        }
3819    }
3820}
3821
3822unsafe impl Send for CopyImageToImageInfo {}
3823unsafe impl Sync for CopyImageToImageInfo {}
3824
3825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html>
3826#[repr(C)]
3827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3828pub struct CopyImageToMemoryInfo {
3829    pub s_type: StructureType,
3830    pub next: *const c_void,
3831    pub flags: HostImageCopyFlags,
3832    pub src_image: Image,
3833    pub src_image_layout: ImageLayout,
3834    pub region_count: u32,
3835    pub regions: *const ImageToMemoryCopy,
3836}
3837
3838impl Default for CopyImageToMemoryInfo {
3839    #[inline]
3840    fn default() -> Self {
3841        Self {
3842            s_type: StructureType::COPY_IMAGE_TO_MEMORY_INFO,
3843            next: ptr::null(),
3844            flags: HostImageCopyFlags::default(),
3845            src_image: Image::default(),
3846            src_image_layout: ImageLayout::default(),
3847            region_count: u32::default(),
3848            regions: ptr::null(),
3849        }
3850    }
3851}
3852
3853unsafe impl Send for CopyImageToMemoryInfo {}
3854unsafe impl Sync for CopyImageToMemoryInfo {}
3855
3856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandKHR.html>
3857#[repr(C)]
3858#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3859pub struct CopyMemoryIndirectCommandKHR {
3860    pub src_address: DeviceAddress,
3861    pub dst_address: DeviceAddress,
3862    pub size: DeviceSize,
3863}
3864
3865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectInfoKHR.html>
3866#[repr(C)]
3867#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3868pub struct CopyMemoryIndirectInfoKHR {
3869    pub s_type: StructureType,
3870    pub next: *const c_void,
3871    pub src_copy_flags: AddressCopyFlagsKHR,
3872    pub dst_copy_flags: AddressCopyFlagsKHR,
3873    pub copy_count: u32,
3874    pub copy_address_range: StridedDeviceAddressRangeKHR,
3875}
3876
3877impl Default for CopyMemoryIndirectInfoKHR {
3878    #[inline]
3879    fn default() -> Self {
3880        Self {
3881            s_type: StructureType::COPY_MEMORY_INDIRECT_INFO_KHR,
3882            next: ptr::null(),
3883            src_copy_flags: AddressCopyFlagsKHR::default(),
3884            dst_copy_flags: AddressCopyFlagsKHR::default(),
3885            copy_count: u32::default(),
3886            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3887        }
3888    }
3889}
3890
3891unsafe impl Send for CopyMemoryIndirectInfoKHR {}
3892unsafe impl Sync for CopyMemoryIndirectInfoKHR {}
3893
3894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html>
3895#[repr(C)]
3896#[derive(Copy, Clone, Debug)]
3897pub struct CopyMemoryToAccelerationStructureInfoKHR {
3898    pub s_type: StructureType,
3899    pub next: *const c_void,
3900    pub src: DeviceOrHostAddressConstKHR,
3901    pub dst: AccelerationStructureKHR,
3902    pub mode: CopyAccelerationStructureModeKHR,
3903}
3904
3905impl Default for CopyMemoryToAccelerationStructureInfoKHR {
3906    #[inline]
3907    fn default() -> Self {
3908        Self {
3909            s_type: StructureType::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,
3910            next: ptr::null(),
3911            src: DeviceOrHostAddressConstKHR::default(),
3912            dst: AccelerationStructureKHR::default(),
3913            mode: CopyAccelerationStructureModeKHR::default(),
3914        }
3915    }
3916}
3917
3918unsafe impl Send for CopyMemoryToAccelerationStructureInfoKHR {}
3919unsafe impl Sync for CopyMemoryToAccelerationStructureInfoKHR {}
3920
3921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandKHR.html>
3922#[repr(C)]
3923#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
3924pub struct CopyMemoryToImageIndirectCommandKHR {
3925    pub src_address: DeviceAddress,
3926    pub buffer_row_length: u32,
3927    pub buffer_image_height: u32,
3928    pub image_subresource: ImageSubresourceLayers,
3929    pub image_offset: Offset3D,
3930    pub image_extent: Extent3D,
3931}
3932
3933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectInfoKHR.html>
3934#[repr(C)]
3935#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3936pub struct CopyMemoryToImageIndirectInfoKHR {
3937    pub s_type: StructureType,
3938    pub next: *const c_void,
3939    pub src_copy_flags: AddressCopyFlagsKHR,
3940    pub copy_count: u32,
3941    pub copy_address_range: StridedDeviceAddressRangeKHR,
3942    pub dst_image: Image,
3943    pub dst_image_layout: ImageLayout,
3944    pub image_subresources: *const ImageSubresourceLayers,
3945}
3946
3947impl Default for CopyMemoryToImageIndirectInfoKHR {
3948    #[inline]
3949    fn default() -> Self {
3950        Self {
3951            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR,
3952            next: ptr::null(),
3953            src_copy_flags: AddressCopyFlagsKHR::default(),
3954            copy_count: u32::default(),
3955            copy_address_range: StridedDeviceAddressRangeKHR::default(),
3956            dst_image: Image::default(),
3957            dst_image_layout: ImageLayout::default(),
3958            image_subresources: ptr::null(),
3959        }
3960    }
3961}
3962
3963unsafe impl Send for CopyMemoryToImageIndirectInfoKHR {}
3964unsafe impl Sync for CopyMemoryToImageIndirectInfoKHR {}
3965
3966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html>
3967#[repr(C)]
3968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
3969pub struct CopyMemoryToImageInfo {
3970    pub s_type: StructureType,
3971    pub next: *const c_void,
3972    pub flags: HostImageCopyFlags,
3973    pub dst_image: Image,
3974    pub dst_image_layout: ImageLayout,
3975    pub region_count: u32,
3976    pub regions: *const MemoryToImageCopy,
3977}
3978
3979impl Default for CopyMemoryToImageInfo {
3980    #[inline]
3981    fn default() -> Self {
3982        Self {
3983            s_type: StructureType::COPY_MEMORY_TO_IMAGE_INFO,
3984            next: ptr::null(),
3985            flags: HostImageCopyFlags::default(),
3986            dst_image: Image::default(),
3987            dst_image_layout: ImageLayout::default(),
3988            region_count: u32::default(),
3989            regions: ptr::null(),
3990        }
3991    }
3992}
3993
3994unsafe impl Send for CopyMemoryToImageInfo {}
3995unsafe impl Sync for CopyMemoryToImageInfo {}
3996
3997/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html>
3998#[repr(C)]
3999#[derive(Copy, Clone, Debug)]
4000pub struct CopyMemoryToMicromapInfoEXT {
4001    pub s_type: StructureType,
4002    pub next: *const c_void,
4003    pub src: DeviceOrHostAddressConstKHR,
4004    pub dst: MicromapEXT,
4005    pub mode: CopyMicromapModeEXT,
4006}
4007
4008impl Default for CopyMemoryToMicromapInfoEXT {
4009    #[inline]
4010    fn default() -> Self {
4011        Self {
4012            s_type: StructureType::COPY_MEMORY_TO_MICROMAP_INFO_EXT,
4013            next: ptr::null(),
4014            src: DeviceOrHostAddressConstKHR::default(),
4015            dst: MicromapEXT::default(),
4016            mode: CopyMicromapModeEXT::default(),
4017        }
4018    }
4019}
4020
4021unsafe impl Send for CopyMemoryToMicromapInfoEXT {}
4022unsafe impl Sync for CopyMemoryToMicromapInfoEXT {}
4023
4024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html>
4025#[repr(C)]
4026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4027pub struct CopyMicromapInfoEXT {
4028    pub s_type: StructureType,
4029    pub next: *const c_void,
4030    pub src: MicromapEXT,
4031    pub dst: MicromapEXT,
4032    pub mode: CopyMicromapModeEXT,
4033}
4034
4035impl Default for CopyMicromapInfoEXT {
4036    #[inline]
4037    fn default() -> Self {
4038        Self {
4039            s_type: StructureType::COPY_MICROMAP_INFO_EXT,
4040            next: ptr::null(),
4041            src: MicromapEXT::default(),
4042            dst: MicromapEXT::default(),
4043            mode: CopyMicromapModeEXT::default(),
4044        }
4045    }
4046}
4047
4048unsafe impl Send for CopyMicromapInfoEXT {}
4049unsafe impl Sync for CopyMicromapInfoEXT {}
4050
4051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html>
4052#[repr(C)]
4053#[derive(Copy, Clone, Debug)]
4054pub struct CopyMicromapToMemoryInfoEXT {
4055    pub s_type: StructureType,
4056    pub next: *const c_void,
4057    pub src: MicromapEXT,
4058    pub dst: DeviceOrHostAddressKHR,
4059    pub mode: CopyMicromapModeEXT,
4060}
4061
4062impl Default for CopyMicromapToMemoryInfoEXT {
4063    #[inline]
4064    fn default() -> Self {
4065        Self {
4066            s_type: StructureType::COPY_MICROMAP_TO_MEMORY_INFO_EXT,
4067            next: ptr::null(),
4068            src: MicromapEXT::default(),
4069            dst: DeviceOrHostAddressKHR::default(),
4070            mode: CopyMicromapModeEXT::default(),
4071        }
4072    }
4073}
4074
4075unsafe impl Send for CopyMicromapToMemoryInfoEXT {}
4076unsafe impl Sync for CopyMicromapToMemoryInfoEXT {}
4077
4078/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyTensorInfoARM.html>
4079#[repr(C)]
4080#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4081pub struct CopyTensorInfoARM {
4082    pub s_type: StructureType,
4083    pub next: *const c_void,
4084    pub src_tensor: TensorARM,
4085    pub dst_tensor: TensorARM,
4086    pub region_count: u32,
4087    pub regions: *const TensorCopyARM,
4088}
4089
4090impl Default for CopyTensorInfoARM {
4091    #[inline]
4092    fn default() -> Self {
4093        Self {
4094            s_type: StructureType::COPY_TENSOR_INFO_ARM,
4095            next: ptr::null(),
4096            src_tensor: TensorARM::default(),
4097            dst_tensor: TensorARM::default(),
4098            region_count: u32::default(),
4099            regions: ptr::null(),
4100        }
4101    }
4102}
4103
4104unsafe impl Send for CopyTensorInfoARM {}
4105unsafe impl Sync for CopyTensorInfoARM {}
4106
4107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html>
4108#[repr(C)]
4109#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4110pub struct CuFunctionCreateInfoNVX {
4111    pub s_type: StructureType,
4112    pub next: *const c_void,
4113    pub module: CuModuleNVX,
4114    pub name: *const c_char,
4115}
4116
4117impl Default for CuFunctionCreateInfoNVX {
4118    #[inline]
4119    fn default() -> Self {
4120        Self {
4121            s_type: StructureType::CU_FUNCTION_CREATE_INFO_NVX,
4122            next: ptr::null(),
4123            module: CuModuleNVX::default(),
4124            name: ptr::null(),
4125        }
4126    }
4127}
4128
4129unsafe impl Send for CuFunctionCreateInfoNVX {}
4130unsafe impl Sync for CuFunctionCreateInfoNVX {}
4131
4132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html>
4133#[repr(C)]
4134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4135pub struct CuLaunchInfoNVX {
4136    pub s_type: StructureType,
4137    pub next: *const c_void,
4138    pub function: CuFunctionNVX,
4139    pub grid_dim_x: u32,
4140    pub grid_dim_y: u32,
4141    pub grid_dim_z: u32,
4142    pub block_dim_x: u32,
4143    pub block_dim_y: u32,
4144    pub block_dim_z: u32,
4145    pub shared_mem_bytes: u32,
4146    pub param_count: usize,
4147    pub params: *const c_void,
4148    pub extra_count: usize,
4149    pub extras: *const c_void,
4150}
4151
4152impl Default for CuLaunchInfoNVX {
4153    #[inline]
4154    fn default() -> Self {
4155        Self {
4156            s_type: StructureType::CU_LAUNCH_INFO_NVX,
4157            next: ptr::null(),
4158            function: CuFunctionNVX::default(),
4159            grid_dim_x: u32::default(),
4160            grid_dim_y: u32::default(),
4161            grid_dim_z: u32::default(),
4162            block_dim_x: u32::default(),
4163            block_dim_y: u32::default(),
4164            block_dim_z: u32::default(),
4165            shared_mem_bytes: u32::default(),
4166            param_count: usize::default(),
4167            params: ptr::null(),
4168            extra_count: usize::default(),
4169            extras: ptr::null(),
4170        }
4171    }
4172}
4173
4174unsafe impl Send for CuLaunchInfoNVX {}
4175unsafe impl Sync for CuLaunchInfoNVX {}
4176
4177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html>
4178#[repr(C)]
4179#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4180pub struct CuModuleCreateInfoNVX {
4181    pub s_type: StructureType,
4182    pub next: *const c_void,
4183    pub data_size: usize,
4184    pub data: *const c_void,
4185}
4186
4187impl Default for CuModuleCreateInfoNVX {
4188    #[inline]
4189    fn default() -> Self {
4190        Self {
4191            s_type: StructureType::CU_MODULE_CREATE_INFO_NVX,
4192            next: ptr::null(),
4193            data_size: usize::default(),
4194            data: ptr::null(),
4195        }
4196    }
4197}
4198
4199unsafe impl Send for CuModuleCreateInfoNVX {}
4200unsafe impl Sync for CuModuleCreateInfoNVX {}
4201
4202/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html>
4203#[repr(C)]
4204#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4205pub struct CuModuleTexturingModeCreateInfoNVX {
4206    pub s_type: StructureType,
4207    pub next: *const c_void,
4208    pub use64bit_texturing: Bool32,
4209}
4210
4211impl Default for CuModuleTexturingModeCreateInfoNVX {
4212    #[inline]
4213    fn default() -> Self {
4214        Self {
4215            s_type: StructureType::CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX,
4216            next: ptr::null(),
4217            use64bit_texturing: Bool32::default(),
4218        }
4219    }
4220}
4221
4222unsafe impl Send for CuModuleTexturingModeCreateInfoNVX {}
4223unsafe impl Sync for CuModuleTexturingModeCreateInfoNVX {}
4224
4225/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html>
4226#[repr(C)]
4227#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4228pub struct CudaFunctionCreateInfoNV {
4229    pub s_type: StructureType,
4230    pub next: *const c_void,
4231    pub module: CudaModuleNV,
4232    pub name: *const c_char,
4233}
4234
4235impl Default for CudaFunctionCreateInfoNV {
4236    #[inline]
4237    fn default() -> Self {
4238        Self {
4239            s_type: StructureType::CUDA_FUNCTION_CREATE_INFO_NV,
4240            next: ptr::null(),
4241            module: CudaModuleNV::default(),
4242            name: ptr::null(),
4243        }
4244    }
4245}
4246
4247unsafe impl Send for CudaFunctionCreateInfoNV {}
4248unsafe impl Sync for CudaFunctionCreateInfoNV {}
4249
4250/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html>
4251#[repr(C)]
4252#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4253pub struct CudaLaunchInfoNV {
4254    pub s_type: StructureType,
4255    pub next: *const c_void,
4256    pub function: CudaFunctionNV,
4257    pub grid_dim_x: u32,
4258    pub grid_dim_y: u32,
4259    pub grid_dim_z: u32,
4260    pub block_dim_x: u32,
4261    pub block_dim_y: u32,
4262    pub block_dim_z: u32,
4263    pub shared_mem_bytes: u32,
4264    pub param_count: usize,
4265    pub params: *const c_void,
4266    pub extra_count: usize,
4267    pub extras: *const c_void,
4268}
4269
4270impl Default for CudaLaunchInfoNV {
4271    #[inline]
4272    fn default() -> Self {
4273        Self {
4274            s_type: StructureType::CUDA_LAUNCH_INFO_NV,
4275            next: ptr::null(),
4276            function: CudaFunctionNV::default(),
4277            grid_dim_x: u32::default(),
4278            grid_dim_y: u32::default(),
4279            grid_dim_z: u32::default(),
4280            block_dim_x: u32::default(),
4281            block_dim_y: u32::default(),
4282            block_dim_z: u32::default(),
4283            shared_mem_bytes: u32::default(),
4284            param_count: usize::default(),
4285            params: ptr::null(),
4286            extra_count: usize::default(),
4287            extras: ptr::null(),
4288        }
4289    }
4290}
4291
4292unsafe impl Send for CudaLaunchInfoNV {}
4293unsafe impl Sync for CudaLaunchInfoNV {}
4294
4295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html>
4296#[repr(C)]
4297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4298pub struct CudaModuleCreateInfoNV {
4299    pub s_type: StructureType,
4300    pub next: *const c_void,
4301    pub data_size: usize,
4302    pub data: *const c_void,
4303}
4304
4305impl Default for CudaModuleCreateInfoNV {
4306    #[inline]
4307    fn default() -> Self {
4308        Self {
4309            s_type: StructureType::CUDA_MODULE_CREATE_INFO_NV,
4310            next: ptr::null(),
4311            data_size: usize::default(),
4312            data: ptr::null(),
4313        }
4314    }
4315}
4316
4317unsafe impl Send for CudaModuleCreateInfoNV {}
4318unsafe impl Sync for CudaModuleCreateInfoNV {}
4319
4320/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCustomResolveCreateInfoEXT.html>
4321#[repr(C)]
4322#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4323pub struct CustomResolveCreateInfoEXT {
4324    pub s_type: StructureType,
4325    pub next: *const c_void,
4326    pub custom_resolve: Bool32,
4327    pub color_attachment_count: u32,
4328    pub color_attachment_formats: *const Format,
4329    pub depth_attachment_format: Format,
4330    pub stencil_attachment_format: Format,
4331}
4332
4333impl Default for CustomResolveCreateInfoEXT {
4334    #[inline]
4335    fn default() -> Self {
4336        Self {
4337            s_type: StructureType::CUSTOM_RESOLVE_CREATE_INFO_EXT,
4338            next: ptr::null(),
4339            custom_resolve: Bool32::default(),
4340            color_attachment_count: u32::default(),
4341            color_attachment_formats: ptr::null(),
4342            depth_attachment_format: Format::default(),
4343            stencil_attachment_format: Format::default(),
4344        }
4345    }
4346}
4347
4348unsafe impl Send for CustomResolveCreateInfoEXT {}
4349unsafe impl Sync for CustomResolveCreateInfoEXT {}
4350
4351/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html>
4352#[repr(C)]
4353#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4354pub struct D3D12FenceSubmitInfoKHR {
4355    pub s_type: StructureType,
4356    pub next: *const c_void,
4357    pub wait_semaphore_values_count: u32,
4358    pub wait_semaphore_values: *const u64,
4359    pub signal_semaphore_values_count: u32,
4360    pub signal_semaphore_values: *const u64,
4361}
4362
4363impl Default for D3D12FenceSubmitInfoKHR {
4364    #[inline]
4365    fn default() -> Self {
4366        Self {
4367            s_type: StructureType::D3D12_FENCE_SUBMIT_INFO_KHR,
4368            next: ptr::null(),
4369            wait_semaphore_values_count: u32::default(),
4370            wait_semaphore_values: ptr::null(),
4371            signal_semaphore_values_count: u32::default(),
4372            signal_semaphore_values: ptr::null(),
4373        }
4374    }
4375}
4376
4377unsafe impl Send for D3D12FenceSubmitInfoKHR {}
4378unsafe impl Sync for D3D12FenceSubmitInfoKHR {}
4379
4380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineBuiltinModelCreateInfoQCOM.html>
4381#[repr(C)]
4382#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4383pub struct DataGraphPipelineBuiltinModelCreateInfoQCOM {
4384    pub s_type: StructureType,
4385    pub next: *const c_void,
4386    pub operation: *const PhysicalDeviceDataGraphOperationSupportARM,
4387}
4388
4389impl Default for DataGraphPipelineBuiltinModelCreateInfoQCOM {
4390    #[inline]
4391    fn default() -> Self {
4392        Self {
4393            s_type: StructureType::DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM,
4394            next: ptr::null(),
4395            operation: ptr::null(),
4396        }
4397    }
4398}
4399
4400unsafe impl Send for DataGraphPipelineBuiltinModelCreateInfoQCOM {}
4401unsafe impl Sync for DataGraphPipelineBuiltinModelCreateInfoQCOM {}
4402
4403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCompilerControlCreateInfoARM.html>
4404#[repr(C)]
4405#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4406pub struct DataGraphPipelineCompilerControlCreateInfoARM {
4407    pub s_type: StructureType,
4408    pub next: *const c_void,
4409    pub vendor_options: *const c_char,
4410}
4411
4412impl Default for DataGraphPipelineCompilerControlCreateInfoARM {
4413    #[inline]
4414    fn default() -> Self {
4415        Self {
4416            s_type: StructureType::DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM,
4417            next: ptr::null(),
4418            vendor_options: ptr::null(),
4419        }
4420    }
4421}
4422
4423unsafe impl Send for DataGraphPipelineCompilerControlCreateInfoARM {}
4424unsafe impl Sync for DataGraphPipelineCompilerControlCreateInfoARM {}
4425
4426/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantARM.html>
4427#[repr(C)]
4428#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4429pub struct DataGraphPipelineConstantARM {
4430    pub s_type: StructureType,
4431    pub next: *const c_void,
4432    pub id: u32,
4433    pub constant_data: *const c_void,
4434}
4435
4436impl Default for DataGraphPipelineConstantARM {
4437    #[inline]
4438    fn default() -> Self {
4439        Self {
4440            s_type: StructureType::DATA_GRAPH_PIPELINE_CONSTANT_ARM,
4441            next: ptr::null(),
4442            id: u32::default(),
4443            constant_data: ptr::null(),
4444        }
4445    }
4446}
4447
4448unsafe impl Send for DataGraphPipelineConstantARM {}
4449unsafe impl Sync for DataGraphPipelineConstantARM {}
4450
4451/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.html>
4452#[repr(C)]
4453#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4454pub struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4455    pub s_type: StructureType,
4456    pub next: *const c_void,
4457    pub dimension: u32,
4458    pub zero_count: u32,
4459    pub group_size: u32,
4460}
4461
4462impl Default for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {
4463    #[inline]
4464    fn default() -> Self {
4465        Self {
4466            s_type:
4467                StructureType::DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM,
4468            next: ptr::null(),
4469            dimension: u32::default(),
4470            zero_count: u32::default(),
4471            group_size: u32::default(),
4472        }
4473    }
4474}
4475
4476unsafe impl Send for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4477unsafe impl Sync for DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM {}
4478
4479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineCreateInfoARM.html>
4480#[repr(C)]
4481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4482pub struct DataGraphPipelineCreateInfoARM {
4483    pub s_type: StructureType,
4484    pub next: *const c_void,
4485    pub flags: PipelineCreateFlags2KHR,
4486    pub layout: PipelineLayout,
4487    pub resource_info_count: u32,
4488    pub resource_infos: *const DataGraphPipelineResourceInfoARM,
4489}
4490
4491impl Default for DataGraphPipelineCreateInfoARM {
4492    #[inline]
4493    fn default() -> Self {
4494        Self {
4495            s_type: StructureType::DATA_GRAPH_PIPELINE_CREATE_INFO_ARM,
4496            next: ptr::null(),
4497            flags: PipelineCreateFlags2KHR::default(),
4498            layout: PipelineLayout::default(),
4499            resource_info_count: u32::default(),
4500            resource_infos: ptr::null(),
4501        }
4502    }
4503}
4504
4505unsafe impl Send for DataGraphPipelineCreateInfoARM {}
4506unsafe impl Sync for DataGraphPipelineCreateInfoARM {}
4507
4508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchInfoARM.html>
4509#[repr(C)]
4510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4511pub struct DataGraphPipelineDispatchInfoARM {
4512    pub s_type: StructureType,
4513    pub next: *mut c_void,
4514    pub flags: DataGraphPipelineDispatchFlagsARM,
4515}
4516
4517impl Default for DataGraphPipelineDispatchInfoARM {
4518    #[inline]
4519    fn default() -> Self {
4520        Self {
4521            s_type: StructureType::DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM,
4522            next: ptr::null_mut(),
4523            flags: DataGraphPipelineDispatchFlagsARM::default(),
4524        }
4525    }
4526}
4527
4528unsafe impl Send for DataGraphPipelineDispatchInfoARM {}
4529unsafe impl Sync for DataGraphPipelineDispatchInfoARM {}
4530
4531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineIdentifierCreateInfoARM.html>
4532#[repr(C)]
4533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4534pub struct DataGraphPipelineIdentifierCreateInfoARM {
4535    pub s_type: StructureType,
4536    pub next: *const c_void,
4537    pub identifier_size: u32,
4538    pub identifier: *const u8,
4539}
4540
4541impl Default for DataGraphPipelineIdentifierCreateInfoARM {
4542    #[inline]
4543    fn default() -> Self {
4544        Self {
4545            s_type: StructureType::DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM,
4546            next: ptr::null(),
4547            identifier_size: u32::default(),
4548            identifier: ptr::null(),
4549        }
4550    }
4551}
4552
4553unsafe impl Send for DataGraphPipelineIdentifierCreateInfoARM {}
4554unsafe impl Sync for DataGraphPipelineIdentifierCreateInfoARM {}
4555
4556/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineInfoARM.html>
4557#[repr(C)]
4558#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4559pub struct DataGraphPipelineInfoARM {
4560    pub s_type: StructureType,
4561    pub next: *const c_void,
4562    pub data_graph_pipeline: Pipeline,
4563}
4564
4565impl Default for DataGraphPipelineInfoARM {
4566    #[inline]
4567    fn default() -> Self {
4568        Self {
4569            s_type: StructureType::DATA_GRAPH_PIPELINE_INFO_ARM,
4570            next: ptr::null(),
4571            data_graph_pipeline: Pipeline::default(),
4572        }
4573    }
4574}
4575
4576unsafe impl Send for DataGraphPipelineInfoARM {}
4577unsafe impl Sync for DataGraphPipelineInfoARM {}
4578
4579/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyQueryResultARM.html>
4580#[repr(C)]
4581#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4582pub struct DataGraphPipelinePropertyQueryResultARM {
4583    pub s_type: StructureType,
4584    pub next: *mut c_void,
4585    pub property: DataGraphPipelinePropertyARM,
4586    pub is_text: Bool32,
4587    pub data_size: usize,
4588    pub data: *mut c_void,
4589}
4590
4591impl Default for DataGraphPipelinePropertyQueryResultARM {
4592    #[inline]
4593    fn default() -> Self {
4594        Self {
4595            s_type: StructureType::DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM,
4596            next: ptr::null_mut(),
4597            property: DataGraphPipelinePropertyARM::default(),
4598            is_text: Bool32::default(),
4599            data_size: usize::default(),
4600            data: ptr::null_mut(),
4601        }
4602    }
4603}
4604
4605unsafe impl Send for DataGraphPipelinePropertyQueryResultARM {}
4606unsafe impl Sync for DataGraphPipelinePropertyQueryResultARM {}
4607
4608/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineResourceInfoARM.html>
4609#[repr(C)]
4610#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4611pub struct DataGraphPipelineResourceInfoARM {
4612    pub s_type: StructureType,
4613    pub next: *const c_void,
4614    pub descriptor_set: u32,
4615    pub binding: u32,
4616    pub array_element: u32,
4617}
4618
4619impl Default for DataGraphPipelineResourceInfoARM {
4620    #[inline]
4621    fn default() -> Self {
4622        Self {
4623            s_type: StructureType::DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM,
4624            next: ptr::null(),
4625            descriptor_set: u32::default(),
4626            binding: u32::default(),
4627            array_element: u32::default(),
4628        }
4629    }
4630}
4631
4632unsafe impl Send for DataGraphPipelineResourceInfoARM {}
4633unsafe impl Sync for DataGraphPipelineResourceInfoARM {}
4634
4635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementARM.html>
4636#[repr(C)]
4637#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4638pub struct DataGraphPipelineSessionBindPointRequirementARM {
4639    pub s_type: StructureType,
4640    pub next: *mut c_void,
4641    pub bind_point: DataGraphPipelineSessionBindPointARM,
4642    pub bind_point_type: DataGraphPipelineSessionBindPointTypeARM,
4643    pub num_objects: u32,
4644}
4645
4646impl Default for DataGraphPipelineSessionBindPointRequirementARM {
4647    #[inline]
4648    fn default() -> Self {
4649        Self {
4650            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM,
4651            next: ptr::null_mut(),
4652            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4653            bind_point_type: DataGraphPipelineSessionBindPointTypeARM::default(),
4654            num_objects: u32::default(),
4655        }
4656    }
4657}
4658
4659unsafe impl Send for DataGraphPipelineSessionBindPointRequirementARM {}
4660unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementARM {}
4661
4662/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementsInfoARM.html>
4663#[repr(C)]
4664#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4665pub struct DataGraphPipelineSessionBindPointRequirementsInfoARM {
4666    pub s_type: StructureType,
4667    pub next: *const c_void,
4668    pub session: DataGraphPipelineSessionARM,
4669}
4670
4671impl Default for DataGraphPipelineSessionBindPointRequirementsInfoARM {
4672    #[inline]
4673    fn default() -> Self {
4674        Self {
4675            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM,
4676            next: ptr::null(),
4677            session: DataGraphPipelineSessionARM::default(),
4678        }
4679    }
4680}
4681
4682unsafe impl Send for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4683unsafe impl Sync for DataGraphPipelineSessionBindPointRequirementsInfoARM {}
4684
4685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateInfoARM.html>
4686#[repr(C)]
4687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4688pub struct DataGraphPipelineSessionCreateInfoARM {
4689    pub s_type: StructureType,
4690    pub next: *const c_void,
4691    pub flags: DataGraphPipelineSessionCreateFlagsARM,
4692    pub data_graph_pipeline: Pipeline,
4693}
4694
4695impl Default for DataGraphPipelineSessionCreateInfoARM {
4696    #[inline]
4697    fn default() -> Self {
4698        Self {
4699            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM,
4700            next: ptr::null(),
4701            flags: DataGraphPipelineSessionCreateFlagsARM::default(),
4702            data_graph_pipeline: Pipeline::default(),
4703        }
4704    }
4705}
4706
4707unsafe impl Send for DataGraphPipelineSessionCreateInfoARM {}
4708unsafe impl Sync for DataGraphPipelineSessionCreateInfoARM {}
4709
4710/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionMemoryRequirementsInfoARM.html>
4711#[repr(C)]
4712#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4713pub struct DataGraphPipelineSessionMemoryRequirementsInfoARM {
4714    pub s_type: StructureType,
4715    pub next: *const c_void,
4716    pub session: DataGraphPipelineSessionARM,
4717    pub bind_point: DataGraphPipelineSessionBindPointARM,
4718    pub object_index: u32,
4719}
4720
4721impl Default for DataGraphPipelineSessionMemoryRequirementsInfoARM {
4722    #[inline]
4723    fn default() -> Self {
4724        Self {
4725            s_type: StructureType::DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM,
4726            next: ptr::null(),
4727            session: DataGraphPipelineSessionARM::default(),
4728            bind_point: DataGraphPipelineSessionBindPointARM::default(),
4729            object_index: u32::default(),
4730        }
4731    }
4732}
4733
4734unsafe impl Send for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4735unsafe impl Sync for DataGraphPipelineSessionMemoryRequirementsInfoARM {}
4736
4737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphPipelineShaderModuleCreateInfoARM.html>
4738#[repr(C)]
4739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4740pub struct DataGraphPipelineShaderModuleCreateInfoARM {
4741    pub s_type: StructureType,
4742    pub next: *const c_void,
4743    pub module: ShaderModule,
4744    pub name: *const c_char,
4745    pub specialization_info: *const SpecializationInfo,
4746    pub constant_count: u32,
4747    pub constants: *const DataGraphPipelineConstantARM,
4748}
4749
4750impl Default for DataGraphPipelineShaderModuleCreateInfoARM {
4751    #[inline]
4752    fn default() -> Self {
4753        Self {
4754            s_type: StructureType::DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM,
4755            next: ptr::null(),
4756            module: ShaderModule::default(),
4757            name: ptr::null(),
4758            specialization_info: ptr::null(),
4759            constant_count: u32::default(),
4760            constants: ptr::null(),
4761        }
4762    }
4763}
4764
4765unsafe impl Send for DataGraphPipelineShaderModuleCreateInfoARM {}
4766unsafe impl Sync for DataGraphPipelineShaderModuleCreateInfoARM {}
4767
4768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDataGraphProcessingEngineCreateInfoARM.html>
4769#[repr(C)]
4770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4771pub struct DataGraphProcessingEngineCreateInfoARM {
4772    pub s_type: StructureType,
4773    pub next: *const c_void,
4774    pub processing_engine_count: u32,
4775    pub processing_engines: *mut PhysicalDeviceDataGraphProcessingEngineARM,
4776}
4777
4778impl Default for DataGraphProcessingEngineCreateInfoARM {
4779    #[inline]
4780    fn default() -> Self {
4781        Self {
4782            s_type: StructureType::DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM,
4783            next: ptr::null(),
4784            processing_engine_count: u32::default(),
4785            processing_engines: ptr::null_mut(),
4786        }
4787    }
4788}
4789
4790unsafe impl Send for DataGraphProcessingEngineCreateInfoARM {}
4791unsafe impl Sync for DataGraphProcessingEngineCreateInfoARM {}
4792
4793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html>
4794#[repr(C)]
4795#[derive(Copy, Clone, Debug, PartialEq)]
4796pub struct DebugMarkerMarkerInfoEXT {
4797    pub s_type: StructureType,
4798    pub next: *const c_void,
4799    pub marker_name: *const c_char,
4800    pub color: [f32; 4],
4801}
4802
4803impl Default for DebugMarkerMarkerInfoEXT {
4804    #[inline]
4805    fn default() -> Self {
4806        Self {
4807            s_type: StructureType::DEBUG_MARKER_MARKER_INFO_EXT,
4808            next: ptr::null(),
4809            marker_name: ptr::null(),
4810            color: [f32::default(); 4],
4811        }
4812    }
4813}
4814
4815unsafe impl Send for DebugMarkerMarkerInfoEXT {}
4816unsafe impl Sync for DebugMarkerMarkerInfoEXT {}
4817
4818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html>
4819#[repr(C)]
4820#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4821pub struct DebugMarkerObjectNameInfoEXT {
4822    pub s_type: StructureType,
4823    pub next: *const c_void,
4824    pub object_type: DebugReportObjectTypeEXT,
4825    pub object: u64,
4826    pub object_name: *const c_char,
4827}
4828
4829impl Default for DebugMarkerObjectNameInfoEXT {
4830    #[inline]
4831    fn default() -> Self {
4832        Self {
4833            s_type: StructureType::DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
4834            next: ptr::null(),
4835            object_type: DebugReportObjectTypeEXT::default(),
4836            object: u64::default(),
4837            object_name: ptr::null(),
4838        }
4839    }
4840}
4841
4842unsafe impl Send for DebugMarkerObjectNameInfoEXT {}
4843unsafe impl Sync for DebugMarkerObjectNameInfoEXT {}
4844
4845/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html>
4846#[repr(C)]
4847#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4848pub struct DebugMarkerObjectTagInfoEXT {
4849    pub s_type: StructureType,
4850    pub next: *const c_void,
4851    pub object_type: DebugReportObjectTypeEXT,
4852    pub object: u64,
4853    pub tag_name: u64,
4854    pub tag_size: usize,
4855    pub tag: *const c_void,
4856}
4857
4858impl Default for DebugMarkerObjectTagInfoEXT {
4859    #[inline]
4860    fn default() -> Self {
4861        Self {
4862            s_type: StructureType::DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
4863            next: ptr::null(),
4864            object_type: DebugReportObjectTypeEXT::default(),
4865            object: u64::default(),
4866            tag_name: u64::default(),
4867            tag_size: usize::default(),
4868            tag: ptr::null(),
4869        }
4870    }
4871}
4872
4873unsafe impl Send for DebugMarkerObjectTagInfoEXT {}
4874unsafe impl Sync for DebugMarkerObjectTagInfoEXT {}
4875
4876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html>
4877#[repr(C)]
4878#[derive(Copy, Clone)]
4879pub struct DebugReportCallbackCreateInfoEXT {
4880    pub s_type: StructureType,
4881    pub next: *const c_void,
4882    pub flags: DebugReportFlagsEXT,
4883    pub callback: PFN_vkDebugReportCallbackEXT,
4884    pub user_data: *mut c_void,
4885}
4886
4887impl fmt::Debug for DebugReportCallbackCreateInfoEXT {
4888    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4889        f.debug_struct("DebugReportCallbackCreateInfoEXT")
4890            .field("s_type", &self.s_type)
4891            .field("next", &self.next)
4892            .field("flags", &self.flags)
4893            .field("callback", &(self.callback.map(|f| f as *const u8)))
4894            .field("user_data", &self.user_data)
4895            .finish()
4896    }
4897}
4898
4899impl Default for DebugReportCallbackCreateInfoEXT {
4900    #[inline]
4901    fn default() -> Self {
4902        Self {
4903            s_type: StructureType::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
4904            next: ptr::null(),
4905            flags: DebugReportFlagsEXT::default(),
4906            callback: PFN_vkDebugReportCallbackEXT::default(),
4907            user_data: ptr::null_mut(),
4908        }
4909    }
4910}
4911
4912unsafe impl Send for DebugReportCallbackCreateInfoEXT {}
4913unsafe impl Sync for DebugReportCallbackCreateInfoEXT {}
4914
4915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html>
4916#[repr(C)]
4917#[derive(Copy, Clone, Debug, PartialEq)]
4918pub struct DebugUtilsLabelEXT {
4919    pub s_type: StructureType,
4920    pub next: *const c_void,
4921    pub label_name: *const c_char,
4922    pub color: [f32; 4],
4923}
4924
4925impl Default for DebugUtilsLabelEXT {
4926    #[inline]
4927    fn default() -> Self {
4928        Self {
4929            s_type: StructureType::DEBUG_UTILS_LABEL_EXT,
4930            next: ptr::null(),
4931            label_name: ptr::null(),
4932            color: [f32::default(); 4],
4933        }
4934    }
4935}
4936
4937unsafe impl Send for DebugUtilsLabelEXT {}
4938unsafe impl Sync for DebugUtilsLabelEXT {}
4939
4940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html>
4941#[repr(C)]
4942#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
4943pub struct DebugUtilsMessengerCallbackDataEXT {
4944    pub s_type: StructureType,
4945    pub next: *const c_void,
4946    pub flags: DebugUtilsMessengerCallbackDataFlagsEXT,
4947    pub message_id_name: *const c_char,
4948    pub message_id_number: i32,
4949    pub message: *const c_char,
4950    pub queue_label_count: u32,
4951    pub queue_labels: *const DebugUtilsLabelEXT,
4952    pub cmd_buf_label_count: u32,
4953    pub cmd_buf_labels: *const DebugUtilsLabelEXT,
4954    pub object_count: u32,
4955    pub objects: *const DebugUtilsObjectNameInfoEXT,
4956}
4957
4958impl Default for DebugUtilsMessengerCallbackDataEXT {
4959    #[inline]
4960    fn default() -> Self {
4961        Self {
4962            s_type: StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
4963            next: ptr::null(),
4964            flags: DebugUtilsMessengerCallbackDataFlagsEXT::default(),
4965            message_id_name: ptr::null(),
4966            message_id_number: i32::default(),
4967            message: ptr::null(),
4968            queue_label_count: u32::default(),
4969            queue_labels: ptr::null(),
4970            cmd_buf_label_count: u32::default(),
4971            cmd_buf_labels: ptr::null(),
4972            object_count: u32::default(),
4973            objects: ptr::null(),
4974        }
4975    }
4976}
4977
4978unsafe impl Send for DebugUtilsMessengerCallbackDataEXT {}
4979unsafe impl Sync for DebugUtilsMessengerCallbackDataEXT {}
4980
4981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html>
4982#[repr(C)]
4983#[derive(Copy, Clone)]
4984pub struct DebugUtilsMessengerCreateInfoEXT {
4985    pub s_type: StructureType,
4986    pub next: *const c_void,
4987    pub flags: DebugUtilsMessengerCreateFlagsEXT,
4988    pub message_severity: DebugUtilsMessageSeverityFlagsEXT,
4989    pub message_type: DebugUtilsMessageTypeFlagsEXT,
4990    pub user_callback: PFN_vkDebugUtilsMessengerCallbackEXT,
4991    pub user_data: *mut c_void,
4992}
4993
4994impl fmt::Debug for DebugUtilsMessengerCreateInfoEXT {
4995    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4996        f.debug_struct("DebugUtilsMessengerCreateInfoEXT")
4997            .field("s_type", &self.s_type)
4998            .field("next", &self.next)
4999            .field("flags", &self.flags)
5000            .field("message_severity", &self.message_severity)
5001            .field("message_type", &self.message_type)
5002            .field(
5003                "user_callback",
5004                &(self.user_callback.map(|f| f as *const u8)),
5005            )
5006            .field("user_data", &self.user_data)
5007            .finish()
5008    }
5009}
5010
5011impl Default for DebugUtilsMessengerCreateInfoEXT {
5012    #[inline]
5013    fn default() -> Self {
5014        Self {
5015            s_type: StructureType::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
5016            next: ptr::null(),
5017            flags: DebugUtilsMessengerCreateFlagsEXT::default(),
5018            message_severity: DebugUtilsMessageSeverityFlagsEXT::default(),
5019            message_type: DebugUtilsMessageTypeFlagsEXT::default(),
5020            user_callback: PFN_vkDebugUtilsMessengerCallbackEXT::default(),
5021            user_data: ptr::null_mut(),
5022        }
5023    }
5024}
5025
5026unsafe impl Send for DebugUtilsMessengerCreateInfoEXT {}
5027unsafe impl Sync for DebugUtilsMessengerCreateInfoEXT {}
5028
5029/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html>
5030#[repr(C)]
5031#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5032pub struct DebugUtilsObjectNameInfoEXT {
5033    pub s_type: StructureType,
5034    pub next: *const c_void,
5035    pub object_type: ObjectType,
5036    pub object_handle: u64,
5037    pub object_name: *const c_char,
5038}
5039
5040impl Default for DebugUtilsObjectNameInfoEXT {
5041    #[inline]
5042    fn default() -> Self {
5043        Self {
5044            s_type: StructureType::DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
5045            next: ptr::null(),
5046            object_type: ObjectType::default(),
5047            object_handle: u64::default(),
5048            object_name: ptr::null(),
5049        }
5050    }
5051}
5052
5053unsafe impl Send for DebugUtilsObjectNameInfoEXT {}
5054unsafe impl Sync for DebugUtilsObjectNameInfoEXT {}
5055
5056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html>
5057#[repr(C)]
5058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5059pub struct DebugUtilsObjectTagInfoEXT {
5060    pub s_type: StructureType,
5061    pub next: *const c_void,
5062    pub object_type: ObjectType,
5063    pub object_handle: u64,
5064    pub tag_name: u64,
5065    pub tag_size: usize,
5066    pub tag: *const c_void,
5067}
5068
5069impl Default for DebugUtilsObjectTagInfoEXT {
5070    #[inline]
5071    fn default() -> Self {
5072        Self {
5073            s_type: StructureType::DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
5074            next: ptr::null(),
5075            object_type: ObjectType::default(),
5076            object_handle: u64::default(),
5077            tag_name: u64::default(),
5078            tag_size: usize::default(),
5079            tag: ptr::null(),
5080        }
5081    }
5082}
5083
5084unsafe impl Send for DebugUtilsObjectTagInfoEXT {}
5085unsafe impl Sync for DebugUtilsObjectTagInfoEXT {}
5086
5087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryInfoEXT.html>
5088#[repr(C)]
5089#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5090pub struct DecompressMemoryInfoEXT {
5091    pub s_type: StructureType,
5092    pub next: *const c_void,
5093    pub decompression_method: MemoryDecompressionMethodFlagsEXT,
5094    pub region_count: u32,
5095    pub regions: *const DecompressMemoryRegionEXT,
5096}
5097
5098impl Default for DecompressMemoryInfoEXT {
5099    #[inline]
5100    fn default() -> Self {
5101        Self {
5102            s_type: StructureType::DECOMPRESS_MEMORY_INFO_EXT,
5103            next: ptr::null(),
5104            decompression_method: MemoryDecompressionMethodFlagsEXT::default(),
5105            region_count: u32::default(),
5106            regions: ptr::null(),
5107        }
5108    }
5109}
5110
5111unsafe impl Send for DecompressMemoryInfoEXT {}
5112unsafe impl Sync for DecompressMemoryInfoEXT {}
5113
5114/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionEXT.html>
5115#[repr(C)]
5116#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5117pub struct DecompressMemoryRegionEXT {
5118    pub src_address: DeviceAddress,
5119    pub dst_address: DeviceAddress,
5120    pub compressed_size: DeviceSize,
5121    pub decompressed_size: DeviceSize,
5122}
5123
5124/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html>
5125#[repr(C)]
5126#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5127pub struct DecompressMemoryRegionNV {
5128    pub src_address: DeviceAddress,
5129    pub dst_address: DeviceAddress,
5130    pub compressed_size: DeviceSize,
5131    pub decompressed_size: DeviceSize,
5132    pub decompression_method: MemoryDecompressionMethodFlagsNV,
5133}
5134
5135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html>
5136#[repr(C)]
5137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5138pub struct DedicatedAllocationBufferCreateInfoNV {
5139    pub s_type: StructureType,
5140    pub next: *const c_void,
5141    pub dedicated_allocation: Bool32,
5142}
5143
5144impl Default for DedicatedAllocationBufferCreateInfoNV {
5145    #[inline]
5146    fn default() -> Self {
5147        Self {
5148            s_type: StructureType::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
5149            next: ptr::null(),
5150            dedicated_allocation: Bool32::default(),
5151        }
5152    }
5153}
5154
5155unsafe impl Send for DedicatedAllocationBufferCreateInfoNV {}
5156unsafe impl Sync for DedicatedAllocationBufferCreateInfoNV {}
5157
5158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html>
5159#[repr(C)]
5160#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5161pub struct DedicatedAllocationImageCreateInfoNV {
5162    pub s_type: StructureType,
5163    pub next: *const c_void,
5164    pub dedicated_allocation: Bool32,
5165}
5166
5167impl Default for DedicatedAllocationImageCreateInfoNV {
5168    #[inline]
5169    fn default() -> Self {
5170        Self {
5171            s_type: StructureType::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
5172            next: ptr::null(),
5173            dedicated_allocation: Bool32::default(),
5174        }
5175    }
5176}
5177
5178unsafe impl Send for DedicatedAllocationImageCreateInfoNV {}
5179unsafe impl Sync for DedicatedAllocationImageCreateInfoNV {}
5180
5181/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html>
5182#[repr(C)]
5183#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5184pub struct DedicatedAllocationMemoryAllocateInfoNV {
5185    pub s_type: StructureType,
5186    pub next: *const c_void,
5187    pub image: Image,
5188    pub buffer: Buffer,
5189}
5190
5191impl Default for DedicatedAllocationMemoryAllocateInfoNV {
5192    #[inline]
5193    fn default() -> Self {
5194        Self {
5195            s_type: StructureType::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
5196            next: ptr::null(),
5197            image: Image::default(),
5198            buffer: Buffer::default(),
5199        }
5200    }
5201}
5202
5203unsafe impl Send for DedicatedAllocationMemoryAllocateInfoNV {}
5204unsafe impl Sync for DedicatedAllocationMemoryAllocateInfoNV {}
5205
5206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfo.html>
5207#[repr(C)]
5208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5209pub struct DependencyInfo {
5210    pub s_type: StructureType,
5211    pub next: *const c_void,
5212    pub dependency_flags: DependencyFlags,
5213    pub memory_barrier_count: u32,
5214    pub memory_barriers: *const MemoryBarrier2,
5215    pub buffer_memory_barrier_count: u32,
5216    pub buffer_memory_barriers: *const BufferMemoryBarrier2,
5217    pub image_memory_barrier_count: u32,
5218    pub image_memory_barriers: *const ImageMemoryBarrier2,
5219}
5220
5221impl Default for DependencyInfo {
5222    #[inline]
5223    fn default() -> Self {
5224        Self {
5225            s_type: StructureType::DEPENDENCY_INFO,
5226            next: ptr::null(),
5227            dependency_flags: DependencyFlags::default(),
5228            memory_barrier_count: u32::default(),
5229            memory_barriers: ptr::null(),
5230            buffer_memory_barrier_count: u32::default(),
5231            buffer_memory_barriers: ptr::null(),
5232            image_memory_barrier_count: u32::default(),
5233            image_memory_barriers: ptr::null(),
5234        }
5235    }
5236}
5237
5238unsafe impl Send for DependencyInfo {}
5239unsafe impl Sync for DependencyInfo {}
5240
5241/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html>
5242#[repr(C)]
5243#[derive(Copy, Clone, Debug, PartialEq)]
5244pub struct DepthBiasInfoEXT {
5245    pub s_type: StructureType,
5246    pub next: *const c_void,
5247    pub depth_bias_constant_factor: f32,
5248    pub depth_bias_clamp: f32,
5249    pub depth_bias_slope_factor: f32,
5250}
5251
5252impl Default for DepthBiasInfoEXT {
5253    #[inline]
5254    fn default() -> Self {
5255        Self {
5256            s_type: StructureType::DEPTH_BIAS_INFO_EXT,
5257            next: ptr::null(),
5258            depth_bias_constant_factor: f32::default(),
5259            depth_bias_clamp: f32::default(),
5260            depth_bias_slope_factor: f32::default(),
5261        }
5262    }
5263}
5264
5265unsafe impl Send for DepthBiasInfoEXT {}
5266unsafe impl Sync for DepthBiasInfoEXT {}
5267
5268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html>
5269#[repr(C)]
5270#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5271pub struct DepthBiasRepresentationInfoEXT {
5272    pub s_type: StructureType,
5273    pub next: *const c_void,
5274    pub depth_bias_representation: DepthBiasRepresentationEXT,
5275    pub depth_bias_exact: Bool32,
5276}
5277
5278impl Default for DepthBiasRepresentationInfoEXT {
5279    #[inline]
5280    fn default() -> Self {
5281        Self {
5282            s_type: StructureType::DEPTH_BIAS_REPRESENTATION_INFO_EXT,
5283            next: ptr::null(),
5284            depth_bias_representation: DepthBiasRepresentationEXT::default(),
5285            depth_bias_exact: Bool32::default(),
5286        }
5287    }
5288}
5289
5290unsafe impl Send for DepthBiasRepresentationInfoEXT {}
5291unsafe impl Sync for DepthBiasRepresentationInfoEXT {}
5292
5293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html>
5294#[repr(C)]
5295#[derive(Copy, Clone, Default, Debug, PartialEq)]
5296pub struct DepthClampRangeEXT {
5297    pub min_depth_clamp: f32,
5298    pub max_depth_clamp: f32,
5299}
5300
5301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html>
5302#[repr(C)]
5303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5304pub struct DescriptorAddressInfoEXT {
5305    pub s_type: StructureType,
5306    pub next: *mut c_void,
5307    pub address: DeviceAddress,
5308    pub range: DeviceSize,
5309    pub format: Format,
5310}
5311
5312impl Default for DescriptorAddressInfoEXT {
5313    #[inline]
5314    fn default() -> Self {
5315        Self {
5316            s_type: StructureType::DESCRIPTOR_ADDRESS_INFO_EXT,
5317            next: ptr::null_mut(),
5318            address: DeviceAddress::default(),
5319            range: DeviceSize::default(),
5320            format: Format::default(),
5321        }
5322    }
5323}
5324
5325unsafe impl Send for DescriptorAddressInfoEXT {}
5326unsafe impl Sync for DescriptorAddressInfoEXT {}
5327
5328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html>
5329#[repr(C)]
5330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5331pub struct DescriptorBufferBindingInfoEXT {
5332    pub s_type: StructureType,
5333    pub next: *const c_void,
5334    pub address: DeviceAddress,
5335    pub usage: BufferUsageFlags,
5336}
5337
5338impl Default for DescriptorBufferBindingInfoEXT {
5339    #[inline]
5340    fn default() -> Self {
5341        Self {
5342            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT,
5343            next: ptr::null(),
5344            address: DeviceAddress::default(),
5345            usage: BufferUsageFlags::default(),
5346        }
5347    }
5348}
5349
5350unsafe impl Send for DescriptorBufferBindingInfoEXT {}
5351unsafe impl Sync for DescriptorBufferBindingInfoEXT {}
5352
5353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html>
5354#[repr(C)]
5355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5356pub struct DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5357    pub s_type: StructureType,
5358    pub next: *const c_void,
5359    pub buffer: Buffer,
5360}
5361
5362impl Default for DescriptorBufferBindingPushDescriptorBufferHandleEXT {
5363    #[inline]
5364    fn default() -> Self {
5365        Self {
5366            s_type: StructureType::DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT,
5367            next: ptr::null(),
5368            buffer: Buffer::default(),
5369        }
5370    }
5371}
5372
5373unsafe impl Send for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5374unsafe impl Sync for DescriptorBufferBindingPushDescriptorBufferHandleEXT {}
5375
5376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html>
5377#[repr(C)]
5378#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5379pub struct DescriptorBufferInfo {
5380    pub buffer: Buffer,
5381    pub offset: DeviceSize,
5382    pub range: DeviceSize,
5383}
5384
5385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html>
5386#[repr(C)]
5387#[derive(Copy, Clone, Debug)]
5388pub struct DescriptorGetInfoEXT {
5389    pub s_type: StructureType,
5390    pub next: *const c_void,
5391    pub type_: DescriptorType,
5392    pub data: DescriptorDataEXT,
5393}
5394
5395impl Default for DescriptorGetInfoEXT {
5396    #[inline]
5397    fn default() -> Self {
5398        Self {
5399            s_type: StructureType::DESCRIPTOR_GET_INFO_EXT,
5400            next: ptr::null(),
5401            type_: DescriptorType::default(),
5402            data: DescriptorDataEXT::default(),
5403        }
5404    }
5405}
5406
5407unsafe impl Send for DescriptorGetInfoEXT {}
5408unsafe impl Sync for DescriptorGetInfoEXT {}
5409
5410/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorGetTensorInfoARM.html>
5411#[repr(C)]
5412#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5413pub struct DescriptorGetTensorInfoARM {
5414    pub s_type: StructureType,
5415    pub next: *const c_void,
5416    pub tensor_view: TensorViewARM,
5417}
5418
5419impl Default for DescriptorGetTensorInfoARM {
5420    #[inline]
5421    fn default() -> Self {
5422        Self {
5423            s_type: StructureType::DESCRIPTOR_GET_TENSOR_INFO_ARM,
5424            next: ptr::null(),
5425            tensor_view: TensorViewARM::default(),
5426        }
5427    }
5428}
5429
5430unsafe impl Send for DescriptorGetTensorInfoARM {}
5431unsafe impl Sync for DescriptorGetTensorInfoARM {}
5432
5433/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html>
5434#[repr(C)]
5435#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5436pub struct DescriptorImageInfo {
5437    pub sampler: Sampler,
5438    pub image_view: ImageView,
5439    pub image_layout: ImageLayout,
5440}
5441
5442/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorMappingSourceConstantOffsetEXT.html>
5443#[repr(C)]
5444#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5445pub struct DescriptorMappingSourceConstantOffsetEXT {
5446    pub heap_offset: u32,
5447    pub heap_array_stride: u32,
5448    pub embedded_sampler: *const SamplerCreateInfo,
5449    pub sampler_heap_offset: u32,
5450    pub sampler_heap_array_stride: u32,
5451}
5452
5453impl Default for DescriptorMappingSourceConstantOffsetEXT {
5454    #[inline]
5455    fn default() -> Self {
5456        Self {
5457            heap_offset: u32::default(),
5458            heap_array_stride: u32::default(),
5459            embedded_sampler: ptr::null(),
5460            sampler_heap_offset: u32::default(),
5461            sampler_heap_array_stride: u32::default(),
5462        }
5463    }
5464}
5465
5466unsafe impl Send for DescriptorMappingSourceConstantOffsetEXT {}
5467unsafe impl Sync for DescriptorMappingSourceConstantOffsetEXT {}
5468
5469/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorMappingSourceHeapDataEXT.html>
5470#[repr(C)]
5471#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5472pub struct DescriptorMappingSourceHeapDataEXT {
5473    pub heap_offset: u32,
5474    pub push_offset: u32,
5475}
5476
5477/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorMappingSourceIndirectAddressEXT.html>
5478#[repr(C)]
5479#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5480pub struct DescriptorMappingSourceIndirectAddressEXT {
5481    pub push_offset: u32,
5482    pub address_offset: u32,
5483}
5484
5485/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorMappingSourceIndirectIndexArrayEXT.html>
5486#[repr(C)]
5487#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5488pub struct DescriptorMappingSourceIndirectIndexArrayEXT {
5489    pub heap_offset: u32,
5490    pub push_offset: u32,
5491    pub address_offset: u32,
5492    pub heap_index_stride: u32,
5493    pub embedded_sampler: *const SamplerCreateInfo,
5494    pub use_combined_image_sampler_index: Bool32,
5495    pub sampler_heap_offset: u32,
5496    pub sampler_push_offset: u32,
5497    pub sampler_address_offset: u32,
5498    pub sampler_heap_index_stride: u32,
5499}
5500
5501impl Default for DescriptorMappingSourceIndirectIndexArrayEXT {
5502    #[inline]
5503    fn default() -> Self {
5504        Self {
5505            heap_offset: u32::default(),
5506            push_offset: u32::default(),
5507            address_offset: u32::default(),
5508            heap_index_stride: u32::default(),
5509            embedded_sampler: ptr::null(),
5510            use_combined_image_sampler_index: Bool32::default(),
5511            sampler_heap_offset: u32::default(),
5512            sampler_push_offset: u32::default(),
5513            sampler_address_offset: u32::default(),
5514            sampler_heap_index_stride: u32::default(),
5515        }
5516    }
5517}
5518
5519unsafe impl Send for DescriptorMappingSourceIndirectIndexArrayEXT {}
5520unsafe impl Sync for DescriptorMappingSourceIndirectIndexArrayEXT {}
5521
5522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorMappingSourceIndirectIndexEXT.html>
5523#[repr(C)]
5524#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5525pub struct DescriptorMappingSourceIndirectIndexEXT {
5526    pub heap_offset: u32,
5527    pub push_offset: u32,
5528    pub address_offset: u32,
5529    pub heap_index_stride: u32,
5530    pub heap_array_stride: u32,
5531    pub embedded_sampler: *const SamplerCreateInfo,
5532    pub use_combined_image_sampler_index: Bool32,
5533    pub sampler_heap_offset: u32,
5534    pub sampler_push_offset: u32,
5535    pub sampler_address_offset: u32,
5536    pub sampler_heap_index_stride: u32,
5537    pub sampler_heap_array_stride: u32,
5538}
5539
5540impl Default for DescriptorMappingSourceIndirectIndexEXT {
5541    #[inline]
5542    fn default() -> Self {
5543        Self {
5544            heap_offset: u32::default(),
5545            push_offset: u32::default(),
5546            address_offset: u32::default(),
5547            heap_index_stride: u32::default(),
5548            heap_array_stride: u32::default(),
5549            embedded_sampler: ptr::null(),
5550            use_combined_image_sampler_index: Bool32::default(),
5551            sampler_heap_offset: u32::default(),
5552            sampler_push_offset: u32::default(),
5553            sampler_address_offset: u32::default(),
5554            sampler_heap_index_stride: u32::default(),
5555            sampler_heap_array_stride: u32::default(),
5556        }
5557    }
5558}
5559
5560unsafe impl Send for DescriptorMappingSourceIndirectIndexEXT {}
5561unsafe impl Sync for DescriptorMappingSourceIndirectIndexEXT {}
5562
5563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorMappingSourcePushIndexEXT.html>
5564#[repr(C)]
5565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5566pub struct DescriptorMappingSourcePushIndexEXT {
5567    pub heap_offset: u32,
5568    pub push_offset: u32,
5569    pub heap_index_stride: u32,
5570    pub heap_array_stride: u32,
5571    pub embedded_sampler: *const SamplerCreateInfo,
5572    pub use_combined_image_sampler_index: Bool32,
5573    pub sampler_heap_offset: u32,
5574    pub sampler_push_offset: u32,
5575    pub sampler_heap_index_stride: u32,
5576    pub sampler_heap_array_stride: u32,
5577}
5578
5579impl Default for DescriptorMappingSourcePushIndexEXT {
5580    #[inline]
5581    fn default() -> Self {
5582        Self {
5583            heap_offset: u32::default(),
5584            push_offset: u32::default(),
5585            heap_index_stride: u32::default(),
5586            heap_array_stride: u32::default(),
5587            embedded_sampler: ptr::null(),
5588            use_combined_image_sampler_index: Bool32::default(),
5589            sampler_heap_offset: u32::default(),
5590            sampler_push_offset: u32::default(),
5591            sampler_heap_index_stride: u32::default(),
5592            sampler_heap_array_stride: u32::default(),
5593        }
5594    }
5595}
5596
5597unsafe impl Send for DescriptorMappingSourcePushIndexEXT {}
5598unsafe impl Sync for DescriptorMappingSourcePushIndexEXT {}
5599
5600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorMappingSourceShaderRecordIndexEXT.html>
5601#[repr(C)]
5602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5603pub struct DescriptorMappingSourceShaderRecordIndexEXT {
5604    pub heap_offset: u32,
5605    pub shader_record_offset: u32,
5606    pub heap_index_stride: u32,
5607    pub heap_array_stride: u32,
5608    pub embedded_sampler: *const SamplerCreateInfo,
5609    pub use_combined_image_sampler_index: Bool32,
5610    pub sampler_heap_offset: u32,
5611    pub sampler_shader_record_offset: u32,
5612    pub sampler_heap_index_stride: u32,
5613    pub sampler_heap_array_stride: u32,
5614}
5615
5616impl Default for DescriptorMappingSourceShaderRecordIndexEXT {
5617    #[inline]
5618    fn default() -> Self {
5619        Self {
5620            heap_offset: u32::default(),
5621            shader_record_offset: u32::default(),
5622            heap_index_stride: u32::default(),
5623            heap_array_stride: u32::default(),
5624            embedded_sampler: ptr::null(),
5625            use_combined_image_sampler_index: Bool32::default(),
5626            sampler_heap_offset: u32::default(),
5627            sampler_shader_record_offset: u32::default(),
5628            sampler_heap_index_stride: u32::default(),
5629            sampler_heap_array_stride: u32::default(),
5630        }
5631    }
5632}
5633
5634unsafe impl Send for DescriptorMappingSourceShaderRecordIndexEXT {}
5635unsafe impl Sync for DescriptorMappingSourceShaderRecordIndexEXT {}
5636
5637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html>
5638#[repr(C)]
5639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5640pub struct DescriptorPoolCreateInfo {
5641    pub s_type: StructureType,
5642    pub next: *const c_void,
5643    pub flags: DescriptorPoolCreateFlags,
5644    pub max_sets: u32,
5645    pub pool_size_count: u32,
5646    pub pool_sizes: *const DescriptorPoolSize,
5647}
5648
5649impl Default for DescriptorPoolCreateInfo {
5650    #[inline]
5651    fn default() -> Self {
5652        Self {
5653            s_type: StructureType::DESCRIPTOR_POOL_CREATE_INFO,
5654            next: ptr::null(),
5655            flags: DescriptorPoolCreateFlags::default(),
5656            max_sets: u32::default(),
5657            pool_size_count: u32::default(),
5658            pool_sizes: ptr::null(),
5659        }
5660    }
5661}
5662
5663unsafe impl Send for DescriptorPoolCreateInfo {}
5664unsafe impl Sync for DescriptorPoolCreateInfo {}
5665
5666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html>
5667#[repr(C)]
5668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5669pub struct DescriptorPoolInlineUniformBlockCreateInfo {
5670    pub s_type: StructureType,
5671    pub next: *const c_void,
5672    pub max_inline_uniform_block_bindings: u32,
5673}
5674
5675impl Default for DescriptorPoolInlineUniformBlockCreateInfo {
5676    #[inline]
5677    fn default() -> Self {
5678        Self {
5679            s_type: StructureType::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
5680            next: ptr::null(),
5681            max_inline_uniform_block_bindings: u32::default(),
5682        }
5683    }
5684}
5685
5686unsafe impl Send for DescriptorPoolInlineUniformBlockCreateInfo {}
5687unsafe impl Sync for DescriptorPoolInlineUniformBlockCreateInfo {}
5688
5689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html>
5690#[repr(C)]
5691#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5692pub struct DescriptorPoolSize {
5693    pub type_: DescriptorType,
5694    pub descriptor_count: u32,
5695}
5696
5697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html>
5698#[repr(C)]
5699#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5700pub struct DescriptorSetAllocateInfo {
5701    pub s_type: StructureType,
5702    pub next: *const c_void,
5703    pub descriptor_pool: DescriptorPool,
5704    pub descriptor_set_count: u32,
5705    pub set_layouts: *const DescriptorSetLayout,
5706}
5707
5708impl Default for DescriptorSetAllocateInfo {
5709    #[inline]
5710    fn default() -> Self {
5711        Self {
5712            s_type: StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
5713            next: ptr::null(),
5714            descriptor_pool: DescriptorPool::default(),
5715            descriptor_set_count: u32::default(),
5716            set_layouts: ptr::null(),
5717        }
5718    }
5719}
5720
5721unsafe impl Send for DescriptorSetAllocateInfo {}
5722unsafe impl Sync for DescriptorSetAllocateInfo {}
5723
5724/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetAndBindingMappingEXT.html>
5725#[repr(C)]
5726#[derive(Copy, Clone, Debug)]
5727pub struct DescriptorSetAndBindingMappingEXT {
5728    pub s_type: StructureType,
5729    pub next: *const c_void,
5730    pub descriptor_set: u32,
5731    pub first_binding: u32,
5732    pub binding_count: u32,
5733    pub resource_mask: SpirvResourceTypeFlagsEXT,
5734    pub source: DescriptorMappingSourceEXT,
5735    pub source_data: DescriptorMappingSourceDataEXT,
5736}
5737
5738impl Default for DescriptorSetAndBindingMappingEXT {
5739    #[inline]
5740    fn default() -> Self {
5741        Self {
5742            s_type: StructureType::DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,
5743            next: ptr::null(),
5744            descriptor_set: u32::default(),
5745            first_binding: u32::default(),
5746            binding_count: u32::default(),
5747            resource_mask: SpirvResourceTypeFlagsEXT::default(),
5748            source: DescriptorMappingSourceEXT::default(),
5749            source_data: DescriptorMappingSourceDataEXT::default(),
5750        }
5751    }
5752}
5753
5754unsafe impl Send for DescriptorSetAndBindingMappingEXT {}
5755unsafe impl Sync for DescriptorSetAndBindingMappingEXT {}
5756
5757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html>
5758#[repr(C)]
5759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5760pub struct DescriptorSetBindingReferenceVALVE {
5761    pub s_type: StructureType,
5762    pub next: *const c_void,
5763    pub descriptor_set_layout: DescriptorSetLayout,
5764    pub binding: u32,
5765}
5766
5767impl Default for DescriptorSetBindingReferenceVALVE {
5768    #[inline]
5769    fn default() -> Self {
5770        Self {
5771            s_type: StructureType::DESCRIPTOR_SET_BINDING_REFERENCE_VALVE,
5772            next: ptr::null(),
5773            descriptor_set_layout: DescriptorSetLayout::default(),
5774            binding: u32::default(),
5775        }
5776    }
5777}
5778
5779unsafe impl Send for DescriptorSetBindingReferenceVALVE {}
5780unsafe impl Sync for DescriptorSetBindingReferenceVALVE {}
5781
5782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html>
5783#[repr(C)]
5784#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5785pub struct DescriptorSetLayoutBinding {
5786    pub binding: u32,
5787    pub descriptor_type: DescriptorType,
5788    pub descriptor_count: u32,
5789    pub stage_flags: ShaderStageFlags,
5790    pub immutable_samplers: *const Sampler,
5791}
5792
5793impl Default for DescriptorSetLayoutBinding {
5794    #[inline]
5795    fn default() -> Self {
5796        Self {
5797            binding: u32::default(),
5798            descriptor_type: DescriptorType::default(),
5799            descriptor_count: u32::default(),
5800            stage_flags: ShaderStageFlags::default(),
5801            immutable_samplers: ptr::null(),
5802        }
5803    }
5804}
5805
5806unsafe impl Send for DescriptorSetLayoutBinding {}
5807unsafe impl Sync for DescriptorSetLayoutBinding {}
5808
5809/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html>
5810#[repr(C)]
5811#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5812pub struct DescriptorSetLayoutBindingFlagsCreateInfo {
5813    pub s_type: StructureType,
5814    pub next: *const c_void,
5815    pub binding_count: u32,
5816    pub binding_flags: *const DescriptorBindingFlags,
5817}
5818
5819impl Default for DescriptorSetLayoutBindingFlagsCreateInfo {
5820    #[inline]
5821    fn default() -> Self {
5822        Self {
5823            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
5824            next: ptr::null(),
5825            binding_count: u32::default(),
5826            binding_flags: ptr::null(),
5827        }
5828    }
5829}
5830
5831unsafe impl Send for DescriptorSetLayoutBindingFlagsCreateInfo {}
5832unsafe impl Sync for DescriptorSetLayoutBindingFlagsCreateInfo {}
5833
5834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html>
5835#[repr(C)]
5836#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5837pub struct DescriptorSetLayoutCreateInfo {
5838    pub s_type: StructureType,
5839    pub next: *const c_void,
5840    pub flags: DescriptorSetLayoutCreateFlags,
5841    pub binding_count: u32,
5842    pub bindings: *const DescriptorSetLayoutBinding,
5843}
5844
5845impl Default for DescriptorSetLayoutCreateInfo {
5846    #[inline]
5847    fn default() -> Self {
5848        Self {
5849            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
5850            next: ptr::null(),
5851            flags: DescriptorSetLayoutCreateFlags::default(),
5852            binding_count: u32::default(),
5853            bindings: ptr::null(),
5854        }
5855    }
5856}
5857
5858unsafe impl Send for DescriptorSetLayoutCreateInfo {}
5859unsafe impl Sync for DescriptorSetLayoutCreateInfo {}
5860
5861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html>
5862#[repr(C)]
5863#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5864pub struct DescriptorSetLayoutHostMappingInfoVALVE {
5865    pub s_type: StructureType,
5866    pub next: *mut c_void,
5867    pub descriptor_offset: usize,
5868    pub descriptor_size: u32,
5869}
5870
5871impl Default for DescriptorSetLayoutHostMappingInfoVALVE {
5872    #[inline]
5873    fn default() -> Self {
5874        Self {
5875            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
5876            next: ptr::null_mut(),
5877            descriptor_offset: usize::default(),
5878            descriptor_size: u32::default(),
5879        }
5880    }
5881}
5882
5883unsafe impl Send for DescriptorSetLayoutHostMappingInfoVALVE {}
5884unsafe impl Sync for DescriptorSetLayoutHostMappingInfoVALVE {}
5885
5886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html>
5887#[repr(C)]
5888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5889pub struct DescriptorSetLayoutSupport {
5890    pub s_type: StructureType,
5891    pub next: *mut c_void,
5892    pub supported: Bool32,
5893}
5894
5895impl Default for DescriptorSetLayoutSupport {
5896    #[inline]
5897    fn default() -> Self {
5898        Self {
5899            s_type: StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT,
5900            next: ptr::null_mut(),
5901            supported: Bool32::default(),
5902        }
5903    }
5904}
5905
5906unsafe impl Send for DescriptorSetLayoutSupport {}
5907unsafe impl Sync for DescriptorSetLayoutSupport {}
5908
5909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html>
5910#[repr(C)]
5911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5912pub struct DescriptorSetVariableDescriptorCountAllocateInfo {
5913    pub s_type: StructureType,
5914    pub next: *const c_void,
5915    pub descriptor_set_count: u32,
5916    pub descriptor_counts: *const u32,
5917}
5918
5919impl Default for DescriptorSetVariableDescriptorCountAllocateInfo {
5920    #[inline]
5921    fn default() -> Self {
5922        Self {
5923            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
5924            next: ptr::null(),
5925            descriptor_set_count: u32::default(),
5926            descriptor_counts: ptr::null(),
5927        }
5928    }
5929}
5930
5931unsafe impl Send for DescriptorSetVariableDescriptorCountAllocateInfo {}
5932unsafe impl Sync for DescriptorSetVariableDescriptorCountAllocateInfo {}
5933
5934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html>
5935#[repr(C)]
5936#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5937pub struct DescriptorSetVariableDescriptorCountLayoutSupport {
5938    pub s_type: StructureType,
5939    pub next: *mut c_void,
5940    pub max_variable_descriptor_count: u32,
5941}
5942
5943impl Default for DescriptorSetVariableDescriptorCountLayoutSupport {
5944    #[inline]
5945    fn default() -> Self {
5946        Self {
5947            s_type: StructureType::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
5948            next: ptr::null_mut(),
5949            max_variable_descriptor_count: u32::default(),
5950        }
5951    }
5952}
5953
5954unsafe impl Send for DescriptorSetVariableDescriptorCountLayoutSupport {}
5955unsafe impl Sync for DescriptorSetVariableDescriptorCountLayoutSupport {}
5956
5957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html>
5958#[repr(C)]
5959#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5960pub struct DescriptorUpdateTemplateCreateInfo {
5961    pub s_type: StructureType,
5962    pub next: *const c_void,
5963    pub flags: DescriptorUpdateTemplateCreateFlags,
5964    pub descriptor_update_entry_count: u32,
5965    pub descriptor_update_entries: *const DescriptorUpdateTemplateEntry,
5966    pub template_type: DescriptorUpdateTemplateType,
5967    pub descriptor_set_layout: DescriptorSetLayout,
5968    pub pipeline_bind_point: PipelineBindPoint,
5969    pub pipeline_layout: PipelineLayout,
5970    pub set: u32,
5971}
5972
5973impl Default for DescriptorUpdateTemplateCreateInfo {
5974    #[inline]
5975    fn default() -> Self {
5976        Self {
5977            s_type: StructureType::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
5978            next: ptr::null(),
5979            flags: DescriptorUpdateTemplateCreateFlags::default(),
5980            descriptor_update_entry_count: u32::default(),
5981            descriptor_update_entries: ptr::null(),
5982            template_type: DescriptorUpdateTemplateType::default(),
5983            descriptor_set_layout: DescriptorSetLayout::default(),
5984            pipeline_bind_point: PipelineBindPoint::default(),
5985            pipeline_layout: PipelineLayout::default(),
5986            set: u32::default(),
5987        }
5988    }
5989}
5990
5991unsafe impl Send for DescriptorUpdateTemplateCreateInfo {}
5992unsafe impl Sync for DescriptorUpdateTemplateCreateInfo {}
5993
5994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html>
5995#[repr(C)]
5996#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
5997pub struct DescriptorUpdateTemplateEntry {
5998    pub dst_binding: u32,
5999    pub dst_array_element: u32,
6000    pub descriptor_count: u32,
6001    pub descriptor_type: DescriptorType,
6002    pub offset: usize,
6003    pub stride: usize,
6004}
6005
6006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html>
6007#[repr(C)]
6008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6009pub struct DeviceAddressBindingCallbackDataEXT {
6010    pub s_type: StructureType,
6011    pub next: *mut c_void,
6012    pub flags: DeviceAddressBindingFlagsEXT,
6013    pub base_address: DeviceAddress,
6014    pub size: DeviceSize,
6015    pub binding_type: DeviceAddressBindingTypeEXT,
6016}
6017
6018impl Default for DeviceAddressBindingCallbackDataEXT {
6019    #[inline]
6020    fn default() -> Self {
6021        Self {
6022            s_type: StructureType::DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT,
6023            next: ptr::null_mut(),
6024            flags: DeviceAddressBindingFlagsEXT::default(),
6025            base_address: DeviceAddress::default(),
6026            size: DeviceSize::default(),
6027            binding_type: DeviceAddressBindingTypeEXT::default(),
6028        }
6029    }
6030}
6031
6032unsafe impl Send for DeviceAddressBindingCallbackDataEXT {}
6033unsafe impl Sync for DeviceAddressBindingCallbackDataEXT {}
6034
6035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceAddressRangeEXT.html>
6036#[repr(C)]
6037#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6038pub struct DeviceAddressRangeEXT {
6039    pub address: DeviceAddress,
6040    pub size: DeviceSize,
6041}
6042
6043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html>
6044#[repr(C)]
6045#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6046pub struct DeviceBufferMemoryRequirements {
6047    pub s_type: StructureType,
6048    pub next: *const c_void,
6049    pub create_info: *const BufferCreateInfo,
6050}
6051
6052impl Default for DeviceBufferMemoryRequirements {
6053    #[inline]
6054    fn default() -> Self {
6055        Self {
6056            s_type: StructureType::DEVICE_BUFFER_MEMORY_REQUIREMENTS,
6057            next: ptr::null(),
6058            create_info: ptr::null(),
6059        }
6060    }
6061}
6062
6063unsafe impl Send for DeviceBufferMemoryRequirements {}
6064unsafe impl Sync for DeviceBufferMemoryRequirements {}
6065
6066/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html>
6067#[repr(C)]
6068#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6069pub struct DeviceCreateInfo {
6070    pub s_type: StructureType,
6071    pub next: *const c_void,
6072    pub flags: DeviceCreateFlags,
6073    pub queue_create_info_count: u32,
6074    pub queue_create_infos: *const DeviceQueueCreateInfo,
6075    pub enabled_layer_count: u32,
6076    pub enabled_layer_names: *const *const c_char,
6077    pub enabled_extension_count: u32,
6078    pub enabled_extension_names: *const *const c_char,
6079    pub enabled_features: *const PhysicalDeviceFeatures,
6080}
6081
6082impl Default for DeviceCreateInfo {
6083    #[inline]
6084    fn default() -> Self {
6085        Self {
6086            s_type: StructureType::DEVICE_CREATE_INFO,
6087            next: ptr::null(),
6088            flags: DeviceCreateFlags::default(),
6089            queue_create_info_count: u32::default(),
6090            queue_create_infos: ptr::null(),
6091            enabled_layer_count: u32::default(),
6092            enabled_layer_names: ptr::null(),
6093            enabled_extension_count: u32::default(),
6094            enabled_extension_names: ptr::null(),
6095            enabled_features: ptr::null(),
6096        }
6097    }
6098}
6099
6100unsafe impl Send for DeviceCreateInfo {}
6101unsafe impl Sync for DeviceCreateInfo {}
6102
6103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html>
6104#[repr(C)]
6105#[derive(Copy, Clone)]
6106pub struct DeviceDeviceMemoryReportCreateInfoEXT {
6107    pub s_type: StructureType,
6108    pub next: *const c_void,
6109    pub flags: DeviceMemoryReportFlagsEXT,
6110    pub user_callback: PFN_vkDeviceMemoryReportCallbackEXT,
6111    pub user_data: *mut c_void,
6112}
6113
6114impl fmt::Debug for DeviceDeviceMemoryReportCreateInfoEXT {
6115    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6116        f.debug_struct("DeviceDeviceMemoryReportCreateInfoEXT")
6117            .field("s_type", &self.s_type)
6118            .field("next", &self.next)
6119            .field("flags", &self.flags)
6120            .field(
6121                "user_callback",
6122                &(self.user_callback.map(|f| f as *const u8)),
6123            )
6124            .field("user_data", &self.user_data)
6125            .finish()
6126    }
6127}
6128
6129impl Default for DeviceDeviceMemoryReportCreateInfoEXT {
6130    #[inline]
6131    fn default() -> Self {
6132        Self {
6133            s_type: StructureType::DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT,
6134            next: ptr::null(),
6135            flags: DeviceMemoryReportFlagsEXT::default(),
6136            user_callback: PFN_vkDeviceMemoryReportCallbackEXT::default(),
6137            user_data: ptr::null_mut(),
6138        }
6139    }
6140}
6141
6142unsafe impl Send for DeviceDeviceMemoryReportCreateInfoEXT {}
6143unsafe impl Sync for DeviceDeviceMemoryReportCreateInfoEXT {}
6144
6145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html>
6146#[repr(C)]
6147#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6148pub struct DeviceDiagnosticsConfigCreateInfoNV {
6149    pub s_type: StructureType,
6150    pub next: *const c_void,
6151    pub flags: DeviceDiagnosticsConfigFlagsNV,
6152}
6153
6154impl Default for DeviceDiagnosticsConfigCreateInfoNV {
6155    #[inline]
6156    fn default() -> Self {
6157        Self {
6158            s_type: StructureType::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
6159            next: ptr::null(),
6160            flags: DeviceDiagnosticsConfigFlagsNV::default(),
6161        }
6162    }
6163}
6164
6165unsafe impl Send for DeviceDiagnosticsConfigCreateInfoNV {}
6166unsafe impl Sync for DeviceDiagnosticsConfigCreateInfoNV {}
6167
6168/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html>
6169#[repr(C)]
6170#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6171pub struct DeviceEventInfoEXT {
6172    pub s_type: StructureType,
6173    pub next: *const c_void,
6174    pub device_event: DeviceEventTypeEXT,
6175}
6176
6177impl Default for DeviceEventInfoEXT {
6178    #[inline]
6179    fn default() -> Self {
6180        Self {
6181            s_type: StructureType::DEVICE_EVENT_INFO_EXT,
6182            next: ptr::null(),
6183            device_event: DeviceEventTypeEXT::default(),
6184        }
6185    }
6186}
6187
6188unsafe impl Send for DeviceEventInfoEXT {}
6189unsafe impl Sync for DeviceEventInfoEXT {}
6190
6191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoEXT.html>
6192#[repr(C)]
6193#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6194pub struct DeviceFaultAddressInfoEXT {
6195    pub address_type: DeviceFaultAddressTypeEXT,
6196    pub reported_address: DeviceAddress,
6197    pub address_precision: DeviceSize,
6198}
6199
6200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html>
6201#[repr(C)]
6202#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6203pub struct DeviceFaultCountsEXT {
6204    pub s_type: StructureType,
6205    pub next: *mut c_void,
6206    pub address_info_count: u32,
6207    pub vendor_info_count: u32,
6208    pub vendor_binary_size: DeviceSize,
6209}
6210
6211impl Default for DeviceFaultCountsEXT {
6212    #[inline]
6213    fn default() -> Self {
6214        Self {
6215            s_type: StructureType::DEVICE_FAULT_COUNTS_EXT,
6216            next: ptr::null_mut(),
6217            address_info_count: u32::default(),
6218            vendor_info_count: u32::default(),
6219            vendor_binary_size: DeviceSize::default(),
6220        }
6221    }
6222}
6223
6224unsafe impl Send for DeviceFaultCountsEXT {}
6225unsafe impl Sync for DeviceFaultCountsEXT {}
6226
6227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html>
6228#[repr(C)]
6229#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6230pub struct DeviceFaultInfoEXT {
6231    pub s_type: StructureType,
6232    pub next: *mut c_void,
6233    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
6234    pub address_infos: *mut DeviceFaultAddressInfoEXT,
6235    pub vendor_infos: *mut DeviceFaultVendorInfoEXT,
6236    pub vendor_binary_data: *mut c_void,
6237}
6238
6239impl Default for DeviceFaultInfoEXT {
6240    #[inline]
6241    fn default() -> Self {
6242        Self {
6243            s_type: StructureType::DEVICE_FAULT_INFO_EXT,
6244            next: ptr::null_mut(),
6245            description: StringArray::default(),
6246            address_infos: ptr::null_mut(),
6247            vendor_infos: ptr::null_mut(),
6248            vendor_binary_data: ptr::null_mut(),
6249        }
6250    }
6251}
6252
6253unsafe impl Send for DeviceFaultInfoEXT {}
6254unsafe impl Sync for DeviceFaultInfoEXT {}
6255
6256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneEXT.html>
6257#[repr(C)]
6258#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6259pub struct DeviceFaultVendorBinaryHeaderVersionOneEXT {
6260    pub header_size: u32,
6261    pub header_version: DeviceFaultVendorBinaryHeaderVersionEXT,
6262    pub vendor_id: u32,
6263    pub device_id: u32,
6264    pub driver_version: u32,
6265    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
6266    pub application_name_offset: u32,
6267    pub application_version: u32,
6268    pub engine_name_offset: u32,
6269    pub engine_version: u32,
6270    pub api_version: u32,
6271}
6272
6273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoEXT.html>
6274#[repr(C)]
6275#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6276pub struct DeviceFaultVendorInfoEXT {
6277    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
6278    pub vendor_fault_code: u64,
6279    pub vendor_fault_data: u64,
6280}
6281
6282/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html>
6283#[repr(C)]
6284#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6285pub struct DeviceGroupBindSparseInfo {
6286    pub s_type: StructureType,
6287    pub next: *const c_void,
6288    pub resource_device_index: u32,
6289    pub memory_device_index: u32,
6290}
6291
6292impl Default for DeviceGroupBindSparseInfo {
6293    #[inline]
6294    fn default() -> Self {
6295        Self {
6296            s_type: StructureType::DEVICE_GROUP_BIND_SPARSE_INFO,
6297            next: ptr::null(),
6298            resource_device_index: u32::default(),
6299            memory_device_index: u32::default(),
6300        }
6301    }
6302}
6303
6304unsafe impl Send for DeviceGroupBindSparseInfo {}
6305unsafe impl Sync for DeviceGroupBindSparseInfo {}
6306
6307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html>
6308#[repr(C)]
6309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6310pub struct DeviceGroupCommandBufferBeginInfo {
6311    pub s_type: StructureType,
6312    pub next: *const c_void,
6313    pub device_mask: u32,
6314}
6315
6316impl Default for DeviceGroupCommandBufferBeginInfo {
6317    #[inline]
6318    fn default() -> Self {
6319        Self {
6320            s_type: StructureType::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
6321            next: ptr::null(),
6322            device_mask: u32::default(),
6323        }
6324    }
6325}
6326
6327unsafe impl Send for DeviceGroupCommandBufferBeginInfo {}
6328unsafe impl Sync for DeviceGroupCommandBufferBeginInfo {}
6329
6330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html>
6331#[repr(C)]
6332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6333pub struct DeviceGroupDeviceCreateInfo {
6334    pub s_type: StructureType,
6335    pub next: *const c_void,
6336    pub physical_device_count: u32,
6337    pub physical_devices: *const PhysicalDevice,
6338}
6339
6340impl Default for DeviceGroupDeviceCreateInfo {
6341    #[inline]
6342    fn default() -> Self {
6343        Self {
6344            s_type: StructureType::DEVICE_GROUP_DEVICE_CREATE_INFO,
6345            next: ptr::null(),
6346            physical_device_count: u32::default(),
6347            physical_devices: ptr::null(),
6348        }
6349    }
6350}
6351
6352unsafe impl Send for DeviceGroupDeviceCreateInfo {}
6353unsafe impl Sync for DeviceGroupDeviceCreateInfo {}
6354
6355/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html>
6356#[repr(C)]
6357#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6358pub struct DeviceGroupPresentCapabilitiesKHR {
6359    pub s_type: StructureType,
6360    pub next: *mut c_void,
6361    pub present_mask: [u32; MAX_DEVICE_GROUP_SIZE as usize],
6362    pub modes: DeviceGroupPresentModeFlagsKHR,
6363}
6364
6365impl Default for DeviceGroupPresentCapabilitiesKHR {
6366    #[inline]
6367    fn default() -> Self {
6368        Self {
6369            s_type: StructureType::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
6370            next: ptr::null_mut(),
6371            present_mask: [u32::default(); MAX_DEVICE_GROUP_SIZE],
6372            modes: DeviceGroupPresentModeFlagsKHR::default(),
6373        }
6374    }
6375}
6376
6377unsafe impl Send for DeviceGroupPresentCapabilitiesKHR {}
6378unsafe impl Sync for DeviceGroupPresentCapabilitiesKHR {}
6379
6380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html>
6381#[repr(C)]
6382#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6383pub struct DeviceGroupPresentInfoKHR {
6384    pub s_type: StructureType,
6385    pub next: *const c_void,
6386    pub swapchain_count: u32,
6387    pub device_masks: *const u32,
6388    pub mode: DeviceGroupPresentModeFlagsKHR,
6389}
6390
6391impl Default for DeviceGroupPresentInfoKHR {
6392    #[inline]
6393    fn default() -> Self {
6394        Self {
6395            s_type: StructureType::DEVICE_GROUP_PRESENT_INFO_KHR,
6396            next: ptr::null(),
6397            swapchain_count: u32::default(),
6398            device_masks: ptr::null(),
6399            mode: DeviceGroupPresentModeFlagsKHR::default(),
6400        }
6401    }
6402}
6403
6404unsafe impl Send for DeviceGroupPresentInfoKHR {}
6405unsafe impl Sync for DeviceGroupPresentInfoKHR {}
6406
6407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html>
6408#[repr(C)]
6409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6410pub struct DeviceGroupRenderPassBeginInfo {
6411    pub s_type: StructureType,
6412    pub next: *const c_void,
6413    pub device_mask: u32,
6414    pub device_render_area_count: u32,
6415    pub device_render_areas: *const Rect2D,
6416}
6417
6418impl Default for DeviceGroupRenderPassBeginInfo {
6419    #[inline]
6420    fn default() -> Self {
6421        Self {
6422            s_type: StructureType::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
6423            next: ptr::null(),
6424            device_mask: u32::default(),
6425            device_render_area_count: u32::default(),
6426            device_render_areas: ptr::null(),
6427        }
6428    }
6429}
6430
6431unsafe impl Send for DeviceGroupRenderPassBeginInfo {}
6432unsafe impl Sync for DeviceGroupRenderPassBeginInfo {}
6433
6434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html>
6435#[repr(C)]
6436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6437pub struct DeviceGroupSubmitInfo {
6438    pub s_type: StructureType,
6439    pub next: *const c_void,
6440    pub wait_semaphore_count: u32,
6441    pub wait_semaphore_device_indices: *const u32,
6442    pub command_buffer_count: u32,
6443    pub command_buffer_device_masks: *const u32,
6444    pub signal_semaphore_count: u32,
6445    pub signal_semaphore_device_indices: *const u32,
6446}
6447
6448impl Default for DeviceGroupSubmitInfo {
6449    #[inline]
6450    fn default() -> Self {
6451        Self {
6452            s_type: StructureType::DEVICE_GROUP_SUBMIT_INFO,
6453            next: ptr::null(),
6454            wait_semaphore_count: u32::default(),
6455            wait_semaphore_device_indices: ptr::null(),
6456            command_buffer_count: u32::default(),
6457            command_buffer_device_masks: ptr::null(),
6458            signal_semaphore_count: u32::default(),
6459            signal_semaphore_device_indices: ptr::null(),
6460        }
6461    }
6462}
6463
6464unsafe impl Send for DeviceGroupSubmitInfo {}
6465unsafe impl Sync for DeviceGroupSubmitInfo {}
6466
6467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html>
6468#[repr(C)]
6469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6470pub struct DeviceGroupSwapchainCreateInfoKHR {
6471    pub s_type: StructureType,
6472    pub next: *const c_void,
6473    pub modes: DeviceGroupPresentModeFlagsKHR,
6474}
6475
6476impl Default for DeviceGroupSwapchainCreateInfoKHR {
6477    #[inline]
6478    fn default() -> Self {
6479        Self {
6480            s_type: StructureType::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
6481            next: ptr::null(),
6482            modes: DeviceGroupPresentModeFlagsKHR::default(),
6483        }
6484    }
6485}
6486
6487unsafe impl Send for DeviceGroupSwapchainCreateInfoKHR {}
6488unsafe impl Sync for DeviceGroupSwapchainCreateInfoKHR {}
6489
6490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html>
6491#[repr(C)]
6492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6493pub struct DeviceImageMemoryRequirements {
6494    pub s_type: StructureType,
6495    pub next: *const c_void,
6496    pub create_info: *const ImageCreateInfo,
6497    pub plane_aspect: ImageAspectFlags,
6498}
6499
6500impl Default for DeviceImageMemoryRequirements {
6501    #[inline]
6502    fn default() -> Self {
6503        Self {
6504            s_type: StructureType::DEVICE_IMAGE_MEMORY_REQUIREMENTS,
6505            next: ptr::null(),
6506            create_info: ptr::null(),
6507            plane_aspect: ImageAspectFlags::default(),
6508        }
6509    }
6510}
6511
6512unsafe impl Send for DeviceImageMemoryRequirements {}
6513unsafe impl Sync for DeviceImageMemoryRequirements {}
6514
6515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html>
6516#[repr(C)]
6517#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6518pub struct DeviceImageSubresourceInfo {
6519    pub s_type: StructureType,
6520    pub next: *const c_void,
6521    pub create_info: *const ImageCreateInfo,
6522    pub subresource: *const ImageSubresource2,
6523}
6524
6525impl Default for DeviceImageSubresourceInfo {
6526    #[inline]
6527    fn default() -> Self {
6528        Self {
6529            s_type: StructureType::DEVICE_IMAGE_SUBRESOURCE_INFO,
6530            next: ptr::null(),
6531            create_info: ptr::null(),
6532            subresource: ptr::null(),
6533        }
6534    }
6535}
6536
6537unsafe impl Send for DeviceImageSubresourceInfo {}
6538unsafe impl Sync for DeviceImageSubresourceInfo {}
6539
6540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html>
6541#[repr(C)]
6542#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6543pub struct DeviceMemoryOpaqueCaptureAddressInfo {
6544    pub s_type: StructureType,
6545    pub next: *const c_void,
6546    pub memory: DeviceMemory,
6547}
6548
6549impl Default for DeviceMemoryOpaqueCaptureAddressInfo {
6550    #[inline]
6551    fn default() -> Self {
6552        Self {
6553            s_type: StructureType::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
6554            next: ptr::null(),
6555            memory: DeviceMemory::default(),
6556        }
6557    }
6558}
6559
6560unsafe impl Send for DeviceMemoryOpaqueCaptureAddressInfo {}
6561unsafe impl Sync for DeviceMemoryOpaqueCaptureAddressInfo {}
6562
6563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html>
6564#[repr(C)]
6565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6566pub struct DeviceMemoryOverallocationCreateInfoAMD {
6567    pub s_type: StructureType,
6568    pub next: *const c_void,
6569    pub overallocation_behavior: MemoryOverallocationBehaviorAMD,
6570}
6571
6572impl Default for DeviceMemoryOverallocationCreateInfoAMD {
6573    #[inline]
6574    fn default() -> Self {
6575        Self {
6576            s_type: StructureType::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
6577            next: ptr::null(),
6578            overallocation_behavior: MemoryOverallocationBehaviorAMD::default(),
6579        }
6580    }
6581}
6582
6583unsafe impl Send for DeviceMemoryOverallocationCreateInfoAMD {}
6584unsafe impl Sync for DeviceMemoryOverallocationCreateInfoAMD {}
6585
6586/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html>
6587#[repr(C)]
6588#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6589pub struct DeviceMemoryReportCallbackDataEXT {
6590    pub s_type: StructureType,
6591    pub next: *mut c_void,
6592    pub flags: DeviceMemoryReportFlagsEXT,
6593    pub type_: DeviceMemoryReportEventTypeEXT,
6594    pub memory_object_id: u64,
6595    pub size: DeviceSize,
6596    pub object_type: ObjectType,
6597    pub object_handle: u64,
6598    pub heap_index: u32,
6599}
6600
6601impl Default for DeviceMemoryReportCallbackDataEXT {
6602    #[inline]
6603    fn default() -> Self {
6604        Self {
6605            s_type: StructureType::DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT,
6606            next: ptr::null_mut(),
6607            flags: DeviceMemoryReportFlagsEXT::default(),
6608            type_: DeviceMemoryReportEventTypeEXT::default(),
6609            memory_object_id: u64::default(),
6610            size: DeviceSize::default(),
6611            object_type: ObjectType::default(),
6612            object_handle: u64::default(),
6613            heap_index: u32::default(),
6614        }
6615    }
6616}
6617
6618unsafe impl Send for DeviceMemoryReportCallbackDataEXT {}
6619unsafe impl Sync for DeviceMemoryReportCallbackDataEXT {}
6620
6621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html>
6622#[repr(C)]
6623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6624pub struct DevicePipelineBinaryInternalCacheControlKHR {
6625    pub s_type: StructureType,
6626    pub next: *const c_void,
6627    pub disable_internal_cache: Bool32,
6628}
6629
6630impl Default for DevicePipelineBinaryInternalCacheControlKHR {
6631    #[inline]
6632    fn default() -> Self {
6633        Self {
6634            s_type: StructureType::DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR,
6635            next: ptr::null(),
6636            disable_internal_cache: Bool32::default(),
6637        }
6638    }
6639}
6640
6641unsafe impl Send for DevicePipelineBinaryInternalCacheControlKHR {}
6642unsafe impl Sync for DevicePipelineBinaryInternalCacheControlKHR {}
6643
6644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html>
6645#[repr(C)]
6646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6647pub struct DevicePrivateDataCreateInfo {
6648    pub s_type: StructureType,
6649    pub next: *const c_void,
6650    pub private_data_slot_request_count: u32,
6651}
6652
6653impl Default for DevicePrivateDataCreateInfo {
6654    #[inline]
6655    fn default() -> Self {
6656        Self {
6657            s_type: StructureType::DEVICE_PRIVATE_DATA_CREATE_INFO,
6658            next: ptr::null(),
6659            private_data_slot_request_count: u32::default(),
6660        }
6661    }
6662}
6663
6664unsafe impl Send for DevicePrivateDataCreateInfo {}
6665unsafe impl Sync for DevicePrivateDataCreateInfo {}
6666
6667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html>
6668#[repr(C)]
6669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6670pub struct DeviceQueueCreateInfo {
6671    pub s_type: StructureType,
6672    pub next: *const c_void,
6673    pub flags: DeviceQueueCreateFlags,
6674    pub queue_family_index: u32,
6675    pub queue_count: u32,
6676    pub queue_priorities: *const f32,
6677}
6678
6679impl Default for DeviceQueueCreateInfo {
6680    #[inline]
6681    fn default() -> Self {
6682        Self {
6683            s_type: StructureType::DEVICE_QUEUE_CREATE_INFO,
6684            next: ptr::null(),
6685            flags: DeviceQueueCreateFlags::default(),
6686            queue_family_index: u32::default(),
6687            queue_count: u32::default(),
6688            queue_priorities: ptr::null(),
6689        }
6690    }
6691}
6692
6693unsafe impl Send for DeviceQueueCreateInfo {}
6694unsafe impl Sync for DeviceQueueCreateInfo {}
6695
6696/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html>
6697#[repr(C)]
6698#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6699pub struct DeviceQueueGlobalPriorityCreateInfo {
6700    pub s_type: StructureType,
6701    pub next: *const c_void,
6702    pub global_priority: QueueGlobalPriority,
6703}
6704
6705impl Default for DeviceQueueGlobalPriorityCreateInfo {
6706    #[inline]
6707    fn default() -> Self {
6708        Self {
6709            s_type: StructureType::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO,
6710            next: ptr::null(),
6711            global_priority: QueueGlobalPriority::default(),
6712        }
6713    }
6714}
6715
6716unsafe impl Send for DeviceQueueGlobalPriorityCreateInfo {}
6717unsafe impl Sync for DeviceQueueGlobalPriorityCreateInfo {}
6718
6719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html>
6720#[repr(C)]
6721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6722pub struct DeviceQueueInfo2 {
6723    pub s_type: StructureType,
6724    pub next: *const c_void,
6725    pub flags: DeviceQueueCreateFlags,
6726    pub queue_family_index: u32,
6727    pub queue_index: u32,
6728}
6729
6730impl Default for DeviceQueueInfo2 {
6731    #[inline]
6732    fn default() -> Self {
6733        Self {
6734            s_type: StructureType::DEVICE_QUEUE_INFO_2,
6735            next: ptr::null(),
6736            flags: DeviceQueueCreateFlags::default(),
6737            queue_family_index: u32::default(),
6738            queue_index: u32::default(),
6739        }
6740    }
6741}
6742
6743unsafe impl Send for DeviceQueueInfo2 {}
6744unsafe impl Sync for DeviceQueueInfo2 {}
6745
6746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html>
6747#[repr(C)]
6748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6749pub struct DeviceQueueShaderCoreControlCreateInfoARM {
6750    pub s_type: StructureType,
6751    pub next: *mut c_void,
6752    pub shader_core_count: u32,
6753}
6754
6755impl Default for DeviceQueueShaderCoreControlCreateInfoARM {
6756    #[inline]
6757    fn default() -> Self {
6758        Self {
6759            s_type: StructureType::DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM,
6760            next: ptr::null_mut(),
6761            shader_core_count: u32::default(),
6762        }
6763    }
6764}
6765
6766unsafe impl Send for DeviceQueueShaderCoreControlCreateInfoARM {}
6767unsafe impl Sync for DeviceQueueShaderCoreControlCreateInfoARM {}
6768
6769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV.html>
6770#[repr(C)]
6771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6772pub struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6773    pub s_type: StructureType,
6774    pub next: *const c_void,
6775    pub semaphore_sci_sync_pool_request_count: u32,
6776}
6777
6778impl Default for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
6779    #[inline]
6780    fn default() -> Self {
6781        Self {
6782            s_type: StructureType::DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV,
6783            next: ptr::null(),
6784            semaphore_sci_sync_pool_request_count: u32::default(),
6785        }
6786    }
6787}
6788
6789unsafe impl Send for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6790unsafe impl Sync for DeviceSemaphoreSciSyncPoolReservationCreateInfoNV {}
6791
6792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceTensorMemoryRequirementsARM.html>
6793#[repr(C)]
6794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6795pub struct DeviceTensorMemoryRequirementsARM {
6796    pub s_type: StructureType,
6797    pub next: *const c_void,
6798    pub create_info: *const TensorCreateInfoARM,
6799}
6800
6801impl Default for DeviceTensorMemoryRequirementsARM {
6802    #[inline]
6803    fn default() -> Self {
6804        Self {
6805            s_type: StructureType::DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM,
6806            next: ptr::null(),
6807            create_info: ptr::null(),
6808        }
6809    }
6810}
6811
6812unsafe impl Send for DeviceTensorMemoryRequirementsARM {}
6813unsafe impl Sync for DeviceTensorMemoryRequirementsARM {}
6814
6815/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html>
6816#[repr(C)]
6817#[derive(Copy, Clone)]
6818pub struct DirectDriverLoadingInfoLUNARG {
6819    pub s_type: StructureType,
6820    pub next: *mut c_void,
6821    pub flags: DirectDriverLoadingFlagsLUNARG,
6822    pub get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG,
6823}
6824
6825impl fmt::Debug for DirectDriverLoadingInfoLUNARG {
6826    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6827        f.debug_struct("DirectDriverLoadingInfoLUNARG")
6828            .field("s_type", &self.s_type)
6829            .field("next", &self.next)
6830            .field("flags", &self.flags)
6831            .field(
6832                "get_instance_proc_addr",
6833                &(self.get_instance_proc_addr.map(|f| f as *const u8)),
6834            )
6835            .finish()
6836    }
6837}
6838
6839impl Default for DirectDriverLoadingInfoLUNARG {
6840    #[inline]
6841    fn default() -> Self {
6842        Self {
6843            s_type: StructureType::DIRECT_DRIVER_LOADING_INFO_LUNARG,
6844            next: ptr::null_mut(),
6845            flags: DirectDriverLoadingFlagsLUNARG::default(),
6846            get_instance_proc_addr: PFN_vkGetInstanceProcAddrLUNARG::default(),
6847        }
6848    }
6849}
6850
6851unsafe impl Send for DirectDriverLoadingInfoLUNARG {}
6852unsafe impl Sync for DirectDriverLoadingInfoLUNARG {}
6853
6854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html>
6855#[repr(C)]
6856#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6857pub struct DirectDriverLoadingListLUNARG {
6858    pub s_type: StructureType,
6859    pub next: *const c_void,
6860    pub mode: DirectDriverLoadingModeLUNARG,
6861    pub driver_count: u32,
6862    pub drivers: *const DirectDriverLoadingInfoLUNARG,
6863}
6864
6865impl Default for DirectDriverLoadingListLUNARG {
6866    #[inline]
6867    fn default() -> Self {
6868        Self {
6869            s_type: StructureType::DIRECT_DRIVER_LOADING_LIST_LUNARG,
6870            next: ptr::null(),
6871            mode: DirectDriverLoadingModeLUNARG::default(),
6872            driver_count: u32::default(),
6873            drivers: ptr::null(),
6874        }
6875    }
6876}
6877
6878unsafe impl Send for DirectDriverLoadingListLUNARG {}
6879unsafe impl Sync for DirectDriverLoadingListLUNARG {}
6880
6881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html>
6882#[repr(C)]
6883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6884pub struct DirectFBSurfaceCreateInfoEXT {
6885    pub s_type: StructureType,
6886    pub next: *const c_void,
6887    pub flags: DirectFBSurfaceCreateFlagsEXT,
6888    pub dfb: *mut IDirectFB,
6889    pub surface: *mut IDirectFBSurface,
6890}
6891
6892impl Default for DirectFBSurfaceCreateInfoEXT {
6893    #[inline]
6894    fn default() -> Self {
6895        Self {
6896            s_type: StructureType::DIRECTFB_SURFACE_CREATE_INFO_EXT,
6897            next: ptr::null(),
6898            flags: DirectFBSurfaceCreateFlagsEXT::default(),
6899            dfb: ptr::null_mut(),
6900            surface: ptr::null_mut(),
6901        }
6902    }
6903}
6904
6905unsafe impl Send for DirectFBSurfaceCreateInfoEXT {}
6906unsafe impl Sync for DirectFBSurfaceCreateInfoEXT {}
6907
6908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html>
6909#[repr(C)]
6910#[derive(Copy, Clone, Default, Debug)]
6911pub struct DispatchGraphCountInfoAMDX {
6912    pub count: u32,
6913    pub infos: DeviceOrHostAddressConstAMDX,
6914    pub stride: u64,
6915}
6916
6917/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html>
6918#[repr(C)]
6919#[derive(Copy, Clone, Default, Debug)]
6920pub struct DispatchGraphInfoAMDX {
6921    pub node_index: u32,
6922    pub payload_count: u32,
6923    pub payloads: DeviceOrHostAddressConstAMDX,
6924    pub payload_stride: u64,
6925}
6926
6927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html>
6928#[repr(C)]
6929#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
6930pub struct DispatchIndirectCommand {
6931    pub x: u32,
6932    pub y: u32,
6933    pub z: u32,
6934}
6935
6936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDispatchTileInfoQCOM.html>
6937#[repr(C)]
6938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6939pub struct DispatchTileInfoQCOM {
6940    pub s_type: StructureType,
6941    pub next: *const c_void,
6942}
6943
6944impl Default for DispatchTileInfoQCOM {
6945    #[inline]
6946    fn default() -> Self {
6947        Self {
6948            s_type: StructureType::DISPATCH_TILE_INFO_QCOM,
6949            next: ptr::null(),
6950        }
6951    }
6952}
6953
6954unsafe impl Send for DispatchTileInfoQCOM {}
6955unsafe impl Sync for DispatchTileInfoQCOM {}
6956
6957/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html>
6958#[repr(C)]
6959#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6960pub struct DisplayEventInfoEXT {
6961    pub s_type: StructureType,
6962    pub next: *const c_void,
6963    pub display_event: DisplayEventTypeEXT,
6964}
6965
6966impl Default for DisplayEventInfoEXT {
6967    #[inline]
6968    fn default() -> Self {
6969        Self {
6970            s_type: StructureType::DISPLAY_EVENT_INFO_EXT,
6971            next: ptr::null(),
6972            display_event: DisplayEventTypeEXT::default(),
6973        }
6974    }
6975}
6976
6977unsafe impl Send for DisplayEventInfoEXT {}
6978unsafe impl Sync for DisplayEventInfoEXT {}
6979
6980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html>
6981#[repr(C)]
6982#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6983pub struct DisplayModeCreateInfoKHR {
6984    pub s_type: StructureType,
6985    pub next: *const c_void,
6986    pub flags: DisplayModeCreateFlagsKHR,
6987    pub parameters: DisplayModeParametersKHR,
6988}
6989
6990impl Default for DisplayModeCreateInfoKHR {
6991    #[inline]
6992    fn default() -> Self {
6993        Self {
6994            s_type: StructureType::DISPLAY_MODE_CREATE_INFO_KHR,
6995            next: ptr::null(),
6996            flags: DisplayModeCreateFlagsKHR::default(),
6997            parameters: DisplayModeParametersKHR::default(),
6998        }
6999    }
7000}
7001
7002unsafe impl Send for DisplayModeCreateInfoKHR {}
7003unsafe impl Sync for DisplayModeCreateInfoKHR {}
7004
7005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html>
7006#[repr(C)]
7007#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7008pub struct DisplayModeParametersKHR {
7009    pub visible_region: Extent2D,
7010    pub refresh_rate: u32,
7011}
7012
7013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html>
7014#[repr(C)]
7015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7016pub struct DisplayModeProperties2KHR {
7017    pub s_type: StructureType,
7018    pub next: *mut c_void,
7019    pub display_mode_properties: DisplayModePropertiesKHR,
7020}
7021
7022impl Default for DisplayModeProperties2KHR {
7023    #[inline]
7024    fn default() -> Self {
7025        Self {
7026            s_type: StructureType::DISPLAY_MODE_PROPERTIES_2_KHR,
7027            next: ptr::null_mut(),
7028            display_mode_properties: DisplayModePropertiesKHR::default(),
7029        }
7030    }
7031}
7032
7033unsafe impl Send for DisplayModeProperties2KHR {}
7034unsafe impl Sync for DisplayModeProperties2KHR {}
7035
7036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html>
7037#[repr(C)]
7038#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7039pub struct DisplayModePropertiesKHR {
7040    pub display_mode: DisplayModeKHR,
7041    pub parameters: DisplayModeParametersKHR,
7042}
7043
7044/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html>
7045#[repr(C)]
7046#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7047pub struct DisplayModeStereoPropertiesNV {
7048    pub s_type: StructureType,
7049    pub next: *mut c_void,
7050    pub hdmi_3d_supported: Bool32,
7051}
7052
7053impl Default for DisplayModeStereoPropertiesNV {
7054    #[inline]
7055    fn default() -> Self {
7056        Self {
7057            s_type: StructureType::DISPLAY_MODE_STEREO_PROPERTIES_NV,
7058            next: ptr::null_mut(),
7059            hdmi_3d_supported: Bool32::default(),
7060        }
7061    }
7062}
7063
7064unsafe impl Send for DisplayModeStereoPropertiesNV {}
7065unsafe impl Sync for DisplayModeStereoPropertiesNV {}
7066
7067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html>
7068#[repr(C)]
7069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7070pub struct DisplayNativeHdrSurfaceCapabilitiesAMD {
7071    pub s_type: StructureType,
7072    pub next: *mut c_void,
7073    pub local_dimming_support: Bool32,
7074}
7075
7076impl Default for DisplayNativeHdrSurfaceCapabilitiesAMD {
7077    #[inline]
7078    fn default() -> Self {
7079        Self {
7080            s_type: StructureType::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
7081            next: ptr::null_mut(),
7082            local_dimming_support: Bool32::default(),
7083        }
7084    }
7085}
7086
7087unsafe impl Send for DisplayNativeHdrSurfaceCapabilitiesAMD {}
7088unsafe impl Sync for DisplayNativeHdrSurfaceCapabilitiesAMD {}
7089
7090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html>
7091#[repr(C)]
7092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7093pub struct DisplayPlaneCapabilities2KHR {
7094    pub s_type: StructureType,
7095    pub next: *mut c_void,
7096    pub capabilities: DisplayPlaneCapabilitiesKHR,
7097}
7098
7099impl Default for DisplayPlaneCapabilities2KHR {
7100    #[inline]
7101    fn default() -> Self {
7102        Self {
7103            s_type: StructureType::DISPLAY_PLANE_CAPABILITIES_2_KHR,
7104            next: ptr::null_mut(),
7105            capabilities: DisplayPlaneCapabilitiesKHR::default(),
7106        }
7107    }
7108}
7109
7110unsafe impl Send for DisplayPlaneCapabilities2KHR {}
7111unsafe impl Sync for DisplayPlaneCapabilities2KHR {}
7112
7113/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html>
7114#[repr(C)]
7115#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7116pub struct DisplayPlaneCapabilitiesKHR {
7117    pub supported_alpha: DisplayPlaneAlphaFlagsKHR,
7118    pub min_src_position: Offset2D,
7119    pub max_src_position: Offset2D,
7120    pub min_src_extent: Extent2D,
7121    pub max_src_extent: Extent2D,
7122    pub min_dst_position: Offset2D,
7123    pub max_dst_position: Offset2D,
7124    pub min_dst_extent: Extent2D,
7125    pub max_dst_extent: Extent2D,
7126}
7127
7128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html>
7129#[repr(C)]
7130#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7131pub struct DisplayPlaneInfo2KHR {
7132    pub s_type: StructureType,
7133    pub next: *const c_void,
7134    pub mode: DisplayModeKHR,
7135    pub plane_index: u32,
7136}
7137
7138impl Default for DisplayPlaneInfo2KHR {
7139    #[inline]
7140    fn default() -> Self {
7141        Self {
7142            s_type: StructureType::DISPLAY_PLANE_INFO_2_KHR,
7143            next: ptr::null(),
7144            mode: DisplayModeKHR::default(),
7145            plane_index: u32::default(),
7146        }
7147    }
7148}
7149
7150unsafe impl Send for DisplayPlaneInfo2KHR {}
7151unsafe impl Sync for DisplayPlaneInfo2KHR {}
7152
7153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html>
7154#[repr(C)]
7155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7156pub struct DisplayPlaneProperties2KHR {
7157    pub s_type: StructureType,
7158    pub next: *mut c_void,
7159    pub display_plane_properties: DisplayPlanePropertiesKHR,
7160}
7161
7162impl Default for DisplayPlaneProperties2KHR {
7163    #[inline]
7164    fn default() -> Self {
7165        Self {
7166            s_type: StructureType::DISPLAY_PLANE_PROPERTIES_2_KHR,
7167            next: ptr::null_mut(),
7168            display_plane_properties: DisplayPlanePropertiesKHR::default(),
7169        }
7170    }
7171}
7172
7173unsafe impl Send for DisplayPlaneProperties2KHR {}
7174unsafe impl Sync for DisplayPlaneProperties2KHR {}
7175
7176/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html>
7177#[repr(C)]
7178#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7179pub struct DisplayPlanePropertiesKHR {
7180    pub current_display: DisplayKHR,
7181    pub current_stack_index: u32,
7182}
7183
7184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html>
7185#[repr(C)]
7186#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7187pub struct DisplayPowerInfoEXT {
7188    pub s_type: StructureType,
7189    pub next: *const c_void,
7190    pub power_state: DisplayPowerStateEXT,
7191}
7192
7193impl Default for DisplayPowerInfoEXT {
7194    #[inline]
7195    fn default() -> Self {
7196        Self {
7197            s_type: StructureType::DISPLAY_POWER_INFO_EXT,
7198            next: ptr::null(),
7199            power_state: DisplayPowerStateEXT::default(),
7200        }
7201    }
7202}
7203
7204unsafe impl Send for DisplayPowerInfoEXT {}
7205unsafe impl Sync for DisplayPowerInfoEXT {}
7206
7207/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html>
7208#[repr(C)]
7209#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7210pub struct DisplayPresentInfoKHR {
7211    pub s_type: StructureType,
7212    pub next: *const c_void,
7213    pub src_rect: Rect2D,
7214    pub dst_rect: Rect2D,
7215    pub persistent: Bool32,
7216}
7217
7218impl Default for DisplayPresentInfoKHR {
7219    #[inline]
7220    fn default() -> Self {
7221        Self {
7222            s_type: StructureType::DISPLAY_PRESENT_INFO_KHR,
7223            next: ptr::null(),
7224            src_rect: Rect2D::default(),
7225            dst_rect: Rect2D::default(),
7226            persistent: Bool32::default(),
7227        }
7228    }
7229}
7230
7231unsafe impl Send for DisplayPresentInfoKHR {}
7232unsafe impl Sync for DisplayPresentInfoKHR {}
7233
7234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html>
7235#[repr(C)]
7236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7237pub struct DisplayProperties2KHR {
7238    pub s_type: StructureType,
7239    pub next: *mut c_void,
7240    pub display_properties: DisplayPropertiesKHR,
7241}
7242
7243impl Default for DisplayProperties2KHR {
7244    #[inline]
7245    fn default() -> Self {
7246        Self {
7247            s_type: StructureType::DISPLAY_PROPERTIES_2_KHR,
7248            next: ptr::null_mut(),
7249            display_properties: DisplayPropertiesKHR::default(),
7250        }
7251    }
7252}
7253
7254unsafe impl Send for DisplayProperties2KHR {}
7255unsafe impl Sync for DisplayProperties2KHR {}
7256
7257/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html>
7258#[repr(C)]
7259#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7260pub struct DisplayPropertiesKHR {
7261    pub display: DisplayKHR,
7262    pub display_name: *const c_char,
7263    pub physical_dimensions: Extent2D,
7264    pub physical_resolution: Extent2D,
7265    pub supported_transforms: SurfaceTransformFlagsKHR,
7266    pub plane_reorder_possible: Bool32,
7267    pub persistent_content: Bool32,
7268}
7269
7270impl Default for DisplayPropertiesKHR {
7271    #[inline]
7272    fn default() -> Self {
7273        Self {
7274            display: DisplayKHR::default(),
7275            display_name: ptr::null(),
7276            physical_dimensions: Extent2D::default(),
7277            physical_resolution: Extent2D::default(),
7278            supported_transforms: SurfaceTransformFlagsKHR::default(),
7279            plane_reorder_possible: Bool32::default(),
7280            persistent_content: Bool32::default(),
7281        }
7282    }
7283}
7284
7285unsafe impl Send for DisplayPropertiesKHR {}
7286unsafe impl Sync for DisplayPropertiesKHR {}
7287
7288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html>
7289#[repr(C)]
7290#[derive(Copy, Clone, Debug, PartialEq)]
7291pub struct DisplaySurfaceCreateInfoKHR {
7292    pub s_type: StructureType,
7293    pub next: *const c_void,
7294    pub flags: DisplaySurfaceCreateFlagsKHR,
7295    pub display_mode: DisplayModeKHR,
7296    pub plane_index: u32,
7297    pub plane_stack_index: u32,
7298    pub transform: SurfaceTransformFlagsKHR,
7299    pub global_alpha: f32,
7300    pub alpha_mode: DisplayPlaneAlphaFlagsKHR,
7301    pub image_extent: Extent2D,
7302}
7303
7304impl Default for DisplaySurfaceCreateInfoKHR {
7305    #[inline]
7306    fn default() -> Self {
7307        Self {
7308            s_type: StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR,
7309            next: ptr::null(),
7310            flags: DisplaySurfaceCreateFlagsKHR::default(),
7311            display_mode: DisplayModeKHR::default(),
7312            plane_index: u32::default(),
7313            plane_stack_index: u32::default(),
7314            transform: SurfaceTransformFlagsKHR::default(),
7315            global_alpha: f32::default(),
7316            alpha_mode: DisplayPlaneAlphaFlagsKHR::default(),
7317            image_extent: Extent2D::default(),
7318        }
7319    }
7320}
7321
7322unsafe impl Send for DisplaySurfaceCreateInfoKHR {}
7323unsafe impl Sync for DisplaySurfaceCreateInfoKHR {}
7324
7325/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html>
7326#[repr(C)]
7327#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7328pub struct DisplaySurfaceStereoCreateInfoNV {
7329    pub s_type: StructureType,
7330    pub next: *const c_void,
7331    pub stereo_type: DisplaySurfaceStereoTypeNV,
7332}
7333
7334impl Default for DisplaySurfaceStereoCreateInfoNV {
7335    #[inline]
7336    fn default() -> Self {
7337        Self {
7338            s_type: StructureType::DISPLAY_SURFACE_STEREO_CREATE_INFO_NV,
7339            next: ptr::null(),
7340            stereo_type: DisplaySurfaceStereoTypeNV::default(),
7341        }
7342    }
7343}
7344
7345unsafe impl Send for DisplaySurfaceStereoCreateInfoNV {}
7346unsafe impl Sync for DisplaySurfaceStereoCreateInfoNV {}
7347
7348/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html>
7349#[repr(C)]
7350#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7351pub struct DrawIndexedIndirectCommand {
7352    pub index_count: u32,
7353    pub instance_count: u32,
7354    pub first_index: u32,
7355    pub vertex_offset: i32,
7356    pub first_instance: u32,
7357}
7358
7359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html>
7360#[repr(C)]
7361#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7362pub struct DrawIndirectCommand {
7363    pub vertex_count: u32,
7364    pub instance_count: u32,
7365    pub first_vertex: u32,
7366    pub first_instance: u32,
7367}
7368
7369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html>
7370#[repr(C)]
7371#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7372pub struct DrawIndirectCountIndirectCommandEXT {
7373    pub buffer_address: DeviceAddress,
7374    pub stride: u32,
7375    pub command_count: u32,
7376}
7377
7378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html>
7379#[repr(C)]
7380#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7381pub struct DrawMeshTasksIndirectCommandEXT {
7382    pub group_count_x: u32,
7383    pub group_count_y: u32,
7384    pub group_count_z: u32,
7385}
7386
7387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html>
7388#[repr(C)]
7389#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7390pub struct DrawMeshTasksIndirectCommandNV {
7391    pub task_count: u32,
7392    pub first_task: u32,
7393}
7394
7395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html>
7396#[repr(C)]
7397#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7398pub struct DrmFormatModifierProperties2EXT {
7399    pub drm_format_modifier: u64,
7400    pub drm_format_modifier_plane_count: u32,
7401    pub drm_format_modifier_tiling_features: FormatFeatureFlags2,
7402}
7403
7404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html>
7405#[repr(C)]
7406#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
7407pub struct DrmFormatModifierPropertiesEXT {
7408    pub drm_format_modifier: u64,
7409    pub drm_format_modifier_plane_count: u32,
7410    pub drm_format_modifier_tiling_features: FormatFeatureFlags,
7411}
7412
7413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html>
7414#[repr(C)]
7415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7416pub struct DrmFormatModifierPropertiesList2EXT {
7417    pub s_type: StructureType,
7418    pub next: *mut c_void,
7419    pub drm_format_modifier_count: u32,
7420    pub drm_format_modifier_properties: *mut DrmFormatModifierProperties2EXT,
7421}
7422
7423impl Default for DrmFormatModifierPropertiesList2EXT {
7424    #[inline]
7425    fn default() -> Self {
7426        Self {
7427            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT,
7428            next: ptr::null_mut(),
7429            drm_format_modifier_count: u32::default(),
7430            drm_format_modifier_properties: ptr::null_mut(),
7431        }
7432    }
7433}
7434
7435unsafe impl Send for DrmFormatModifierPropertiesList2EXT {}
7436unsafe impl Sync for DrmFormatModifierPropertiesList2EXT {}
7437
7438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html>
7439#[repr(C)]
7440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7441pub struct DrmFormatModifierPropertiesListEXT {
7442    pub s_type: StructureType,
7443    pub next: *mut c_void,
7444    pub drm_format_modifier_count: u32,
7445    pub drm_format_modifier_properties: *mut DrmFormatModifierPropertiesEXT,
7446}
7447
7448impl Default for DrmFormatModifierPropertiesListEXT {
7449    #[inline]
7450    fn default() -> Self {
7451        Self {
7452            s_type: StructureType::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
7453            next: ptr::null_mut(),
7454            drm_format_modifier_count: u32::default(),
7455            drm_format_modifier_properties: ptr::null_mut(),
7456        }
7457    }
7458}
7459
7460unsafe impl Send for DrmFormatModifierPropertiesListEXT {}
7461unsafe impl Sync for DrmFormatModifierPropertiesListEXT {}
7462
7463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkEventCreateInfo.html>
7464#[repr(C)]
7465#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7466pub struct EventCreateInfo {
7467    pub s_type: StructureType,
7468    pub next: *const c_void,
7469    pub flags: EventCreateFlags,
7470}
7471
7472impl Default for EventCreateInfo {
7473    #[inline]
7474    fn default() -> Self {
7475        Self {
7476            s_type: StructureType::EVENT_CREATE_INFO,
7477            next: ptr::null(),
7478            flags: EventCreateFlags::default(),
7479        }
7480    }
7481}
7482
7483unsafe impl Send for EventCreateInfo {}
7484unsafe impl Sync for EventCreateInfo {}
7485
7486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html>
7487#[repr(C)]
7488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7489pub struct ExecutionGraphPipelineCreateInfoAMDX {
7490    pub s_type: StructureType,
7491    pub next: *const c_void,
7492    pub flags: PipelineCreateFlags,
7493    pub stage_count: u32,
7494    pub stages: *const PipelineShaderStageCreateInfo,
7495    pub library_info: *const PipelineLibraryCreateInfoKHR,
7496    pub layout: PipelineLayout,
7497    pub base_pipeline_handle: Pipeline,
7498    pub base_pipeline_index: i32,
7499}
7500
7501impl Default for ExecutionGraphPipelineCreateInfoAMDX {
7502    #[inline]
7503    fn default() -> Self {
7504        Self {
7505            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX,
7506            next: ptr::null(),
7507            flags: PipelineCreateFlags::default(),
7508            stage_count: u32::default(),
7509            stages: ptr::null(),
7510            library_info: ptr::null(),
7511            layout: PipelineLayout::default(),
7512            base_pipeline_handle: Pipeline::default(),
7513            base_pipeline_index: i32::default(),
7514        }
7515    }
7516}
7517
7518unsafe impl Send for ExecutionGraphPipelineCreateInfoAMDX {}
7519unsafe impl Sync for ExecutionGraphPipelineCreateInfoAMDX {}
7520
7521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html>
7522#[repr(C)]
7523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7524pub struct ExecutionGraphPipelineScratchSizeAMDX {
7525    pub s_type: StructureType,
7526    pub next: *mut c_void,
7527    pub min_size: DeviceSize,
7528    pub max_size: DeviceSize,
7529    pub size_granularity: DeviceSize,
7530}
7531
7532impl Default for ExecutionGraphPipelineScratchSizeAMDX {
7533    #[inline]
7534    fn default() -> Self {
7535        Self {
7536            s_type: StructureType::EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX,
7537            next: ptr::null_mut(),
7538            min_size: DeviceSize::default(),
7539            max_size: DeviceSize::default(),
7540            size_granularity: DeviceSize::default(),
7541        }
7542    }
7543}
7544
7545unsafe impl Send for ExecutionGraphPipelineScratchSizeAMDX {}
7546unsafe impl Sync for ExecutionGraphPipelineScratchSizeAMDX {}
7547
7548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html>
7549#[repr(C)]
7550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7551pub struct ExportFenceCreateInfo {
7552    pub s_type: StructureType,
7553    pub next: *const c_void,
7554    pub handle_types: ExternalFenceHandleTypeFlags,
7555}
7556
7557impl Default for ExportFenceCreateInfo {
7558    #[inline]
7559    fn default() -> Self {
7560        Self {
7561            s_type: StructureType::EXPORT_FENCE_CREATE_INFO,
7562            next: ptr::null(),
7563            handle_types: ExternalFenceHandleTypeFlags::default(),
7564        }
7565    }
7566}
7567
7568unsafe impl Send for ExportFenceCreateInfo {}
7569unsafe impl Sync for ExportFenceCreateInfo {}
7570
7571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceSciSyncInfoNV.html>
7572#[repr(C)]
7573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7574pub struct ExportFenceSciSyncInfoNV {
7575    pub s_type: StructureType,
7576    pub next: *const c_void,
7577    pub attributes: NvSciSyncAttrList,
7578}
7579
7580impl Default for ExportFenceSciSyncInfoNV {
7581    #[inline]
7582    fn default() -> Self {
7583        Self {
7584            s_type: StructureType::EXPORT_FENCE_SCI_SYNC_INFO_NV,
7585            next: ptr::null(),
7586            attributes: ptr::null_mut(),
7587        }
7588    }
7589}
7590
7591unsafe impl Send for ExportFenceSciSyncInfoNV {}
7592unsafe impl Sync for ExportFenceSciSyncInfoNV {}
7593
7594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html>
7595#[repr(C)]
7596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7597pub struct ExportFenceWin32HandleInfoKHR {
7598    pub s_type: StructureType,
7599    pub next: *const c_void,
7600    pub attributes: *const SECURITY_ATTRIBUTES,
7601    pub dw_access: DWORD,
7602    pub name: LPCWSTR,
7603}
7604
7605impl Default for ExportFenceWin32HandleInfoKHR {
7606    #[inline]
7607    fn default() -> Self {
7608        Self {
7609            s_type: StructureType::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
7610            next: ptr::null(),
7611            attributes: ptr::null(),
7612            dw_access: DWORD::default(),
7613            name: ptr::null_mut(),
7614        }
7615    }
7616}
7617
7618unsafe impl Send for ExportFenceWin32HandleInfoKHR {}
7619unsafe impl Sync for ExportFenceWin32HandleInfoKHR {}
7620
7621/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html>
7622#[repr(C)]
7623#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7624pub struct ExportMemoryAllocateInfo {
7625    pub s_type: StructureType,
7626    pub next: *const c_void,
7627    pub handle_types: ExternalMemoryHandleTypeFlags,
7628}
7629
7630impl Default for ExportMemoryAllocateInfo {
7631    #[inline]
7632    fn default() -> Self {
7633        Self {
7634            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO,
7635            next: ptr::null(),
7636            handle_types: ExternalMemoryHandleTypeFlags::default(),
7637        }
7638    }
7639}
7640
7641unsafe impl Send for ExportMemoryAllocateInfo {}
7642unsafe impl Sync for ExportMemoryAllocateInfo {}
7643
7644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html>
7645#[repr(C)]
7646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7647pub struct ExportMemoryAllocateInfoNV {
7648    pub s_type: StructureType,
7649    pub next: *const c_void,
7650    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
7651}
7652
7653impl Default for ExportMemoryAllocateInfoNV {
7654    #[inline]
7655    fn default() -> Self {
7656        Self {
7657            s_type: StructureType::EXPORT_MEMORY_ALLOCATE_INFO_NV,
7658            next: ptr::null(),
7659            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
7660        }
7661    }
7662}
7663
7664unsafe impl Send for ExportMemoryAllocateInfoNV {}
7665unsafe impl Sync for ExportMemoryAllocateInfoNV {}
7666
7667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemorySciBufInfoNV.html>
7668#[repr(C)]
7669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7670pub struct ExportMemorySciBufInfoNV {
7671    pub s_type: StructureType,
7672    pub next: *const c_void,
7673    pub attributes: NvSciBufAttrList,
7674}
7675
7676impl Default for ExportMemorySciBufInfoNV {
7677    #[inline]
7678    fn default() -> Self {
7679        Self {
7680            s_type: StructureType::EXPORT_MEMORY_SCI_BUF_INFO_NV,
7681            next: ptr::null(),
7682            attributes: ptr::null_mut(),
7683        }
7684    }
7685}
7686
7687unsafe impl Send for ExportMemorySciBufInfoNV {}
7688unsafe impl Sync for ExportMemorySciBufInfoNV {}
7689
7690/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html>
7691#[repr(C)]
7692#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7693pub struct ExportMemoryWin32HandleInfoKHR {
7694    pub s_type: StructureType,
7695    pub next: *const c_void,
7696    pub attributes: *const SECURITY_ATTRIBUTES,
7697    pub dw_access: DWORD,
7698    pub name: LPCWSTR,
7699}
7700
7701impl Default for ExportMemoryWin32HandleInfoKHR {
7702    #[inline]
7703    fn default() -> Self {
7704        Self {
7705            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
7706            next: ptr::null(),
7707            attributes: ptr::null(),
7708            dw_access: DWORD::default(),
7709            name: ptr::null_mut(),
7710        }
7711    }
7712}
7713
7714unsafe impl Send for ExportMemoryWin32HandleInfoKHR {}
7715unsafe impl Sync for ExportMemoryWin32HandleInfoKHR {}
7716
7717/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html>
7718#[repr(C)]
7719#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7720pub struct ExportMemoryWin32HandleInfoNV {
7721    pub s_type: StructureType,
7722    pub next: *const c_void,
7723    pub attributes: *const SECURITY_ATTRIBUTES,
7724    pub dw_access: DWORD,
7725}
7726
7727impl Default for ExportMemoryWin32HandleInfoNV {
7728    #[inline]
7729    fn default() -> Self {
7730        Self {
7731            s_type: StructureType::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
7732            next: ptr::null(),
7733            attributes: ptr::null(),
7734            dw_access: DWORD::default(),
7735        }
7736    }
7737}
7738
7739unsafe impl Send for ExportMemoryWin32HandleInfoNV {}
7740unsafe impl Sync for ExportMemoryWin32HandleInfoNV {}
7741
7742/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html>
7743#[repr(C)]
7744#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7745pub struct ExportMetalBufferInfoEXT {
7746    pub s_type: StructureType,
7747    pub next: *const c_void,
7748    pub memory: DeviceMemory,
7749    pub mtl_buffer: MTLBuffer_id,
7750}
7751
7752impl Default for ExportMetalBufferInfoEXT {
7753    #[inline]
7754    fn default() -> Self {
7755        Self {
7756            s_type: StructureType::EXPORT_METAL_BUFFER_INFO_EXT,
7757            next: ptr::null(),
7758            memory: DeviceMemory::default(),
7759            mtl_buffer: ptr::null_mut(),
7760        }
7761    }
7762}
7763
7764unsafe impl Send for ExportMetalBufferInfoEXT {}
7765unsafe impl Sync for ExportMetalBufferInfoEXT {}
7766
7767/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html>
7768#[repr(C)]
7769#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7770pub struct ExportMetalCommandQueueInfoEXT {
7771    pub s_type: StructureType,
7772    pub next: *const c_void,
7773    pub queue: Queue,
7774    pub mtl_command_queue: MTLCommandQueue_id,
7775}
7776
7777impl Default for ExportMetalCommandQueueInfoEXT {
7778    #[inline]
7779    fn default() -> Self {
7780        Self {
7781            s_type: StructureType::EXPORT_METAL_COMMAND_QUEUE_INFO_EXT,
7782            next: ptr::null(),
7783            queue: Queue::default(),
7784            mtl_command_queue: ptr::null_mut(),
7785        }
7786    }
7787}
7788
7789unsafe impl Send for ExportMetalCommandQueueInfoEXT {}
7790unsafe impl Sync for ExportMetalCommandQueueInfoEXT {}
7791
7792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html>
7793#[repr(C)]
7794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7795pub struct ExportMetalDeviceInfoEXT {
7796    pub s_type: StructureType,
7797    pub next: *const c_void,
7798    pub mtl_device: MTLDevice_id,
7799}
7800
7801impl Default for ExportMetalDeviceInfoEXT {
7802    #[inline]
7803    fn default() -> Self {
7804        Self {
7805            s_type: StructureType::EXPORT_METAL_DEVICE_INFO_EXT,
7806            next: ptr::null(),
7807            mtl_device: ptr::null_mut(),
7808        }
7809    }
7810}
7811
7812unsafe impl Send for ExportMetalDeviceInfoEXT {}
7813unsafe impl Sync for ExportMetalDeviceInfoEXT {}
7814
7815/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html>
7816#[repr(C)]
7817#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7818pub struct ExportMetalIOSurfaceInfoEXT {
7819    pub s_type: StructureType,
7820    pub next: *const c_void,
7821    pub image: Image,
7822    pub io_surface: IOSurfaceRef,
7823}
7824
7825impl Default for ExportMetalIOSurfaceInfoEXT {
7826    #[inline]
7827    fn default() -> Self {
7828        Self {
7829            s_type: StructureType::EXPORT_METAL_IO_SURFACE_INFO_EXT,
7830            next: ptr::null(),
7831            image: Image::default(),
7832            io_surface: ptr::null_mut(),
7833        }
7834    }
7835}
7836
7837unsafe impl Send for ExportMetalIOSurfaceInfoEXT {}
7838unsafe impl Sync for ExportMetalIOSurfaceInfoEXT {}
7839
7840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html>
7841#[repr(C)]
7842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7843pub struct ExportMetalObjectCreateInfoEXT {
7844    pub s_type: StructureType,
7845    pub next: *const c_void,
7846    pub export_object_type: ExportMetalObjectTypeFlagsEXT,
7847}
7848
7849impl Default for ExportMetalObjectCreateInfoEXT {
7850    #[inline]
7851    fn default() -> Self {
7852        Self {
7853            s_type: StructureType::EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
7854            next: ptr::null(),
7855            export_object_type: ExportMetalObjectTypeFlagsEXT::default(),
7856        }
7857    }
7858}
7859
7860unsafe impl Send for ExportMetalObjectCreateInfoEXT {}
7861unsafe impl Sync for ExportMetalObjectCreateInfoEXT {}
7862
7863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html>
7864#[repr(C)]
7865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7866pub struct ExportMetalObjectsInfoEXT {
7867    pub s_type: StructureType,
7868    pub next: *const c_void,
7869}
7870
7871impl Default for ExportMetalObjectsInfoEXT {
7872    #[inline]
7873    fn default() -> Self {
7874        Self {
7875            s_type: StructureType::EXPORT_METAL_OBJECTS_INFO_EXT,
7876            next: ptr::null(),
7877        }
7878    }
7879}
7880
7881unsafe impl Send for ExportMetalObjectsInfoEXT {}
7882unsafe impl Sync for ExportMetalObjectsInfoEXT {}
7883
7884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html>
7885#[repr(C)]
7886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7887pub struct ExportMetalSharedEventInfoEXT {
7888    pub s_type: StructureType,
7889    pub next: *const c_void,
7890    pub semaphore: Semaphore,
7891    pub event: Event,
7892    pub mtl_shared_event: MTLSharedEvent_id,
7893}
7894
7895impl Default for ExportMetalSharedEventInfoEXT {
7896    #[inline]
7897    fn default() -> Self {
7898        Self {
7899            s_type: StructureType::EXPORT_METAL_SHARED_EVENT_INFO_EXT,
7900            next: ptr::null(),
7901            semaphore: Semaphore::default(),
7902            event: Event::default(),
7903            mtl_shared_event: ptr::null_mut(),
7904        }
7905    }
7906}
7907
7908unsafe impl Send for ExportMetalSharedEventInfoEXT {}
7909unsafe impl Sync for ExportMetalSharedEventInfoEXT {}
7910
7911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html>
7912#[repr(C)]
7913#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7914pub struct ExportMetalTextureInfoEXT {
7915    pub s_type: StructureType,
7916    pub next: *const c_void,
7917    pub image: Image,
7918    pub image_view: ImageView,
7919    pub buffer_view: BufferView,
7920    pub plane: ImageAspectFlags,
7921    pub mtl_texture: MTLTexture_id,
7922}
7923
7924impl Default for ExportMetalTextureInfoEXT {
7925    #[inline]
7926    fn default() -> Self {
7927        Self {
7928            s_type: StructureType::EXPORT_METAL_TEXTURE_INFO_EXT,
7929            next: ptr::null(),
7930            image: Image::default(),
7931            image_view: ImageView::default(),
7932            buffer_view: BufferView::default(),
7933            plane: ImageAspectFlags::default(),
7934            mtl_texture: ptr::null_mut(),
7935        }
7936    }
7937}
7938
7939unsafe impl Send for ExportMetalTextureInfoEXT {}
7940unsafe impl Sync for ExportMetalTextureInfoEXT {}
7941
7942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html>
7943#[repr(C)]
7944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7945pub struct ExportSemaphoreCreateInfo {
7946    pub s_type: StructureType,
7947    pub next: *const c_void,
7948    pub handle_types: ExternalSemaphoreHandleTypeFlags,
7949}
7950
7951impl Default for ExportSemaphoreCreateInfo {
7952    #[inline]
7953    fn default() -> Self {
7954        Self {
7955            s_type: StructureType::EXPORT_SEMAPHORE_CREATE_INFO,
7956            next: ptr::null(),
7957            handle_types: ExternalSemaphoreHandleTypeFlags::default(),
7958        }
7959    }
7960}
7961
7962unsafe impl Send for ExportSemaphoreCreateInfo {}
7963unsafe impl Sync for ExportSemaphoreCreateInfo {}
7964
7965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreSciSyncInfoNV.html>
7966#[repr(C)]
7967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7968pub struct ExportSemaphoreSciSyncInfoNV {
7969    pub s_type: StructureType,
7970    pub next: *const c_void,
7971    pub attributes: NvSciSyncAttrList,
7972}
7973
7974impl Default for ExportSemaphoreSciSyncInfoNV {
7975    #[inline]
7976    fn default() -> Self {
7977        Self {
7978            s_type: StructureType::EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
7979            next: ptr::null(),
7980            attributes: ptr::null_mut(),
7981        }
7982    }
7983}
7984
7985unsafe impl Send for ExportSemaphoreSciSyncInfoNV {}
7986unsafe impl Sync for ExportSemaphoreSciSyncInfoNV {}
7987
7988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html>
7989#[repr(C)]
7990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
7991pub struct ExportSemaphoreWin32HandleInfoKHR {
7992    pub s_type: StructureType,
7993    pub next: *const c_void,
7994    pub attributes: *const SECURITY_ATTRIBUTES,
7995    pub dw_access: DWORD,
7996    pub name: LPCWSTR,
7997}
7998
7999impl Default for ExportSemaphoreWin32HandleInfoKHR {
8000    #[inline]
8001    fn default() -> Self {
8002        Self {
8003            s_type: StructureType::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
8004            next: ptr::null(),
8005            attributes: ptr::null(),
8006            dw_access: DWORD::default(),
8007            name: ptr::null_mut(),
8008        }
8009    }
8010}
8011
8012unsafe impl Send for ExportSemaphoreWin32HandleInfoKHR {}
8013unsafe impl Sync for ExportSemaphoreWin32HandleInfoKHR {}
8014
8015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtensionProperties.html>
8016#[repr(C)]
8017#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8018pub struct ExtensionProperties {
8019    pub extension_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
8020    pub spec_version: u32,
8021}
8022
8023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent2D.html>
8024#[repr(C)]
8025#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8026pub struct Extent2D {
8027    pub width: u32,
8028    pub height: u32,
8029}
8030
8031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExtent3D.html>
8032#[repr(C)]
8033#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8034pub struct Extent3D {
8035    pub width: u32,
8036    pub height: u32,
8037    pub depth: u32,
8038}
8039
8040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferProperties.html>
8041#[repr(C)]
8042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8043pub struct ExternalBufferProperties {
8044    pub s_type: StructureType,
8045    pub next: *mut c_void,
8046    pub external_memory_properties: ExternalMemoryProperties,
8047}
8048
8049impl Default for ExternalBufferProperties {
8050    #[inline]
8051    fn default() -> Self {
8052        Self {
8053            s_type: StructureType::EXTERNAL_BUFFER_PROPERTIES,
8054            next: ptr::null_mut(),
8055            external_memory_properties: ExternalMemoryProperties::default(),
8056        }
8057    }
8058}
8059
8060unsafe impl Send for ExternalBufferProperties {}
8061unsafe impl Sync for ExternalBufferProperties {}
8062
8063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueCreateInfoNV.html>
8064#[repr(C)]
8065#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8066pub struct ExternalComputeQueueCreateInfoNV {
8067    pub s_type: StructureType,
8068    pub next: *const c_void,
8069    pub preferred_queue: Queue,
8070}
8071
8072impl Default for ExternalComputeQueueCreateInfoNV {
8073    #[inline]
8074    fn default() -> Self {
8075        Self {
8076            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV,
8077            next: ptr::null(),
8078            preferred_queue: Queue::default(),
8079        }
8080    }
8081}
8082
8083unsafe impl Send for ExternalComputeQueueCreateInfoNV {}
8084unsafe impl Sync for ExternalComputeQueueCreateInfoNV {}
8085
8086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDataParamsNV.html>
8087#[repr(C)]
8088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8089pub struct ExternalComputeQueueDataParamsNV {
8090    pub s_type: StructureType,
8091    pub next: *const c_void,
8092    pub device_index: u32,
8093}
8094
8095impl Default for ExternalComputeQueueDataParamsNV {
8096    #[inline]
8097    fn default() -> Self {
8098        Self {
8099            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV,
8100            next: ptr::null(),
8101            device_index: u32::default(),
8102        }
8103    }
8104}
8105
8106unsafe impl Send for ExternalComputeQueueDataParamsNV {}
8107unsafe impl Sync for ExternalComputeQueueDataParamsNV {}
8108
8109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalComputeQueueDeviceCreateInfoNV.html>
8110#[repr(C)]
8111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8112pub struct ExternalComputeQueueDeviceCreateInfoNV {
8113    pub s_type: StructureType,
8114    pub next: *const c_void,
8115    pub reserved_external_queues: u32,
8116}
8117
8118impl Default for ExternalComputeQueueDeviceCreateInfoNV {
8119    #[inline]
8120    fn default() -> Self {
8121        Self {
8122            s_type: StructureType::EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV,
8123            next: ptr::null(),
8124            reserved_external_queues: u32::default(),
8125        }
8126    }
8127}
8128
8129unsafe impl Send for ExternalComputeQueueDeviceCreateInfoNV {}
8130unsafe impl Sync for ExternalComputeQueueDeviceCreateInfoNV {}
8131
8132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFenceProperties.html>
8133#[repr(C)]
8134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8135pub struct ExternalFenceProperties {
8136    pub s_type: StructureType,
8137    pub next: *mut c_void,
8138    pub export_from_imported_handle_types: ExternalFenceHandleTypeFlags,
8139    pub compatible_handle_types: ExternalFenceHandleTypeFlags,
8140    pub external_fence_features: ExternalFenceFeatureFlags,
8141}
8142
8143impl Default for ExternalFenceProperties {
8144    #[inline]
8145    fn default() -> Self {
8146        Self {
8147            s_type: StructureType::EXTERNAL_FENCE_PROPERTIES,
8148            next: ptr::null_mut(),
8149            export_from_imported_handle_types: ExternalFenceHandleTypeFlags::default(),
8150            compatible_handle_types: ExternalFenceHandleTypeFlags::default(),
8151            external_fence_features: ExternalFenceFeatureFlags::default(),
8152        }
8153    }
8154}
8155
8156unsafe impl Send for ExternalFenceProperties {}
8157unsafe impl Sync for ExternalFenceProperties {}
8158
8159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html>
8160#[repr(C)]
8161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8162pub struct ExternalFormatANDROID {
8163    pub s_type: StructureType,
8164    pub next: *mut c_void,
8165    pub external_format: u64,
8166}
8167
8168impl Default for ExternalFormatANDROID {
8169    #[inline]
8170    fn default() -> Self {
8171        Self {
8172            s_type: StructureType::EXTERNAL_FORMAT_ANDROID,
8173            next: ptr::null_mut(),
8174            external_format: u64::default(),
8175        }
8176    }
8177}
8178
8179unsafe impl Send for ExternalFormatANDROID {}
8180unsafe impl Sync for ExternalFormatANDROID {}
8181
8182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatOHOS.html>
8183#[repr(C)]
8184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8185pub struct ExternalFormatOHOS {
8186    pub s_type: StructureType,
8187    pub next: *mut c_void,
8188    pub external_format: u64,
8189}
8190
8191impl Default for ExternalFormatOHOS {
8192    #[inline]
8193    fn default() -> Self {
8194        Self {
8195            s_type: StructureType::EXTERNAL_FORMAT_OHOS,
8196            next: ptr::null_mut(),
8197            external_format: u64::default(),
8198        }
8199    }
8200}
8201
8202unsafe impl Send for ExternalFormatOHOS {}
8203unsafe impl Sync for ExternalFormatOHOS {}
8204
8205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFormatQNX.html>
8206#[repr(C)]
8207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8208pub struct ExternalFormatQNX {
8209    pub s_type: StructureType,
8210    pub next: *mut c_void,
8211    pub external_format: u64,
8212}
8213
8214impl Default for ExternalFormatQNX {
8215    #[inline]
8216    fn default() -> Self {
8217        Self {
8218            s_type: StructureType::EXTERNAL_FORMAT_QNX,
8219            next: ptr::null_mut(),
8220            external_format: u64::default(),
8221        }
8222    }
8223}
8224
8225unsafe impl Send for ExternalFormatQNX {}
8226unsafe impl Sync for ExternalFormatQNX {}
8227
8228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html>
8229#[repr(C)]
8230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8231pub struct ExternalImageFormatProperties {
8232    pub s_type: StructureType,
8233    pub next: *mut c_void,
8234    pub external_memory_properties: ExternalMemoryProperties,
8235}
8236
8237impl Default for ExternalImageFormatProperties {
8238    #[inline]
8239    fn default() -> Self {
8240        Self {
8241            s_type: StructureType::EXTERNAL_IMAGE_FORMAT_PROPERTIES,
8242            next: ptr::null_mut(),
8243            external_memory_properties: ExternalMemoryProperties::default(),
8244        }
8245    }
8246}
8247
8248unsafe impl Send for ExternalImageFormatProperties {}
8249unsafe impl Sync for ExternalImageFormatProperties {}
8250
8251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html>
8252#[repr(C)]
8253#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8254pub struct ExternalImageFormatPropertiesNV {
8255    pub image_format_properties: ImageFormatProperties,
8256    pub external_memory_features: ExternalMemoryFeatureFlagsNV,
8257    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlagsNV,
8258    pub compatible_handle_types: ExternalMemoryHandleTypeFlagsNV,
8259}
8260
8261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html>
8262#[repr(C)]
8263#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8264pub struct ExternalMemoryAcquireUnmodifiedEXT {
8265    pub s_type: StructureType,
8266    pub next: *const c_void,
8267    pub acquire_unmodified_memory: Bool32,
8268}
8269
8270impl Default for ExternalMemoryAcquireUnmodifiedEXT {
8271    #[inline]
8272    fn default() -> Self {
8273        Self {
8274            s_type: StructureType::EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT,
8275            next: ptr::null(),
8276            acquire_unmodified_memory: Bool32::default(),
8277        }
8278    }
8279}
8280
8281unsafe impl Send for ExternalMemoryAcquireUnmodifiedEXT {}
8282unsafe impl Sync for ExternalMemoryAcquireUnmodifiedEXT {}
8283
8284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html>
8285#[repr(C)]
8286#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8287pub struct ExternalMemoryBufferCreateInfo {
8288    pub s_type: StructureType,
8289    pub next: *const c_void,
8290    pub handle_types: ExternalMemoryHandleTypeFlags,
8291}
8292
8293impl Default for ExternalMemoryBufferCreateInfo {
8294    #[inline]
8295    fn default() -> Self {
8296        Self {
8297            s_type: StructureType::EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
8298            next: ptr::null(),
8299            handle_types: ExternalMemoryHandleTypeFlags::default(),
8300        }
8301    }
8302}
8303
8304unsafe impl Send for ExternalMemoryBufferCreateInfo {}
8305unsafe impl Sync for ExternalMemoryBufferCreateInfo {}
8306
8307/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html>
8308#[repr(C)]
8309#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8310pub struct ExternalMemoryImageCreateInfo {
8311    pub s_type: StructureType,
8312    pub next: *const c_void,
8313    pub handle_types: ExternalMemoryHandleTypeFlags,
8314}
8315
8316impl Default for ExternalMemoryImageCreateInfo {
8317    #[inline]
8318    fn default() -> Self {
8319        Self {
8320            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
8321            next: ptr::null(),
8322            handle_types: ExternalMemoryHandleTypeFlags::default(),
8323        }
8324    }
8325}
8326
8327unsafe impl Send for ExternalMemoryImageCreateInfo {}
8328unsafe impl Sync for ExternalMemoryImageCreateInfo {}
8329
8330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html>
8331#[repr(C)]
8332#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8333pub struct ExternalMemoryImageCreateInfoNV {
8334    pub s_type: StructureType,
8335    pub next: *const c_void,
8336    pub handle_types: ExternalMemoryHandleTypeFlagsNV,
8337}
8338
8339impl Default for ExternalMemoryImageCreateInfoNV {
8340    #[inline]
8341    fn default() -> Self {
8342        Self {
8343            s_type: StructureType::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
8344            next: ptr::null(),
8345            handle_types: ExternalMemoryHandleTypeFlagsNV::default(),
8346        }
8347    }
8348}
8349
8350unsafe impl Send for ExternalMemoryImageCreateInfoNV {}
8351unsafe impl Sync for ExternalMemoryImageCreateInfoNV {}
8352
8353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html>
8354#[repr(C)]
8355#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8356pub struct ExternalMemoryProperties {
8357    pub external_memory_features: ExternalMemoryFeatureFlags,
8358    pub export_from_imported_handle_types: ExternalMemoryHandleTypeFlags,
8359    pub compatible_handle_types: ExternalMemoryHandleTypeFlags,
8360}
8361
8362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryTensorCreateInfoARM.html>
8363#[repr(C)]
8364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8365pub struct ExternalMemoryTensorCreateInfoARM {
8366    pub s_type: StructureType,
8367    pub next: *const c_void,
8368    pub handle_types: ExternalMemoryHandleTypeFlags,
8369}
8370
8371impl Default for ExternalMemoryTensorCreateInfoARM {
8372    #[inline]
8373    fn default() -> Self {
8374        Self {
8375            s_type: StructureType::EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM,
8376            next: ptr::null(),
8377            handle_types: ExternalMemoryHandleTypeFlags::default(),
8378        }
8379    }
8380}
8381
8382unsafe impl Send for ExternalMemoryTensorCreateInfoARM {}
8383unsafe impl Sync for ExternalMemoryTensorCreateInfoARM {}
8384
8385/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html>
8386#[repr(C)]
8387#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8388pub struct ExternalSemaphoreProperties {
8389    pub s_type: StructureType,
8390    pub next: *mut c_void,
8391    pub export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags,
8392    pub compatible_handle_types: ExternalSemaphoreHandleTypeFlags,
8393    pub external_semaphore_features: ExternalSemaphoreFeatureFlags,
8394}
8395
8396impl Default for ExternalSemaphoreProperties {
8397    #[inline]
8398    fn default() -> Self {
8399        Self {
8400            s_type: StructureType::EXTERNAL_SEMAPHORE_PROPERTIES,
8401            next: ptr::null_mut(),
8402            export_from_imported_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8403            compatible_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
8404            external_semaphore_features: ExternalSemaphoreFeatureFlags::default(),
8405        }
8406    }
8407}
8408
8409unsafe impl Send for ExternalSemaphoreProperties {}
8410unsafe impl Sync for ExternalSemaphoreProperties {}
8411
8412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalTensorPropertiesARM.html>
8413#[repr(C)]
8414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8415pub struct ExternalTensorPropertiesARM {
8416    pub s_type: StructureType,
8417    pub next: *const c_void,
8418    pub external_memory_properties: ExternalMemoryProperties,
8419}
8420
8421impl Default for ExternalTensorPropertiesARM {
8422    #[inline]
8423    fn default() -> Self {
8424        Self {
8425            s_type: StructureType::EXTERNAL_TENSOR_PROPERTIES_ARM,
8426            next: ptr::null(),
8427            external_memory_properties: ExternalMemoryProperties::default(),
8428        }
8429    }
8430}
8431
8432unsafe impl Send for ExternalTensorPropertiesARM {}
8433unsafe impl Sync for ExternalTensorPropertiesARM {}
8434
8435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceCreateInfo.html>
8436#[repr(C)]
8437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8438pub struct FenceCreateInfo {
8439    pub s_type: StructureType,
8440    pub next: *const c_void,
8441    pub flags: FenceCreateFlags,
8442}
8443
8444impl Default for FenceCreateInfo {
8445    #[inline]
8446    fn default() -> Self {
8447        Self {
8448            s_type: StructureType::FENCE_CREATE_INFO,
8449            next: ptr::null(),
8450            flags: FenceCreateFlags::default(),
8451        }
8452    }
8453}
8454
8455unsafe impl Send for FenceCreateInfo {}
8456unsafe impl Sync for FenceCreateInfo {}
8457
8458/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html>
8459#[repr(C)]
8460#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8461pub struct FenceGetFdInfoKHR {
8462    pub s_type: StructureType,
8463    pub next: *const c_void,
8464    pub fence: Fence,
8465    pub handle_type: ExternalFenceHandleTypeFlags,
8466}
8467
8468impl Default for FenceGetFdInfoKHR {
8469    #[inline]
8470    fn default() -> Self {
8471        Self {
8472            s_type: StructureType::FENCE_GET_FD_INFO_KHR,
8473            next: ptr::null(),
8474            fence: Fence::default(),
8475            handle_type: ExternalFenceHandleTypeFlags::default(),
8476        }
8477    }
8478}
8479
8480unsafe impl Send for FenceGetFdInfoKHR {}
8481unsafe impl Sync for FenceGetFdInfoKHR {}
8482
8483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetSciSyncInfoNV.html>
8484#[repr(C)]
8485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8486pub struct FenceGetSciSyncInfoNV {
8487    pub s_type: StructureType,
8488    pub next: *const c_void,
8489    pub fence: Fence,
8490    pub handle_type: ExternalFenceHandleTypeFlags,
8491}
8492
8493impl Default for FenceGetSciSyncInfoNV {
8494    #[inline]
8495    fn default() -> Self {
8496        Self {
8497            s_type: StructureType::FENCE_GET_SCI_SYNC_INFO_NV,
8498            next: ptr::null(),
8499            fence: Fence::default(),
8500            handle_type: ExternalFenceHandleTypeFlags::default(),
8501        }
8502    }
8503}
8504
8505unsafe impl Send for FenceGetSciSyncInfoNV {}
8506unsafe impl Sync for FenceGetSciSyncInfoNV {}
8507
8508/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html>
8509#[repr(C)]
8510#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8511pub struct FenceGetWin32HandleInfoKHR {
8512    pub s_type: StructureType,
8513    pub next: *const c_void,
8514    pub fence: Fence,
8515    pub handle_type: ExternalFenceHandleTypeFlags,
8516}
8517
8518impl Default for FenceGetWin32HandleInfoKHR {
8519    #[inline]
8520    fn default() -> Self {
8521        Self {
8522            s_type: StructureType::FENCE_GET_WIN32_HANDLE_INFO_KHR,
8523            next: ptr::null(),
8524            fence: Fence::default(),
8525            handle_type: ExternalFenceHandleTypeFlags::default(),
8526        }
8527    }
8528}
8529
8530unsafe impl Send for FenceGetWin32HandleInfoKHR {}
8531unsafe impl Sync for FenceGetWin32HandleInfoKHR {}
8532
8533/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html>
8534#[repr(C)]
8535#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8536pub struct FilterCubicImageViewImageFormatPropertiesEXT {
8537    pub s_type: StructureType,
8538    pub next: *mut c_void,
8539    pub filter_cubic: Bool32,
8540    pub filter_cubic_minmax: Bool32,
8541}
8542
8543impl Default for FilterCubicImageViewImageFormatPropertiesEXT {
8544    #[inline]
8545    fn default() -> Self {
8546        Self {
8547            s_type: StructureType::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
8548            next: ptr::null_mut(),
8549            filter_cubic: Bool32::default(),
8550            filter_cubic_minmax: Bool32::default(),
8551        }
8552    }
8553}
8554
8555unsafe impl Send for FilterCubicImageViewImageFormatPropertiesEXT {}
8556unsafe impl Sync for FilterCubicImageViewImageFormatPropertiesEXT {}
8557
8558/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties.html>
8559#[repr(C)]
8560#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
8561pub struct FormatProperties {
8562    pub linear_tiling_features: FormatFeatureFlags,
8563    pub optimal_tiling_features: FormatFeatureFlags,
8564    pub buffer_features: FormatFeatureFlags,
8565}
8566
8567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2.html>
8568#[repr(C)]
8569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8570pub struct FormatProperties2 {
8571    pub s_type: StructureType,
8572    pub next: *mut c_void,
8573    pub format_properties: FormatProperties,
8574}
8575
8576impl Default for FormatProperties2 {
8577    #[inline]
8578    fn default() -> Self {
8579        Self {
8580            s_type: StructureType::FORMAT_PROPERTIES_2,
8581            next: ptr::null_mut(),
8582            format_properties: FormatProperties::default(),
8583        }
8584    }
8585}
8586
8587unsafe impl Send for FormatProperties2 {}
8588unsafe impl Sync for FormatProperties2 {}
8589
8590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3.html>
8591#[repr(C)]
8592#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8593pub struct FormatProperties3 {
8594    pub s_type: StructureType,
8595    pub next: *mut c_void,
8596    pub linear_tiling_features: FormatFeatureFlags2,
8597    pub optimal_tiling_features: FormatFeatureFlags2,
8598    pub buffer_features: FormatFeatureFlags2,
8599}
8600
8601impl Default for FormatProperties3 {
8602    #[inline]
8603    fn default() -> Self {
8604        Self {
8605            s_type: StructureType::FORMAT_PROPERTIES_3,
8606            next: ptr::null_mut(),
8607            linear_tiling_features: FormatFeatureFlags2::default(),
8608            optimal_tiling_features: FormatFeatureFlags2::default(),
8609            buffer_features: FormatFeatureFlags2::default(),
8610        }
8611    }
8612}
8613
8614unsafe impl Send for FormatProperties3 {}
8615unsafe impl Sync for FormatProperties3 {}
8616
8617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html>
8618#[repr(C)]
8619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8620pub struct FragmentShadingRateAttachmentInfoKHR {
8621    pub s_type: StructureType,
8622    pub next: *const c_void,
8623    pub fragment_shading_rate_attachment: *const AttachmentReference2,
8624    pub shading_rate_attachment_texel_size: Extent2D,
8625}
8626
8627impl Default for FragmentShadingRateAttachmentInfoKHR {
8628    #[inline]
8629    fn default() -> Self {
8630        Self {
8631            s_type: StructureType::FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
8632            next: ptr::null(),
8633            fragment_shading_rate_attachment: ptr::null(),
8634            shading_rate_attachment_texel_size: Extent2D::default(),
8635        }
8636    }
8637}
8638
8639unsafe impl Send for FragmentShadingRateAttachmentInfoKHR {}
8640unsafe impl Sync for FragmentShadingRateAttachmentInfoKHR {}
8641
8642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html>
8643#[repr(C)]
8644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8645pub struct FrameBoundaryEXT {
8646    pub s_type: StructureType,
8647    pub next: *const c_void,
8648    pub flags: FrameBoundaryFlagsEXT,
8649    pub frame_id: u64,
8650    pub image_count: u32,
8651    pub images: *const Image,
8652    pub buffer_count: u32,
8653    pub buffers: *const Buffer,
8654    pub tag_name: u64,
8655    pub tag_size: usize,
8656    pub tag: *const c_void,
8657}
8658
8659impl Default for FrameBoundaryEXT {
8660    #[inline]
8661    fn default() -> Self {
8662        Self {
8663            s_type: StructureType::FRAME_BOUNDARY_EXT,
8664            next: ptr::null(),
8665            flags: FrameBoundaryFlagsEXT::default(),
8666            frame_id: u64::default(),
8667            image_count: u32::default(),
8668            images: ptr::null(),
8669            buffer_count: u32::default(),
8670            buffers: ptr::null(),
8671            tag_name: u64::default(),
8672            tag_size: usize::default(),
8673            tag: ptr::null(),
8674        }
8675    }
8676}
8677
8678unsafe impl Send for FrameBoundaryEXT {}
8679unsafe impl Sync for FrameBoundaryEXT {}
8680
8681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFrameBoundaryTensorsARM.html>
8682#[repr(C)]
8683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8684pub struct FrameBoundaryTensorsARM {
8685    pub s_type: StructureType,
8686    pub next: *const c_void,
8687    pub tensor_count: u32,
8688    pub tensors: *const TensorARM,
8689}
8690
8691impl Default for FrameBoundaryTensorsARM {
8692    #[inline]
8693    fn default() -> Self {
8694        Self {
8695            s_type: StructureType::FRAME_BOUNDARY_TENSORS_ARM,
8696            next: ptr::null(),
8697            tensor_count: u32::default(),
8698            tensors: ptr::null(),
8699        }
8700    }
8701}
8702
8703unsafe impl Send for FrameBoundaryTensorsARM {}
8704unsafe impl Sync for FrameBoundaryTensorsARM {}
8705
8706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html>
8707#[repr(C)]
8708#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8709pub struct FramebufferAttachmentImageInfo {
8710    pub s_type: StructureType,
8711    pub next: *const c_void,
8712    pub flags: ImageCreateFlags,
8713    pub usage: ImageUsageFlags,
8714    pub width: u32,
8715    pub height: u32,
8716    pub layer_count: u32,
8717    pub view_format_count: u32,
8718    pub view_formats: *const Format,
8719}
8720
8721impl Default for FramebufferAttachmentImageInfo {
8722    #[inline]
8723    fn default() -> Self {
8724        Self {
8725            s_type: StructureType::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
8726            next: ptr::null(),
8727            flags: ImageCreateFlags::default(),
8728            usage: ImageUsageFlags::default(),
8729            width: u32::default(),
8730            height: u32::default(),
8731            layer_count: u32::default(),
8732            view_format_count: u32::default(),
8733            view_formats: ptr::null(),
8734        }
8735    }
8736}
8737
8738unsafe impl Send for FramebufferAttachmentImageInfo {}
8739unsafe impl Sync for FramebufferAttachmentImageInfo {}
8740
8741/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html>
8742#[repr(C)]
8743#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8744pub struct FramebufferAttachmentsCreateInfo {
8745    pub s_type: StructureType,
8746    pub next: *const c_void,
8747    pub attachment_image_info_count: u32,
8748    pub attachment_image_infos: *const FramebufferAttachmentImageInfo,
8749}
8750
8751impl Default for FramebufferAttachmentsCreateInfo {
8752    #[inline]
8753    fn default() -> Self {
8754        Self {
8755            s_type: StructureType::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
8756            next: ptr::null(),
8757            attachment_image_info_count: u32::default(),
8758            attachment_image_infos: ptr::null(),
8759        }
8760    }
8761}
8762
8763unsafe impl Send for FramebufferAttachmentsCreateInfo {}
8764unsafe impl Sync for FramebufferAttachmentsCreateInfo {}
8765
8766/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html>
8767#[repr(C)]
8768#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8769pub struct FramebufferCreateInfo {
8770    pub s_type: StructureType,
8771    pub next: *const c_void,
8772    pub flags: FramebufferCreateFlags,
8773    pub render_pass: RenderPass,
8774    pub attachment_count: u32,
8775    pub attachments: *const ImageView,
8776    pub width: u32,
8777    pub height: u32,
8778    pub layers: u32,
8779}
8780
8781impl Default for FramebufferCreateInfo {
8782    #[inline]
8783    fn default() -> Self {
8784        Self {
8785            s_type: StructureType::FRAMEBUFFER_CREATE_INFO,
8786            next: ptr::null(),
8787            flags: FramebufferCreateFlags::default(),
8788            render_pass: RenderPass::default(),
8789            attachment_count: u32::default(),
8790            attachments: ptr::null(),
8791            width: u32::default(),
8792            height: u32::default(),
8793            layers: u32::default(),
8794        }
8795    }
8796}
8797
8798unsafe impl Send for FramebufferCreateInfo {}
8799unsafe impl Sync for FramebufferCreateInfo {}
8800
8801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html>
8802#[repr(C)]
8803#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8804pub struct FramebufferMixedSamplesCombinationNV {
8805    pub s_type: StructureType,
8806    pub next: *mut c_void,
8807    pub coverage_reduction_mode: CoverageReductionModeNV,
8808    pub rasterization_samples: SampleCountFlags,
8809    pub depth_stencil_samples: SampleCountFlags,
8810    pub color_samples: SampleCountFlags,
8811}
8812
8813impl Default for FramebufferMixedSamplesCombinationNV {
8814    #[inline]
8815    fn default() -> Self {
8816        Self {
8817            s_type: StructureType::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
8818            next: ptr::null_mut(),
8819            coverage_reduction_mode: CoverageReductionModeNV::default(),
8820            rasterization_samples: SampleCountFlags::default(),
8821            depth_stencil_samples: SampleCountFlags::default(),
8822            color_samples: SampleCountFlags::default(),
8823        }
8824    }
8825}
8826
8827unsafe impl Send for FramebufferMixedSamplesCombinationNV {}
8828unsafe impl Sync for FramebufferMixedSamplesCombinationNV {}
8829
8830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html>
8831#[repr(C)]
8832#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8833pub struct GeneratedCommandsInfoEXT {
8834    pub s_type: StructureType,
8835    pub next: *const c_void,
8836    pub shader_stages: ShaderStageFlags,
8837    pub indirect_execution_set: IndirectExecutionSetEXT,
8838    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8839    pub indirect_address: DeviceAddress,
8840    pub indirect_address_size: DeviceSize,
8841    pub preprocess_address: DeviceAddress,
8842    pub preprocess_size: DeviceSize,
8843    pub max_sequence_count: u32,
8844    pub sequence_count_address: DeviceAddress,
8845    pub max_draw_count: u32,
8846}
8847
8848impl Default for GeneratedCommandsInfoEXT {
8849    #[inline]
8850    fn default() -> Self {
8851        Self {
8852            s_type: StructureType::GENERATED_COMMANDS_INFO_EXT,
8853            next: ptr::null(),
8854            shader_stages: ShaderStageFlags::default(),
8855            indirect_execution_set: IndirectExecutionSetEXT::default(),
8856            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8857            indirect_address: DeviceAddress::default(),
8858            indirect_address_size: DeviceSize::default(),
8859            preprocess_address: DeviceAddress::default(),
8860            preprocess_size: DeviceSize::default(),
8861            max_sequence_count: u32::default(),
8862            sequence_count_address: DeviceAddress::default(),
8863            max_draw_count: u32::default(),
8864        }
8865    }
8866}
8867
8868unsafe impl Send for GeneratedCommandsInfoEXT {}
8869unsafe impl Sync for GeneratedCommandsInfoEXT {}
8870
8871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html>
8872#[repr(C)]
8873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8874pub struct GeneratedCommandsInfoNV {
8875    pub s_type: StructureType,
8876    pub next: *const c_void,
8877    pub pipeline_bind_point: PipelineBindPoint,
8878    pub pipeline: Pipeline,
8879    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8880    pub stream_count: u32,
8881    pub streams: *const IndirectCommandsStreamNV,
8882    pub sequences_count: u32,
8883    pub preprocess_buffer: Buffer,
8884    pub preprocess_offset: DeviceSize,
8885    pub preprocess_size: DeviceSize,
8886    pub sequences_count_buffer: Buffer,
8887    pub sequences_count_offset: DeviceSize,
8888    pub sequences_index_buffer: Buffer,
8889    pub sequences_index_offset: DeviceSize,
8890}
8891
8892impl Default for GeneratedCommandsInfoNV {
8893    #[inline]
8894    fn default() -> Self {
8895        Self {
8896            s_type: StructureType::GENERATED_COMMANDS_INFO_NV,
8897            next: ptr::null(),
8898            pipeline_bind_point: PipelineBindPoint::default(),
8899            pipeline: Pipeline::default(),
8900            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8901            stream_count: u32::default(),
8902            streams: ptr::null(),
8903            sequences_count: u32::default(),
8904            preprocess_buffer: Buffer::default(),
8905            preprocess_offset: DeviceSize::default(),
8906            preprocess_size: DeviceSize::default(),
8907            sequences_count_buffer: Buffer::default(),
8908            sequences_count_offset: DeviceSize::default(),
8909            sequences_index_buffer: Buffer::default(),
8910            sequences_index_offset: DeviceSize::default(),
8911        }
8912    }
8913}
8914
8915unsafe impl Send for GeneratedCommandsInfoNV {}
8916unsafe impl Sync for GeneratedCommandsInfoNV {}
8917
8918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html>
8919#[repr(C)]
8920#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8921pub struct GeneratedCommandsMemoryRequirementsInfoEXT {
8922    pub s_type: StructureType,
8923    pub next: *const c_void,
8924    pub indirect_execution_set: IndirectExecutionSetEXT,
8925    pub indirect_commands_layout: IndirectCommandsLayoutEXT,
8926    pub max_sequence_count: u32,
8927    pub max_draw_count: u32,
8928}
8929
8930impl Default for GeneratedCommandsMemoryRequirementsInfoEXT {
8931    #[inline]
8932    fn default() -> Self {
8933        Self {
8934            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT,
8935            next: ptr::null(),
8936            indirect_execution_set: IndirectExecutionSetEXT::default(),
8937            indirect_commands_layout: IndirectCommandsLayoutEXT::default(),
8938            max_sequence_count: u32::default(),
8939            max_draw_count: u32::default(),
8940        }
8941    }
8942}
8943
8944unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoEXT {}
8945unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoEXT {}
8946
8947/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html>
8948#[repr(C)]
8949#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8950pub struct GeneratedCommandsMemoryRequirementsInfoNV {
8951    pub s_type: StructureType,
8952    pub next: *const c_void,
8953    pub pipeline_bind_point: PipelineBindPoint,
8954    pub pipeline: Pipeline,
8955    pub indirect_commands_layout: IndirectCommandsLayoutNV,
8956    pub max_sequences_count: u32,
8957}
8958
8959impl Default for GeneratedCommandsMemoryRequirementsInfoNV {
8960    #[inline]
8961    fn default() -> Self {
8962        Self {
8963            s_type: StructureType::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
8964            next: ptr::null(),
8965            pipeline_bind_point: PipelineBindPoint::default(),
8966            pipeline: Pipeline::default(),
8967            indirect_commands_layout: IndirectCommandsLayoutNV::default(),
8968            max_sequences_count: u32::default(),
8969        }
8970    }
8971}
8972
8973unsafe impl Send for GeneratedCommandsMemoryRequirementsInfoNV {}
8974unsafe impl Sync for GeneratedCommandsMemoryRequirementsInfoNV {}
8975
8976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html>
8977#[repr(C)]
8978#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
8979pub struct GeneratedCommandsPipelineInfoEXT {
8980    pub s_type: StructureType,
8981    pub next: *mut c_void,
8982    pub pipeline: Pipeline,
8983}
8984
8985impl Default for GeneratedCommandsPipelineInfoEXT {
8986    #[inline]
8987    fn default() -> Self {
8988        Self {
8989            s_type: StructureType::GENERATED_COMMANDS_PIPELINE_INFO_EXT,
8990            next: ptr::null_mut(),
8991            pipeline: Pipeline::default(),
8992        }
8993    }
8994}
8995
8996unsafe impl Send for GeneratedCommandsPipelineInfoEXT {}
8997unsafe impl Sync for GeneratedCommandsPipelineInfoEXT {}
8998
8999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html>
9000#[repr(C)]
9001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9002pub struct GeneratedCommandsShaderInfoEXT {
9003    pub s_type: StructureType,
9004    pub next: *mut c_void,
9005    pub shader_count: u32,
9006    pub shaders: *const ShaderEXT,
9007}
9008
9009impl Default for GeneratedCommandsShaderInfoEXT {
9010    #[inline]
9011    fn default() -> Self {
9012        Self {
9013            s_type: StructureType::GENERATED_COMMANDS_SHADER_INFO_EXT,
9014            next: ptr::null_mut(),
9015            shader_count: u32::default(),
9016            shaders: ptr::null(),
9017        }
9018    }
9019}
9020
9021unsafe impl Send for GeneratedCommandsShaderInfoEXT {}
9022unsafe impl Sync for GeneratedCommandsShaderInfoEXT {}
9023
9024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryAABBNV.html>
9025#[repr(C)]
9026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9027pub struct GeometryAABBNV {
9028    pub s_type: StructureType,
9029    pub next: *const c_void,
9030    pub aabb_data: Buffer,
9031    pub num_aab_bs: u32,
9032    pub stride: u32,
9033    pub offset: DeviceSize,
9034}
9035
9036impl Default for GeometryAABBNV {
9037    #[inline]
9038    fn default() -> Self {
9039        Self {
9040            s_type: StructureType::GEOMETRY_AABB_NV,
9041            next: ptr::null(),
9042            aabb_data: Buffer::default(),
9043            num_aab_bs: u32::default(),
9044            stride: u32::default(),
9045            offset: DeviceSize::default(),
9046        }
9047    }
9048}
9049
9050unsafe impl Send for GeometryAABBNV {}
9051unsafe impl Sync for GeometryAABBNV {}
9052
9053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryDataNV.html>
9054#[repr(C)]
9055#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9056pub struct GeometryDataNV {
9057    pub triangles: GeometryTrianglesNV,
9058    pub aabbs: GeometryAABBNV,
9059}
9060
9061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryNV.html>
9062#[repr(C)]
9063#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9064pub struct GeometryNV {
9065    pub s_type: StructureType,
9066    pub next: *const c_void,
9067    pub geometry_type: GeometryTypeKHR,
9068    pub geometry: GeometryDataNV,
9069    pub flags: GeometryFlagsKHR,
9070}
9071
9072impl Default for GeometryNV {
9073    #[inline]
9074    fn default() -> Self {
9075        Self {
9076            s_type: StructureType::GEOMETRY_NV,
9077            next: ptr::null(),
9078            geometry_type: GeometryTypeKHR::default(),
9079            geometry: GeometryDataNV::default(),
9080            flags: GeometryFlagsKHR::default(),
9081        }
9082    }
9083}
9084
9085unsafe impl Send for GeometryNV {}
9086unsafe impl Sync for GeometryNV {}
9087
9088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html>
9089#[repr(C)]
9090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9091pub struct GeometryTrianglesNV {
9092    pub s_type: StructureType,
9093    pub next: *const c_void,
9094    pub vertex_data: Buffer,
9095    pub vertex_offset: DeviceSize,
9096    pub vertex_count: u32,
9097    pub vertex_stride: DeviceSize,
9098    pub vertex_format: Format,
9099    pub index_data: Buffer,
9100    pub index_offset: DeviceSize,
9101    pub index_count: u32,
9102    pub index_type: IndexType,
9103    pub transform_data: Buffer,
9104    pub transform_offset: DeviceSize,
9105}
9106
9107impl Default for GeometryTrianglesNV {
9108    #[inline]
9109    fn default() -> Self {
9110        Self {
9111            s_type: StructureType::GEOMETRY_TRIANGLES_NV,
9112            next: ptr::null(),
9113            vertex_data: Buffer::default(),
9114            vertex_offset: DeviceSize::default(),
9115            vertex_count: u32::default(),
9116            vertex_stride: DeviceSize::default(),
9117            vertex_format: Format::default(),
9118            index_data: Buffer::default(),
9119            index_offset: DeviceSize::default(),
9120            index_count: u32::default(),
9121            index_type: IndexType::default(),
9122            transform_data: Buffer::default(),
9123            transform_offset: DeviceSize::default(),
9124        }
9125    }
9126}
9127
9128unsafe impl Send for GeometryTrianglesNV {}
9129unsafe impl Sync for GeometryTrianglesNV {}
9130
9131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html>
9132#[repr(C)]
9133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9134pub struct GetLatencyMarkerInfoNV {
9135    pub s_type: StructureType,
9136    pub next: *const c_void,
9137    pub timing_count: u32,
9138    pub timings: *mut LatencyTimingsFrameReportNV,
9139}
9140
9141impl Default for GetLatencyMarkerInfoNV {
9142    #[inline]
9143    fn default() -> Self {
9144        Self {
9145            s_type: StructureType::GET_LATENCY_MARKER_INFO_NV,
9146            next: ptr::null(),
9147            timing_count: u32::default(),
9148            timings: ptr::null_mut(),
9149        }
9150    }
9151}
9152
9153unsafe impl Send for GetLatencyMarkerInfoNV {}
9154unsafe impl Sync for GetLatencyMarkerInfoNV {}
9155
9156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html>
9157#[repr(C)]
9158#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9159pub struct GraphicsPipelineCreateInfo {
9160    pub s_type: StructureType,
9161    pub next: *const c_void,
9162    pub flags: PipelineCreateFlags,
9163    pub stage_count: u32,
9164    pub stages: *const PipelineShaderStageCreateInfo,
9165    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
9166    pub input_assembly_state: *const PipelineInputAssemblyStateCreateInfo,
9167    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
9168    pub viewport_state: *const PipelineViewportStateCreateInfo,
9169    pub rasterization_state: *const PipelineRasterizationStateCreateInfo,
9170    pub multisample_state: *const PipelineMultisampleStateCreateInfo,
9171    pub depth_stencil_state: *const PipelineDepthStencilStateCreateInfo,
9172    pub color_blend_state: *const PipelineColorBlendStateCreateInfo,
9173    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
9174    pub layout: PipelineLayout,
9175    pub render_pass: RenderPass,
9176    pub subpass: u32,
9177    pub base_pipeline_handle: Pipeline,
9178    pub base_pipeline_index: i32,
9179}
9180
9181impl Default for GraphicsPipelineCreateInfo {
9182    #[inline]
9183    fn default() -> Self {
9184        Self {
9185            s_type: StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
9186            next: ptr::null(),
9187            flags: PipelineCreateFlags::default(),
9188            stage_count: u32::default(),
9189            stages: ptr::null(),
9190            vertex_input_state: ptr::null(),
9191            input_assembly_state: ptr::null(),
9192            tessellation_state: ptr::null(),
9193            viewport_state: ptr::null(),
9194            rasterization_state: ptr::null(),
9195            multisample_state: ptr::null(),
9196            depth_stencil_state: ptr::null(),
9197            color_blend_state: ptr::null(),
9198            dynamic_state: ptr::null(),
9199            layout: PipelineLayout::default(),
9200            render_pass: RenderPass::default(),
9201            subpass: u32::default(),
9202            base_pipeline_handle: Pipeline::default(),
9203            base_pipeline_index: i32::default(),
9204        }
9205    }
9206}
9207
9208unsafe impl Send for GraphicsPipelineCreateInfo {}
9209unsafe impl Sync for GraphicsPipelineCreateInfo {}
9210
9211/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html>
9212#[repr(C)]
9213#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9214pub struct GraphicsPipelineLibraryCreateInfoEXT {
9215    pub s_type: StructureType,
9216    pub next: *const c_void,
9217    pub flags: GraphicsPipelineLibraryFlagsEXT,
9218}
9219
9220impl Default for GraphicsPipelineLibraryCreateInfoEXT {
9221    #[inline]
9222    fn default() -> Self {
9223        Self {
9224            s_type: StructureType::GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT,
9225            next: ptr::null(),
9226            flags: GraphicsPipelineLibraryFlagsEXT::default(),
9227        }
9228    }
9229}
9230
9231unsafe impl Send for GraphicsPipelineLibraryCreateInfoEXT {}
9232unsafe impl Sync for GraphicsPipelineLibraryCreateInfoEXT {}
9233
9234/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html>
9235#[repr(C)]
9236#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9237pub struct GraphicsPipelineShaderGroupsCreateInfoNV {
9238    pub s_type: StructureType,
9239    pub next: *const c_void,
9240    pub group_count: u32,
9241    pub groups: *const GraphicsShaderGroupCreateInfoNV,
9242    pub pipeline_count: u32,
9243    pub pipelines: *const Pipeline,
9244}
9245
9246impl Default for GraphicsPipelineShaderGroupsCreateInfoNV {
9247    #[inline]
9248    fn default() -> Self {
9249        Self {
9250            s_type: StructureType::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
9251            next: ptr::null(),
9252            group_count: u32::default(),
9253            groups: ptr::null(),
9254            pipeline_count: u32::default(),
9255            pipelines: ptr::null(),
9256        }
9257    }
9258}
9259
9260unsafe impl Send for GraphicsPipelineShaderGroupsCreateInfoNV {}
9261unsafe impl Sync for GraphicsPipelineShaderGroupsCreateInfoNV {}
9262
9263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html>
9264#[repr(C)]
9265#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9266pub struct GraphicsShaderGroupCreateInfoNV {
9267    pub s_type: StructureType,
9268    pub next: *const c_void,
9269    pub stage_count: u32,
9270    pub stages: *const PipelineShaderStageCreateInfo,
9271    pub vertex_input_state: *const PipelineVertexInputStateCreateInfo,
9272    pub tessellation_state: *const PipelineTessellationStateCreateInfo,
9273}
9274
9275impl Default for GraphicsShaderGroupCreateInfoNV {
9276    #[inline]
9277    fn default() -> Self {
9278        Self {
9279            s_type: StructureType::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
9280            next: ptr::null(),
9281            stage_count: u32::default(),
9282            stages: ptr::null(),
9283            vertex_input_state: ptr::null(),
9284            tessellation_state: ptr::null(),
9285        }
9286    }
9287}
9288
9289unsafe impl Send for GraphicsShaderGroupCreateInfoNV {}
9290unsafe impl Sync for GraphicsShaderGroupCreateInfoNV {}
9291
9292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html>
9293#[repr(C)]
9294#[derive(Copy, Clone, Debug, PartialEq)]
9295pub struct HdrMetadataEXT {
9296    pub s_type: StructureType,
9297    pub next: *const c_void,
9298    pub display_primary_red: XYColorEXT,
9299    pub display_primary_green: XYColorEXT,
9300    pub display_primary_blue: XYColorEXT,
9301    pub white_point: XYColorEXT,
9302    pub max_luminance: f32,
9303    pub min_luminance: f32,
9304    pub max_content_light_level: f32,
9305    pub max_frame_average_light_level: f32,
9306}
9307
9308impl Default for HdrMetadataEXT {
9309    #[inline]
9310    fn default() -> Self {
9311        Self {
9312            s_type: StructureType::HDR_METADATA_EXT,
9313            next: ptr::null(),
9314            display_primary_red: XYColorEXT::default(),
9315            display_primary_green: XYColorEXT::default(),
9316            display_primary_blue: XYColorEXT::default(),
9317            white_point: XYColorEXT::default(),
9318            max_luminance: f32::default(),
9319            min_luminance: f32::default(),
9320            max_content_light_level: f32::default(),
9321            max_frame_average_light_level: f32::default(),
9322        }
9323    }
9324}
9325
9326unsafe impl Send for HdrMetadataEXT {}
9327unsafe impl Sync for HdrMetadataEXT {}
9328
9329/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html>
9330#[repr(C)]
9331#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9332pub struct HdrVividDynamicMetadataHUAWEI {
9333    pub s_type: StructureType,
9334    pub next: *const c_void,
9335    pub dynamic_metadata_size: usize,
9336    pub dynamic_metadata: *const c_void,
9337}
9338
9339impl Default for HdrVividDynamicMetadataHUAWEI {
9340    #[inline]
9341    fn default() -> Self {
9342        Self {
9343            s_type: StructureType::HDR_VIVID_DYNAMIC_METADATA_HUAWEI,
9344            next: ptr::null(),
9345            dynamic_metadata_size: usize::default(),
9346            dynamic_metadata: ptr::null(),
9347        }
9348    }
9349}
9350
9351unsafe impl Send for HdrVividDynamicMetadataHUAWEI {}
9352unsafe impl Sync for HdrVividDynamicMetadataHUAWEI {}
9353
9354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html>
9355#[repr(C)]
9356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9357pub struct HeadlessSurfaceCreateInfoEXT {
9358    pub s_type: StructureType,
9359    pub next: *const c_void,
9360    pub flags: HeadlessSurfaceCreateFlagsEXT,
9361}
9362
9363impl Default for HeadlessSurfaceCreateInfoEXT {
9364    #[inline]
9365    fn default() -> Self {
9366        Self {
9367            s_type: StructureType::HEADLESS_SURFACE_CREATE_INFO_EXT,
9368            next: ptr::null(),
9369            flags: HeadlessSurfaceCreateFlagsEXT::default(),
9370        }
9371    }
9372}
9373
9374unsafe impl Send for HeadlessSurfaceCreateInfoEXT {}
9375unsafe impl Sync for HeadlessSurfaceCreateInfoEXT {}
9376
9377/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostAddressRangeConstEXT.html>
9378#[repr(C)]
9379#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9380pub struct HostAddressRangeConstEXT {
9381    pub address: *const c_void,
9382    pub size: usize,
9383}
9384
9385impl Default for HostAddressRangeConstEXT {
9386    #[inline]
9387    fn default() -> Self {
9388        Self {
9389            address: ptr::null(),
9390            size: usize::default(),
9391        }
9392    }
9393}
9394
9395unsafe impl Send for HostAddressRangeConstEXT {}
9396unsafe impl Sync for HostAddressRangeConstEXT {}
9397
9398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostAddressRangeEXT.html>
9399#[repr(C)]
9400#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9401pub struct HostAddressRangeEXT {
9402    pub address: *mut c_void,
9403    pub size: usize,
9404}
9405
9406impl Default for HostAddressRangeEXT {
9407    #[inline]
9408    fn default() -> Self {
9409        Self {
9410            address: ptr::null_mut(),
9411            size: usize::default(),
9412        }
9413    }
9414}
9415
9416unsafe impl Send for HostAddressRangeEXT {}
9417unsafe impl Sync for HostAddressRangeEXT {}
9418
9419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html>
9420#[repr(C)]
9421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9422pub struct HostImageCopyDevicePerformanceQuery {
9423    pub s_type: StructureType,
9424    pub next: *mut c_void,
9425    pub optimal_device_access: Bool32,
9426    pub identical_memory_layout: Bool32,
9427}
9428
9429impl Default for HostImageCopyDevicePerformanceQuery {
9430    #[inline]
9431    fn default() -> Self {
9432        Self {
9433            s_type: StructureType::HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY,
9434            next: ptr::null_mut(),
9435            optimal_device_access: Bool32::default(),
9436            identical_memory_layout: Bool32::default(),
9437        }
9438    }
9439}
9440
9441unsafe impl Send for HostImageCopyDevicePerformanceQuery {}
9442unsafe impl Sync for HostImageCopyDevicePerformanceQuery {}
9443
9444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html>
9445#[repr(C)]
9446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9447pub struct HostImageLayoutTransitionInfo {
9448    pub s_type: StructureType,
9449    pub next: *const c_void,
9450    pub image: Image,
9451    pub old_layout: ImageLayout,
9452    pub new_layout: ImageLayout,
9453    pub subresource_range: ImageSubresourceRange,
9454}
9455
9456impl Default for HostImageLayoutTransitionInfo {
9457    #[inline]
9458    fn default() -> Self {
9459        Self {
9460            s_type: StructureType::HOST_IMAGE_LAYOUT_TRANSITION_INFO,
9461            next: ptr::null(),
9462            image: Image::default(),
9463            old_layout: ImageLayout::default(),
9464            new_layout: ImageLayout::default(),
9465            subresource_range: ImageSubresourceRange::default(),
9466        }
9467    }
9468}
9469
9470unsafe impl Send for HostImageLayoutTransitionInfo {}
9471unsafe impl Sync for HostImageLayoutTransitionInfo {}
9472
9473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html>
9474#[repr(C)]
9475#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9476pub struct IOSSurfaceCreateInfoMVK {
9477    pub s_type: StructureType,
9478    pub next: *const c_void,
9479    pub flags: IOSSurfaceCreateFlagsMVK,
9480    pub view: *const c_void,
9481}
9482
9483impl Default for IOSSurfaceCreateInfoMVK {
9484    #[inline]
9485    fn default() -> Self {
9486        Self {
9487            s_type: StructureType::IOS_SURFACE_CREATE_INFO_MVK,
9488            next: ptr::null(),
9489            flags: IOSSurfaceCreateFlagsMVK::default(),
9490            view: ptr::null(),
9491        }
9492    }
9493}
9494
9495unsafe impl Send for IOSSurfaceCreateInfoMVK {}
9496unsafe impl Sync for IOSSurfaceCreateInfoMVK {}
9497
9498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html>
9499#[repr(C)]
9500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9501pub struct ImageAlignmentControlCreateInfoMESA {
9502    pub s_type: StructureType,
9503    pub next: *const c_void,
9504    pub maximum_requested_alignment: u32,
9505}
9506
9507impl Default for ImageAlignmentControlCreateInfoMESA {
9508    #[inline]
9509    fn default() -> Self {
9510        Self {
9511            s_type: StructureType::IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA,
9512            next: ptr::null(),
9513            maximum_requested_alignment: u32::default(),
9514        }
9515    }
9516}
9517
9518unsafe impl Send for ImageAlignmentControlCreateInfoMESA {}
9519unsafe impl Sync for ImageAlignmentControlCreateInfoMESA {}
9520
9521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit.html>
9522#[repr(C)]
9523#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9524pub struct ImageBlit {
9525    pub src_subresource: ImageSubresourceLayers,
9526    pub src_offsets: [Offset3D; 2],
9527    pub dst_subresource: ImageSubresourceLayers,
9528    pub dst_offsets: [Offset3D; 2],
9529}
9530
9531/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2.html>
9532#[repr(C)]
9533#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9534pub struct ImageBlit2 {
9535    pub s_type: StructureType,
9536    pub next: *const c_void,
9537    pub src_subresource: ImageSubresourceLayers,
9538    pub src_offsets: [Offset3D; 2],
9539    pub dst_subresource: ImageSubresourceLayers,
9540    pub dst_offsets: [Offset3D; 2],
9541}
9542
9543impl Default for ImageBlit2 {
9544    #[inline]
9545    fn default() -> Self {
9546        Self {
9547            s_type: StructureType::IMAGE_BLIT_2,
9548            next: ptr::null(),
9549            src_subresource: ImageSubresourceLayers::default(),
9550            src_offsets: [Offset3D::default(); 2],
9551            dst_subresource: ImageSubresourceLayers::default(),
9552            dst_offsets: [Offset3D::default(); 2],
9553        }
9554    }
9555}
9556
9557unsafe impl Send for ImageBlit2 {}
9558unsafe impl Sync for ImageBlit2 {}
9559
9560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html>
9561#[repr(C)]
9562#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9563pub struct ImageCaptureDescriptorDataInfoEXT {
9564    pub s_type: StructureType,
9565    pub next: *const c_void,
9566    pub image: Image,
9567}
9568
9569impl Default for ImageCaptureDescriptorDataInfoEXT {
9570    #[inline]
9571    fn default() -> Self {
9572        Self {
9573            s_type: StructureType::IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
9574            next: ptr::null(),
9575            image: Image::default(),
9576        }
9577    }
9578}
9579
9580unsafe impl Send for ImageCaptureDescriptorDataInfoEXT {}
9581unsafe impl Sync for ImageCaptureDescriptorDataInfoEXT {}
9582
9583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html>
9584#[repr(C)]
9585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9586pub struct ImageCompressionControlEXT {
9587    pub s_type: StructureType,
9588    pub next: *const c_void,
9589    pub flags: ImageCompressionFlagsEXT,
9590    pub compression_control_plane_count: u32,
9591    pub fixed_rate_flags: *mut ImageCompressionFixedRateFlagsEXT,
9592}
9593
9594impl Default for ImageCompressionControlEXT {
9595    #[inline]
9596    fn default() -> Self {
9597        Self {
9598            s_type: StructureType::IMAGE_COMPRESSION_CONTROL_EXT,
9599            next: ptr::null(),
9600            flags: ImageCompressionFlagsEXT::default(),
9601            compression_control_plane_count: u32::default(),
9602            fixed_rate_flags: ptr::null_mut(),
9603        }
9604    }
9605}
9606
9607unsafe impl Send for ImageCompressionControlEXT {}
9608unsafe impl Sync for ImageCompressionControlEXT {}
9609
9610/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html>
9611#[repr(C)]
9612#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9613pub struct ImageCompressionPropertiesEXT {
9614    pub s_type: StructureType,
9615    pub next: *mut c_void,
9616    pub image_compression_flags: ImageCompressionFlagsEXT,
9617    pub image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT,
9618}
9619
9620impl Default for ImageCompressionPropertiesEXT {
9621    #[inline]
9622    fn default() -> Self {
9623        Self {
9624            s_type: StructureType::IMAGE_COMPRESSION_PROPERTIES_EXT,
9625            next: ptr::null_mut(),
9626            image_compression_flags: ImageCompressionFlagsEXT::default(),
9627            image_compression_fixed_rate_flags: ImageCompressionFixedRateFlagsEXT::default(),
9628        }
9629    }
9630}
9631
9632unsafe impl Send for ImageCompressionPropertiesEXT {}
9633unsafe impl Sync for ImageCompressionPropertiesEXT {}
9634
9635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html>
9636#[repr(C)]
9637#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9638pub struct ImageConstraintsInfoFUCHSIA {
9639    pub s_type: StructureType,
9640    pub next: *const c_void,
9641    pub format_constraints_count: u32,
9642    pub format_constraints: *const ImageFormatConstraintsInfoFUCHSIA,
9643    pub buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA,
9644    pub flags: ImageConstraintsInfoFlagsFUCHSIA,
9645}
9646
9647impl Default for ImageConstraintsInfoFUCHSIA {
9648    #[inline]
9649    fn default() -> Self {
9650        Self {
9651            s_type: StructureType::IMAGE_CONSTRAINTS_INFO_FUCHSIA,
9652            next: ptr::null(),
9653            format_constraints_count: u32::default(),
9654            format_constraints: ptr::null(),
9655            buffer_collection_constraints: BufferCollectionConstraintsInfoFUCHSIA::default(),
9656            flags: ImageConstraintsInfoFlagsFUCHSIA::default(),
9657        }
9658    }
9659}
9660
9661unsafe impl Send for ImageConstraintsInfoFUCHSIA {}
9662unsafe impl Sync for ImageConstraintsInfoFUCHSIA {}
9663
9664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy.html>
9665#[repr(C)]
9666#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9667pub struct ImageCopy {
9668    pub src_subresource: ImageSubresourceLayers,
9669    pub src_offset: Offset3D,
9670    pub dst_subresource: ImageSubresourceLayers,
9671    pub dst_offset: Offset3D,
9672    pub extent: Extent3D,
9673}
9674
9675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2.html>
9676#[repr(C)]
9677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9678pub struct ImageCopy2 {
9679    pub s_type: StructureType,
9680    pub next: *const c_void,
9681    pub src_subresource: ImageSubresourceLayers,
9682    pub src_offset: Offset3D,
9683    pub dst_subresource: ImageSubresourceLayers,
9684    pub dst_offset: Offset3D,
9685    pub extent: Extent3D,
9686}
9687
9688impl Default for ImageCopy2 {
9689    #[inline]
9690    fn default() -> Self {
9691        Self {
9692            s_type: StructureType::IMAGE_COPY_2,
9693            next: ptr::null(),
9694            src_subresource: ImageSubresourceLayers::default(),
9695            src_offset: Offset3D::default(),
9696            dst_subresource: ImageSubresourceLayers::default(),
9697            dst_offset: Offset3D::default(),
9698            extent: Extent3D::default(),
9699        }
9700    }
9701}
9702
9703unsafe impl Send for ImageCopy2 {}
9704unsafe impl Sync for ImageCopy2 {}
9705
9706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCreateInfo.html>
9707#[repr(C)]
9708#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9709pub struct ImageCreateInfo {
9710    pub s_type: StructureType,
9711    pub next: *const c_void,
9712    pub flags: ImageCreateFlags,
9713    pub image_type: ImageType,
9714    pub format: Format,
9715    pub extent: Extent3D,
9716    pub mip_levels: u32,
9717    pub array_layers: u32,
9718    pub samples: SampleCountFlags,
9719    pub tiling: ImageTiling,
9720    pub usage: ImageUsageFlags,
9721    pub sharing_mode: SharingMode,
9722    pub queue_family_index_count: u32,
9723    pub queue_family_indices: *const u32,
9724    pub initial_layout: ImageLayout,
9725}
9726
9727impl Default for ImageCreateInfo {
9728    #[inline]
9729    fn default() -> Self {
9730        Self {
9731            s_type: StructureType::IMAGE_CREATE_INFO,
9732            next: ptr::null(),
9733            flags: ImageCreateFlags::default(),
9734            image_type: ImageType::default(),
9735            format: Format::default(),
9736            extent: Extent3D::default(),
9737            mip_levels: u32::default(),
9738            array_layers: u32::default(),
9739            samples: SampleCountFlags::default(),
9740            tiling: ImageTiling::default(),
9741            usage: ImageUsageFlags::default(),
9742            sharing_mode: SharingMode::default(),
9743            queue_family_index_count: u32::default(),
9744            queue_family_indices: ptr::null(),
9745            initial_layout: ImageLayout::default(),
9746        }
9747    }
9748}
9749
9750unsafe impl Send for ImageCreateInfo {}
9751unsafe impl Sync for ImageCreateInfo {}
9752
9753/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDescriptorInfoEXT.html>
9754#[repr(C)]
9755#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9756pub struct ImageDescriptorInfoEXT {
9757    pub s_type: StructureType,
9758    pub next: *const c_void,
9759    pub view: *const ImageViewCreateInfo,
9760    pub layout: ImageLayout,
9761}
9762
9763impl Default for ImageDescriptorInfoEXT {
9764    #[inline]
9765    fn default() -> Self {
9766        Self {
9767            s_type: StructureType::IMAGE_DESCRIPTOR_INFO_EXT,
9768            next: ptr::null(),
9769            view: ptr::null(),
9770            layout: ImageLayout::default(),
9771        }
9772    }
9773}
9774
9775unsafe impl Send for ImageDescriptorInfoEXT {}
9776unsafe impl Sync for ImageDescriptorInfoEXT {}
9777
9778/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html>
9779#[repr(C)]
9780#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9781pub struct ImageDrmFormatModifierExplicitCreateInfoEXT {
9782    pub s_type: StructureType,
9783    pub next: *const c_void,
9784    pub drm_format_modifier: u64,
9785    pub drm_format_modifier_plane_count: u32,
9786    pub plane_layouts: *const SubresourceLayout,
9787}
9788
9789impl Default for ImageDrmFormatModifierExplicitCreateInfoEXT {
9790    #[inline]
9791    fn default() -> Self {
9792        Self {
9793            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
9794            next: ptr::null(),
9795            drm_format_modifier: u64::default(),
9796            drm_format_modifier_plane_count: u32::default(),
9797            plane_layouts: ptr::null(),
9798        }
9799    }
9800}
9801
9802unsafe impl Send for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9803unsafe impl Sync for ImageDrmFormatModifierExplicitCreateInfoEXT {}
9804
9805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html>
9806#[repr(C)]
9807#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9808pub struct ImageDrmFormatModifierListCreateInfoEXT {
9809    pub s_type: StructureType,
9810    pub next: *const c_void,
9811    pub drm_format_modifier_count: u32,
9812    pub drm_format_modifiers: *const u64,
9813}
9814
9815impl Default for ImageDrmFormatModifierListCreateInfoEXT {
9816    #[inline]
9817    fn default() -> Self {
9818        Self {
9819            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
9820            next: ptr::null(),
9821            drm_format_modifier_count: u32::default(),
9822            drm_format_modifiers: ptr::null(),
9823        }
9824    }
9825}
9826
9827unsafe impl Send for ImageDrmFormatModifierListCreateInfoEXT {}
9828unsafe impl Sync for ImageDrmFormatModifierListCreateInfoEXT {}
9829
9830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html>
9831#[repr(C)]
9832#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9833pub struct ImageDrmFormatModifierPropertiesEXT {
9834    pub s_type: StructureType,
9835    pub next: *mut c_void,
9836    pub drm_format_modifier: u64,
9837}
9838
9839impl Default for ImageDrmFormatModifierPropertiesEXT {
9840    #[inline]
9841    fn default() -> Self {
9842        Self {
9843            s_type: StructureType::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
9844            next: ptr::null_mut(),
9845            drm_format_modifier: u64::default(),
9846        }
9847    }
9848}
9849
9850unsafe impl Send for ImageDrmFormatModifierPropertiesEXT {}
9851unsafe impl Sync for ImageDrmFormatModifierPropertiesEXT {}
9852
9853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html>
9854#[repr(C)]
9855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9856pub struct ImageFormatConstraintsInfoFUCHSIA {
9857    pub s_type: StructureType,
9858    pub next: *const c_void,
9859    pub image_create_info: ImageCreateInfo,
9860    pub required_format_features: FormatFeatureFlags,
9861    pub flags: ImageFormatConstraintsFlagsFUCHSIA,
9862    pub sysmem_pixel_format: u64,
9863    pub color_space_count: u32,
9864    pub color_spaces: *const SysmemColorSpaceFUCHSIA,
9865}
9866
9867impl Default for ImageFormatConstraintsInfoFUCHSIA {
9868    #[inline]
9869    fn default() -> Self {
9870        Self {
9871            s_type: StructureType::IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA,
9872            next: ptr::null(),
9873            image_create_info: ImageCreateInfo::default(),
9874            required_format_features: FormatFeatureFlags::default(),
9875            flags: ImageFormatConstraintsFlagsFUCHSIA::default(),
9876            sysmem_pixel_format: u64::default(),
9877            color_space_count: u32::default(),
9878            color_spaces: ptr::null(),
9879        }
9880    }
9881}
9882
9883unsafe impl Send for ImageFormatConstraintsInfoFUCHSIA {}
9884unsafe impl Sync for ImageFormatConstraintsInfoFUCHSIA {}
9885
9886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html>
9887#[repr(C)]
9888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9889pub struct ImageFormatListCreateInfo {
9890    pub s_type: StructureType,
9891    pub next: *const c_void,
9892    pub view_format_count: u32,
9893    pub view_formats: *const Format,
9894}
9895
9896impl Default for ImageFormatListCreateInfo {
9897    #[inline]
9898    fn default() -> Self {
9899        Self {
9900            s_type: StructureType::IMAGE_FORMAT_LIST_CREATE_INFO,
9901            next: ptr::null(),
9902            view_format_count: u32::default(),
9903            view_formats: ptr::null(),
9904        }
9905    }
9906}
9907
9908unsafe impl Send for ImageFormatListCreateInfo {}
9909unsafe impl Sync for ImageFormatListCreateInfo {}
9910
9911/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties.html>
9912#[repr(C)]
9913#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
9914pub struct ImageFormatProperties {
9915    pub max_extent: Extent3D,
9916    pub max_mip_levels: u32,
9917    pub max_array_layers: u32,
9918    pub sample_counts: SampleCountFlags,
9919    pub max_resource_size: DeviceSize,
9920}
9921
9922/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2.html>
9923#[repr(C)]
9924#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9925pub struct ImageFormatProperties2 {
9926    pub s_type: StructureType,
9927    pub next: *mut c_void,
9928    pub image_format_properties: ImageFormatProperties,
9929}
9930
9931impl Default for ImageFormatProperties2 {
9932    #[inline]
9933    fn default() -> Self {
9934        Self {
9935            s_type: StructureType::IMAGE_FORMAT_PROPERTIES_2,
9936            next: ptr::null_mut(),
9937            image_format_properties: ImageFormatProperties::default(),
9938        }
9939    }
9940}
9941
9942unsafe impl Send for ImageFormatProperties2 {}
9943unsafe impl Sync for ImageFormatProperties2 {}
9944
9945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html>
9946#[repr(C)]
9947#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9948pub struct ImageMemoryBarrier {
9949    pub s_type: StructureType,
9950    pub next: *const c_void,
9951    pub src_access_mask: AccessFlags,
9952    pub dst_access_mask: AccessFlags,
9953    pub old_layout: ImageLayout,
9954    pub new_layout: ImageLayout,
9955    pub src_queue_family_index: u32,
9956    pub dst_queue_family_index: u32,
9957    pub image: Image,
9958    pub subresource_range: ImageSubresourceRange,
9959}
9960
9961impl Default for ImageMemoryBarrier {
9962    #[inline]
9963    fn default() -> Self {
9964        Self {
9965            s_type: StructureType::IMAGE_MEMORY_BARRIER,
9966            next: ptr::null(),
9967            src_access_mask: AccessFlags::default(),
9968            dst_access_mask: AccessFlags::default(),
9969            old_layout: ImageLayout::default(),
9970            new_layout: ImageLayout::default(),
9971            src_queue_family_index: u32::default(),
9972            dst_queue_family_index: u32::default(),
9973            image: Image::default(),
9974            subresource_range: ImageSubresourceRange::default(),
9975        }
9976    }
9977}
9978
9979unsafe impl Send for ImageMemoryBarrier {}
9980unsafe impl Sync for ImageMemoryBarrier {}
9981
9982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html>
9983#[repr(C)]
9984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
9985pub struct ImageMemoryBarrier2 {
9986    pub s_type: StructureType,
9987    pub next: *const c_void,
9988    pub src_stage_mask: PipelineStageFlags2,
9989    pub src_access_mask: AccessFlags2,
9990    pub dst_stage_mask: PipelineStageFlags2,
9991    pub dst_access_mask: AccessFlags2,
9992    pub old_layout: ImageLayout,
9993    pub new_layout: ImageLayout,
9994    pub src_queue_family_index: u32,
9995    pub dst_queue_family_index: u32,
9996    pub image: Image,
9997    pub subresource_range: ImageSubresourceRange,
9998}
9999
10000impl Default for ImageMemoryBarrier2 {
10001    #[inline]
10002    fn default() -> Self {
10003        Self {
10004            s_type: StructureType::IMAGE_MEMORY_BARRIER_2,
10005            next: ptr::null(),
10006            src_stage_mask: PipelineStageFlags2::default(),
10007            src_access_mask: AccessFlags2::default(),
10008            dst_stage_mask: PipelineStageFlags2::default(),
10009            dst_access_mask: AccessFlags2::default(),
10010            old_layout: ImageLayout::default(),
10011            new_layout: ImageLayout::default(),
10012            src_queue_family_index: u32::default(),
10013            dst_queue_family_index: u32::default(),
10014            image: Image::default(),
10015            subresource_range: ImageSubresourceRange::default(),
10016        }
10017    }
10018}
10019
10020unsafe impl Send for ImageMemoryBarrier2 {}
10021unsafe impl Sync for ImageMemoryBarrier2 {}
10022
10023/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html>
10024#[repr(C)]
10025#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10026pub struct ImageMemoryRequirementsInfo2 {
10027    pub s_type: StructureType,
10028    pub next: *const c_void,
10029    pub image: Image,
10030}
10031
10032impl Default for ImageMemoryRequirementsInfo2 {
10033    #[inline]
10034    fn default() -> Self {
10035        Self {
10036            s_type: StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2,
10037            next: ptr::null(),
10038            image: Image::default(),
10039        }
10040    }
10041}
10042
10043unsafe impl Send for ImageMemoryRequirementsInfo2 {}
10044unsafe impl Sync for ImageMemoryRequirementsInfo2 {}
10045
10046/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html>
10047#[repr(C)]
10048#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10049pub struct ImagePipeSurfaceCreateInfoFUCHSIA {
10050    pub s_type: StructureType,
10051    pub next: *const c_void,
10052    pub flags: ImagePipeSurfaceCreateFlagsFUCHSIA,
10053    pub image_pipe_handle: zx_handle_t,
10054}
10055
10056impl Default for ImagePipeSurfaceCreateInfoFUCHSIA {
10057    #[inline]
10058    fn default() -> Self {
10059        Self {
10060            s_type: StructureType::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
10061            next: ptr::null(),
10062            flags: ImagePipeSurfaceCreateFlagsFUCHSIA::default(),
10063            image_pipe_handle: zx_handle_t::default(),
10064        }
10065    }
10066}
10067
10068unsafe impl Send for ImagePipeSurfaceCreateInfoFUCHSIA {}
10069unsafe impl Sync for ImagePipeSurfaceCreateInfoFUCHSIA {}
10070
10071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html>
10072#[repr(C)]
10073#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10074pub struct ImagePlaneMemoryRequirementsInfo {
10075    pub s_type: StructureType,
10076    pub next: *const c_void,
10077    pub plane_aspect: ImageAspectFlags,
10078}
10079
10080impl Default for ImagePlaneMemoryRequirementsInfo {
10081    #[inline]
10082    fn default() -> Self {
10083        Self {
10084            s_type: StructureType::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
10085            next: ptr::null(),
10086            plane_aspect: ImageAspectFlags::default(),
10087        }
10088    }
10089}
10090
10091unsafe impl Send for ImagePlaneMemoryRequirementsInfo {}
10092unsafe impl Sync for ImagePlaneMemoryRequirementsInfo {}
10093
10094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve.html>
10095#[repr(C)]
10096#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10097pub struct ImageResolve {
10098    pub src_subresource: ImageSubresourceLayers,
10099    pub src_offset: Offset3D,
10100    pub dst_subresource: ImageSubresourceLayers,
10101    pub dst_offset: Offset3D,
10102    pub extent: Extent3D,
10103}
10104
10105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2.html>
10106#[repr(C)]
10107#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10108pub struct ImageResolve2 {
10109    pub s_type: StructureType,
10110    pub next: *const c_void,
10111    pub src_subresource: ImageSubresourceLayers,
10112    pub src_offset: Offset3D,
10113    pub dst_subresource: ImageSubresourceLayers,
10114    pub dst_offset: Offset3D,
10115    pub extent: Extent3D,
10116}
10117
10118impl Default for ImageResolve2 {
10119    #[inline]
10120    fn default() -> Self {
10121        Self {
10122            s_type: StructureType::IMAGE_RESOLVE_2,
10123            next: ptr::null(),
10124            src_subresource: ImageSubresourceLayers::default(),
10125            src_offset: Offset3D::default(),
10126            dst_subresource: ImageSubresourceLayers::default(),
10127            dst_offset: Offset3D::default(),
10128            extent: Extent3D::default(),
10129        }
10130    }
10131}
10132
10133unsafe impl Send for ImageResolve2 {}
10134unsafe impl Sync for ImageResolve2 {}
10135
10136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html>
10137#[repr(C)]
10138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10139pub struct ImageSparseMemoryRequirementsInfo2 {
10140    pub s_type: StructureType,
10141    pub next: *const c_void,
10142    pub image: Image,
10143}
10144
10145impl Default for ImageSparseMemoryRequirementsInfo2 {
10146    #[inline]
10147    fn default() -> Self {
10148        Self {
10149            s_type: StructureType::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
10150            next: ptr::null(),
10151            image: Image::default(),
10152        }
10153    }
10154}
10155
10156unsafe impl Send for ImageSparseMemoryRequirementsInfo2 {}
10157unsafe impl Sync for ImageSparseMemoryRequirementsInfo2 {}
10158
10159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html>
10160#[repr(C)]
10161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10162pub struct ImageStencilUsageCreateInfo {
10163    pub s_type: StructureType,
10164    pub next: *const c_void,
10165    pub stencil_usage: ImageUsageFlags,
10166}
10167
10168impl Default for ImageStencilUsageCreateInfo {
10169    #[inline]
10170    fn default() -> Self {
10171        Self {
10172            s_type: StructureType::IMAGE_STENCIL_USAGE_CREATE_INFO,
10173            next: ptr::null(),
10174            stencil_usage: ImageUsageFlags::default(),
10175        }
10176    }
10177}
10178
10179unsafe impl Send for ImageStencilUsageCreateInfo {}
10180unsafe impl Sync for ImageStencilUsageCreateInfo {}
10181
10182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource.html>
10183#[repr(C)]
10184#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10185pub struct ImageSubresource {
10186    pub aspect_mask: ImageAspectFlags,
10187    pub mip_level: u32,
10188    pub array_layer: u32,
10189}
10190
10191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2.html>
10192#[repr(C)]
10193#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10194pub struct ImageSubresource2 {
10195    pub s_type: StructureType,
10196    pub next: *mut c_void,
10197    pub image_subresource: ImageSubresource,
10198}
10199
10200impl Default for ImageSubresource2 {
10201    #[inline]
10202    fn default() -> Self {
10203        Self {
10204            s_type: StructureType::IMAGE_SUBRESOURCE_2,
10205            next: ptr::null_mut(),
10206            image_subresource: ImageSubresource::default(),
10207        }
10208    }
10209}
10210
10211unsafe impl Send for ImageSubresource2 {}
10212unsafe impl Sync for ImageSubresource2 {}
10213
10214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html>
10215#[repr(C)]
10216#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10217pub struct ImageSubresourceLayers {
10218    pub aspect_mask: ImageAspectFlags,
10219    pub mip_level: u32,
10220    pub base_array_layer: u32,
10221    pub layer_count: u32,
10222}
10223
10224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresourceRange.html>
10225#[repr(C)]
10226#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
10227pub struct ImageSubresourceRange {
10228    pub aspect_mask: ImageAspectFlags,
10229    pub base_mip_level: u32,
10230    pub level_count: u32,
10231    pub base_array_layer: u32,
10232    pub layer_count: u32,
10233}
10234
10235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html>
10236#[repr(C)]
10237#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10238pub struct ImageSwapchainCreateInfoKHR {
10239    pub s_type: StructureType,
10240    pub next: *const c_void,
10241    pub swapchain: SwapchainKHR,
10242}
10243
10244impl Default for ImageSwapchainCreateInfoKHR {
10245    #[inline]
10246    fn default() -> Self {
10247        Self {
10248            s_type: StructureType::IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
10249            next: ptr::null(),
10250            swapchain: SwapchainKHR::default(),
10251        }
10252    }
10253}
10254
10255unsafe impl Send for ImageSwapchainCreateInfoKHR {}
10256unsafe impl Sync for ImageSwapchainCreateInfoKHR {}
10257
10258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html>
10259#[repr(C)]
10260#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10261pub struct ImageToMemoryCopy {
10262    pub s_type: StructureType,
10263    pub next: *const c_void,
10264    pub host_pointer: *mut c_void,
10265    pub memory_row_length: u32,
10266    pub memory_image_height: u32,
10267    pub image_subresource: ImageSubresourceLayers,
10268    pub image_offset: Offset3D,
10269    pub image_extent: Extent3D,
10270}
10271
10272impl Default for ImageToMemoryCopy {
10273    #[inline]
10274    fn default() -> Self {
10275        Self {
10276            s_type: StructureType::IMAGE_TO_MEMORY_COPY,
10277            next: ptr::null(),
10278            host_pointer: ptr::null_mut(),
10279            memory_row_length: u32::default(),
10280            memory_image_height: u32::default(),
10281            image_subresource: ImageSubresourceLayers::default(),
10282            image_offset: Offset3D::default(),
10283            image_extent: Extent3D::default(),
10284        }
10285    }
10286}
10287
10288unsafe impl Send for ImageToMemoryCopy {}
10289unsafe impl Sync for ImageToMemoryCopy {}
10290
10291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html>
10292#[repr(C)]
10293#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10294pub struct ImageViewASTCDecodeModeEXT {
10295    pub s_type: StructureType,
10296    pub next: *const c_void,
10297    pub decode_mode: Format,
10298}
10299
10300impl Default for ImageViewASTCDecodeModeEXT {
10301    #[inline]
10302    fn default() -> Self {
10303        Self {
10304            s_type: StructureType::IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
10305            next: ptr::null(),
10306            decode_mode: Format::default(),
10307        }
10308    }
10309}
10310
10311unsafe impl Send for ImageViewASTCDecodeModeEXT {}
10312unsafe impl Sync for ImageViewASTCDecodeModeEXT {}
10313
10314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html>
10315#[repr(C)]
10316#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10317pub struct ImageViewAddressPropertiesNVX {
10318    pub s_type: StructureType,
10319    pub next: *mut c_void,
10320    pub device_address: DeviceAddress,
10321    pub size: DeviceSize,
10322}
10323
10324impl Default for ImageViewAddressPropertiesNVX {
10325    #[inline]
10326    fn default() -> Self {
10327        Self {
10328            s_type: StructureType::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
10329            next: ptr::null_mut(),
10330            device_address: DeviceAddress::default(),
10331            size: DeviceSize::default(),
10332        }
10333    }
10334}
10335
10336unsafe impl Send for ImageViewAddressPropertiesNVX {}
10337unsafe impl Sync for ImageViewAddressPropertiesNVX {}
10338
10339/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html>
10340#[repr(C)]
10341#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10342pub struct ImageViewCaptureDescriptorDataInfoEXT {
10343    pub s_type: StructureType,
10344    pub next: *const c_void,
10345    pub image_view: ImageView,
10346}
10347
10348impl Default for ImageViewCaptureDescriptorDataInfoEXT {
10349    #[inline]
10350    fn default() -> Self {
10351        Self {
10352            s_type: StructureType::IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
10353            next: ptr::null(),
10354            image_view: ImageView::default(),
10355        }
10356    }
10357}
10358
10359unsafe impl Send for ImageViewCaptureDescriptorDataInfoEXT {}
10360unsafe impl Sync for ImageViewCaptureDescriptorDataInfoEXT {}
10361
10362/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html>
10363#[repr(C)]
10364#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10365pub struct ImageViewCreateInfo {
10366    pub s_type: StructureType,
10367    pub next: *const c_void,
10368    pub flags: ImageViewCreateFlags,
10369    pub image: Image,
10370    pub view_type: ImageViewType,
10371    pub format: Format,
10372    pub components: ComponentMapping,
10373    pub subresource_range: ImageSubresourceRange,
10374}
10375
10376impl Default for ImageViewCreateInfo {
10377    #[inline]
10378    fn default() -> Self {
10379        Self {
10380            s_type: StructureType::IMAGE_VIEW_CREATE_INFO,
10381            next: ptr::null(),
10382            flags: ImageViewCreateFlags::default(),
10383            image: Image::default(),
10384            view_type: ImageViewType::default(),
10385            format: Format::default(),
10386            components: ComponentMapping::default(),
10387            subresource_range: ImageSubresourceRange::default(),
10388        }
10389    }
10390}
10391
10392unsafe impl Send for ImageViewCreateInfo {}
10393unsafe impl Sync for ImageViewCreateInfo {}
10394
10395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html>
10396#[repr(C)]
10397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10398pub struct ImageViewHandleInfoNVX {
10399    pub s_type: StructureType,
10400    pub next: *const c_void,
10401    pub image_view: ImageView,
10402    pub descriptor_type: DescriptorType,
10403    pub sampler: Sampler,
10404}
10405
10406impl Default for ImageViewHandleInfoNVX {
10407    #[inline]
10408    fn default() -> Self {
10409        Self {
10410            s_type: StructureType::IMAGE_VIEW_HANDLE_INFO_NVX,
10411            next: ptr::null(),
10412            image_view: ImageView::default(),
10413            descriptor_type: DescriptorType::default(),
10414            sampler: Sampler::default(),
10415        }
10416    }
10417}
10418
10419unsafe impl Send for ImageViewHandleInfoNVX {}
10420unsafe impl Sync for ImageViewHandleInfoNVX {}
10421
10422/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html>
10423#[repr(C)]
10424#[derive(Copy, Clone, Debug, PartialEq)]
10425pub struct ImageViewMinLodCreateInfoEXT {
10426    pub s_type: StructureType,
10427    pub next: *const c_void,
10428    pub min_lod: f32,
10429}
10430
10431impl Default for ImageViewMinLodCreateInfoEXT {
10432    #[inline]
10433    fn default() -> Self {
10434        Self {
10435            s_type: StructureType::IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
10436            next: ptr::null(),
10437            min_lod: f32::default(),
10438        }
10439    }
10440}
10441
10442unsafe impl Send for ImageViewMinLodCreateInfoEXT {}
10443unsafe impl Sync for ImageViewMinLodCreateInfoEXT {}
10444
10445/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html>
10446#[repr(C)]
10447#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10448pub struct ImageViewSampleWeightCreateInfoQCOM {
10449    pub s_type: StructureType,
10450    pub next: *const c_void,
10451    pub filter_center: Offset2D,
10452    pub filter_size: Extent2D,
10453    pub num_phases: u32,
10454}
10455
10456impl Default for ImageViewSampleWeightCreateInfoQCOM {
10457    #[inline]
10458    fn default() -> Self {
10459        Self {
10460            s_type: StructureType::IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM,
10461            next: ptr::null(),
10462            filter_center: Offset2D::default(),
10463            filter_size: Extent2D::default(),
10464            num_phases: u32::default(),
10465        }
10466    }
10467}
10468
10469unsafe impl Send for ImageViewSampleWeightCreateInfoQCOM {}
10470unsafe impl Sync for ImageViewSampleWeightCreateInfoQCOM {}
10471
10472/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html>
10473#[repr(C)]
10474#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10475pub struct ImageViewSlicedCreateInfoEXT {
10476    pub s_type: StructureType,
10477    pub next: *const c_void,
10478    pub slice_offset: u32,
10479    pub slice_count: u32,
10480}
10481
10482impl Default for ImageViewSlicedCreateInfoEXT {
10483    #[inline]
10484    fn default() -> Self {
10485        Self {
10486            s_type: StructureType::IMAGE_VIEW_SLICED_CREATE_INFO_EXT,
10487            next: ptr::null(),
10488            slice_offset: u32::default(),
10489            slice_count: u32::default(),
10490        }
10491    }
10492}
10493
10494unsafe impl Send for ImageViewSlicedCreateInfoEXT {}
10495unsafe impl Sync for ImageViewSlicedCreateInfoEXT {}
10496
10497/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html>
10498#[repr(C)]
10499#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10500pub struct ImageViewUsageCreateInfo {
10501    pub s_type: StructureType,
10502    pub next: *const c_void,
10503    pub usage: ImageUsageFlags,
10504}
10505
10506impl Default for ImageViewUsageCreateInfo {
10507    #[inline]
10508    fn default() -> Self {
10509        Self {
10510            s_type: StructureType::IMAGE_VIEW_USAGE_CREATE_INFO,
10511            next: ptr::null(),
10512            usage: ImageUsageFlags::default(),
10513        }
10514    }
10515}
10516
10517unsafe impl Send for ImageViewUsageCreateInfo {}
10518unsafe impl Sync for ImageViewUsageCreateInfo {}
10519
10520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html>
10521#[repr(C)]
10522#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10523pub struct ImportAndroidHardwareBufferInfoANDROID {
10524    pub s_type: StructureType,
10525    pub next: *const c_void,
10526    pub buffer: *mut AHardwareBuffer,
10527}
10528
10529impl Default for ImportAndroidHardwareBufferInfoANDROID {
10530    #[inline]
10531    fn default() -> Self {
10532        Self {
10533            s_type: StructureType::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
10534            next: ptr::null(),
10535            buffer: ptr::null_mut(),
10536        }
10537    }
10538}
10539
10540unsafe impl Send for ImportAndroidHardwareBufferInfoANDROID {}
10541unsafe impl Sync for ImportAndroidHardwareBufferInfoANDROID {}
10542
10543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html>
10544#[repr(C)]
10545#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10546pub struct ImportFenceFdInfoKHR {
10547    pub s_type: StructureType,
10548    pub next: *const c_void,
10549    pub fence: Fence,
10550    pub flags: FenceImportFlags,
10551    pub handle_type: ExternalFenceHandleTypeFlags,
10552    pub fd: c_int,
10553}
10554
10555impl Default for ImportFenceFdInfoKHR {
10556    #[inline]
10557    fn default() -> Self {
10558        Self {
10559            s_type: StructureType::IMPORT_FENCE_FD_INFO_KHR,
10560            next: ptr::null(),
10561            fence: Fence::default(),
10562            flags: FenceImportFlags::default(),
10563            handle_type: ExternalFenceHandleTypeFlags::default(),
10564            fd: c_int::default(),
10565        }
10566    }
10567}
10568
10569unsafe impl Send for ImportFenceFdInfoKHR {}
10570unsafe impl Sync for ImportFenceFdInfoKHR {}
10571
10572/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceSciSyncInfoNV.html>
10573#[repr(C)]
10574#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10575pub struct ImportFenceSciSyncInfoNV {
10576    pub s_type: StructureType,
10577    pub next: *const c_void,
10578    pub fence: Fence,
10579    pub handle_type: ExternalFenceHandleTypeFlags,
10580    pub handle: *mut c_void,
10581}
10582
10583impl Default for ImportFenceSciSyncInfoNV {
10584    #[inline]
10585    fn default() -> Self {
10586        Self {
10587            s_type: StructureType::IMPORT_FENCE_SCI_SYNC_INFO_NV,
10588            next: ptr::null(),
10589            fence: Fence::default(),
10590            handle_type: ExternalFenceHandleTypeFlags::default(),
10591            handle: ptr::null_mut(),
10592        }
10593    }
10594}
10595
10596unsafe impl Send for ImportFenceSciSyncInfoNV {}
10597unsafe impl Sync for ImportFenceSciSyncInfoNV {}
10598
10599/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html>
10600#[repr(C)]
10601#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10602pub struct ImportFenceWin32HandleInfoKHR {
10603    pub s_type: StructureType,
10604    pub next: *const c_void,
10605    pub fence: Fence,
10606    pub flags: FenceImportFlags,
10607    pub handle_type: ExternalFenceHandleTypeFlags,
10608    pub handle: HANDLE,
10609    pub name: LPCWSTR,
10610}
10611
10612impl Default for ImportFenceWin32HandleInfoKHR {
10613    #[inline]
10614    fn default() -> Self {
10615        Self {
10616            s_type: StructureType::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
10617            next: ptr::null(),
10618            fence: Fence::default(),
10619            flags: FenceImportFlags::default(),
10620            handle_type: ExternalFenceHandleTypeFlags::default(),
10621            handle: ptr::null_mut(),
10622            name: ptr::null_mut(),
10623        }
10624    }
10625}
10626
10627unsafe impl Send for ImportFenceWin32HandleInfoKHR {}
10628unsafe impl Sync for ImportFenceWin32HandleInfoKHR {}
10629
10630/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html>
10631#[repr(C)]
10632#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10633pub struct ImportMemoryBufferCollectionFUCHSIA {
10634    pub s_type: StructureType,
10635    pub next: *const c_void,
10636    pub collection: BufferCollectionFUCHSIA,
10637    pub index: u32,
10638}
10639
10640impl Default for ImportMemoryBufferCollectionFUCHSIA {
10641    #[inline]
10642    fn default() -> Self {
10643        Self {
10644            s_type: StructureType::IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA,
10645            next: ptr::null(),
10646            collection: BufferCollectionFUCHSIA::default(),
10647            index: u32::default(),
10648        }
10649    }
10650}
10651
10652unsafe impl Send for ImportMemoryBufferCollectionFUCHSIA {}
10653unsafe impl Sync for ImportMemoryBufferCollectionFUCHSIA {}
10654
10655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html>
10656#[repr(C)]
10657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10658pub struct ImportMemoryFdInfoKHR {
10659    pub s_type: StructureType,
10660    pub next: *const c_void,
10661    pub handle_type: ExternalMemoryHandleTypeFlags,
10662    pub fd: c_int,
10663}
10664
10665impl Default for ImportMemoryFdInfoKHR {
10666    #[inline]
10667    fn default() -> Self {
10668        Self {
10669            s_type: StructureType::IMPORT_MEMORY_FD_INFO_KHR,
10670            next: ptr::null(),
10671            handle_type: ExternalMemoryHandleTypeFlags::default(),
10672            fd: c_int::default(),
10673        }
10674    }
10675}
10676
10677unsafe impl Send for ImportMemoryFdInfoKHR {}
10678unsafe impl Sync for ImportMemoryFdInfoKHR {}
10679
10680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html>
10681#[repr(C)]
10682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10683pub struct ImportMemoryHostPointerInfoEXT {
10684    pub s_type: StructureType,
10685    pub next: *const c_void,
10686    pub handle_type: ExternalMemoryHandleTypeFlags,
10687    pub host_pointer: *mut c_void,
10688}
10689
10690impl Default for ImportMemoryHostPointerInfoEXT {
10691    #[inline]
10692    fn default() -> Self {
10693        Self {
10694            s_type: StructureType::IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
10695            next: ptr::null(),
10696            handle_type: ExternalMemoryHandleTypeFlags::default(),
10697            host_pointer: ptr::null_mut(),
10698        }
10699    }
10700}
10701
10702unsafe impl Send for ImportMemoryHostPointerInfoEXT {}
10703unsafe impl Sync for ImportMemoryHostPointerInfoEXT {}
10704
10705/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html>
10706#[repr(C)]
10707#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10708pub struct ImportMemoryMetalHandleInfoEXT {
10709    pub s_type: StructureType,
10710    pub next: *const c_void,
10711    pub handle_type: ExternalMemoryHandleTypeFlags,
10712    pub handle: *mut c_void,
10713}
10714
10715impl Default for ImportMemoryMetalHandleInfoEXT {
10716    #[inline]
10717    fn default() -> Self {
10718        Self {
10719            s_type: StructureType::IMPORT_MEMORY_METAL_HANDLE_INFO_EXT,
10720            next: ptr::null(),
10721            handle_type: ExternalMemoryHandleTypeFlags::default(),
10722            handle: ptr::null_mut(),
10723        }
10724    }
10725}
10726
10727unsafe impl Send for ImportMemoryMetalHandleInfoEXT {}
10728unsafe impl Sync for ImportMemoryMetalHandleInfoEXT {}
10729
10730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemorySciBufInfoNV.html>
10731#[repr(C)]
10732#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10733pub struct ImportMemorySciBufInfoNV {
10734    pub s_type: StructureType,
10735    pub next: *const c_void,
10736    pub handle_type: ExternalMemoryHandleTypeFlags,
10737    pub handle: NvSciBufObj,
10738}
10739
10740impl Default for ImportMemorySciBufInfoNV {
10741    #[inline]
10742    fn default() -> Self {
10743        Self {
10744            s_type: StructureType::IMPORT_MEMORY_SCI_BUF_INFO_NV,
10745            next: ptr::null(),
10746            handle_type: ExternalMemoryHandleTypeFlags::default(),
10747            handle: ptr::null_mut(),
10748        }
10749    }
10750}
10751
10752unsafe impl Send for ImportMemorySciBufInfoNV {}
10753unsafe impl Sync for ImportMemorySciBufInfoNV {}
10754
10755/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html>
10756#[repr(C)]
10757#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10758pub struct ImportMemoryWin32HandleInfoKHR {
10759    pub s_type: StructureType,
10760    pub next: *const c_void,
10761    pub handle_type: ExternalMemoryHandleTypeFlags,
10762    pub handle: HANDLE,
10763    pub name: LPCWSTR,
10764}
10765
10766impl Default for ImportMemoryWin32HandleInfoKHR {
10767    #[inline]
10768    fn default() -> Self {
10769        Self {
10770            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
10771            next: ptr::null(),
10772            handle_type: ExternalMemoryHandleTypeFlags::default(),
10773            handle: ptr::null_mut(),
10774            name: ptr::null_mut(),
10775        }
10776    }
10777}
10778
10779unsafe impl Send for ImportMemoryWin32HandleInfoKHR {}
10780unsafe impl Sync for ImportMemoryWin32HandleInfoKHR {}
10781
10782/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html>
10783#[repr(C)]
10784#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10785pub struct ImportMemoryWin32HandleInfoNV {
10786    pub s_type: StructureType,
10787    pub next: *const c_void,
10788    pub handle_type: ExternalMemoryHandleTypeFlagsNV,
10789    pub handle: HANDLE,
10790}
10791
10792impl Default for ImportMemoryWin32HandleInfoNV {
10793    #[inline]
10794    fn default() -> Self {
10795        Self {
10796            s_type: StructureType::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
10797            next: ptr::null(),
10798            handle_type: ExternalMemoryHandleTypeFlagsNV::default(),
10799            handle: ptr::null_mut(),
10800        }
10801    }
10802}
10803
10804unsafe impl Send for ImportMemoryWin32HandleInfoNV {}
10805unsafe impl Sync for ImportMemoryWin32HandleInfoNV {}
10806
10807/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html>
10808#[repr(C)]
10809#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10810pub struct ImportMemoryZirconHandleInfoFUCHSIA {
10811    pub s_type: StructureType,
10812    pub next: *const c_void,
10813    pub handle_type: ExternalMemoryHandleTypeFlags,
10814    pub handle: zx_handle_t,
10815}
10816
10817impl Default for ImportMemoryZirconHandleInfoFUCHSIA {
10818    #[inline]
10819    fn default() -> Self {
10820        Self {
10821            s_type: StructureType::IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
10822            next: ptr::null(),
10823            handle_type: ExternalMemoryHandleTypeFlags::default(),
10824            handle: zx_handle_t::default(),
10825        }
10826    }
10827}
10828
10829unsafe impl Send for ImportMemoryZirconHandleInfoFUCHSIA {}
10830unsafe impl Sync for ImportMemoryZirconHandleInfoFUCHSIA {}
10831
10832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html>
10833#[repr(C)]
10834#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10835pub struct ImportMetalBufferInfoEXT {
10836    pub s_type: StructureType,
10837    pub next: *const c_void,
10838    pub mtl_buffer: MTLBuffer_id,
10839}
10840
10841impl Default for ImportMetalBufferInfoEXT {
10842    #[inline]
10843    fn default() -> Self {
10844        Self {
10845            s_type: StructureType::IMPORT_METAL_BUFFER_INFO_EXT,
10846            next: ptr::null(),
10847            mtl_buffer: ptr::null_mut(),
10848        }
10849    }
10850}
10851
10852unsafe impl Send for ImportMetalBufferInfoEXT {}
10853unsafe impl Sync for ImportMetalBufferInfoEXT {}
10854
10855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html>
10856#[repr(C)]
10857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10858pub struct ImportMetalIOSurfaceInfoEXT {
10859    pub s_type: StructureType,
10860    pub next: *const c_void,
10861    pub io_surface: IOSurfaceRef,
10862}
10863
10864impl Default for ImportMetalIOSurfaceInfoEXT {
10865    #[inline]
10866    fn default() -> Self {
10867        Self {
10868            s_type: StructureType::IMPORT_METAL_IO_SURFACE_INFO_EXT,
10869            next: ptr::null(),
10870            io_surface: ptr::null_mut(),
10871        }
10872    }
10873}
10874
10875unsafe impl Send for ImportMetalIOSurfaceInfoEXT {}
10876unsafe impl Sync for ImportMetalIOSurfaceInfoEXT {}
10877
10878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html>
10879#[repr(C)]
10880#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10881pub struct ImportMetalSharedEventInfoEXT {
10882    pub s_type: StructureType,
10883    pub next: *const c_void,
10884    pub mtl_shared_event: MTLSharedEvent_id,
10885}
10886
10887impl Default for ImportMetalSharedEventInfoEXT {
10888    #[inline]
10889    fn default() -> Self {
10890        Self {
10891            s_type: StructureType::IMPORT_METAL_SHARED_EVENT_INFO_EXT,
10892            next: ptr::null(),
10893            mtl_shared_event: ptr::null_mut(),
10894        }
10895    }
10896}
10897
10898unsafe impl Send for ImportMetalSharedEventInfoEXT {}
10899unsafe impl Sync for ImportMetalSharedEventInfoEXT {}
10900
10901/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html>
10902#[repr(C)]
10903#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10904pub struct ImportMetalTextureInfoEXT {
10905    pub s_type: StructureType,
10906    pub next: *const c_void,
10907    pub plane: ImageAspectFlags,
10908    pub mtl_texture: MTLTexture_id,
10909}
10910
10911impl Default for ImportMetalTextureInfoEXT {
10912    #[inline]
10913    fn default() -> Self {
10914        Self {
10915            s_type: StructureType::IMPORT_METAL_TEXTURE_INFO_EXT,
10916            next: ptr::null(),
10917            plane: ImageAspectFlags::default(),
10918            mtl_texture: ptr::null_mut(),
10919        }
10920    }
10921}
10922
10923unsafe impl Send for ImportMetalTextureInfoEXT {}
10924unsafe impl Sync for ImportMetalTextureInfoEXT {}
10925
10926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportNativeBufferInfoOHOS.html>
10927#[repr(C)]
10928#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10929pub struct ImportNativeBufferInfoOHOS {
10930    pub s_type: StructureType,
10931    pub next: *const c_void,
10932    pub buffer: *mut OH_NativeBuffer,
10933}
10934
10935impl Default for ImportNativeBufferInfoOHOS {
10936    #[inline]
10937    fn default() -> Self {
10938        Self {
10939            s_type: StructureType::IMPORT_NATIVE_BUFFER_INFO_OHOS,
10940            next: ptr::null(),
10941            buffer: ptr::null_mut(),
10942        }
10943    }
10944}
10945
10946unsafe impl Send for ImportNativeBufferInfoOHOS {}
10947unsafe impl Sync for ImportNativeBufferInfoOHOS {}
10948
10949/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html>
10950#[repr(C)]
10951#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10952pub struct ImportScreenBufferInfoQNX {
10953    pub s_type: StructureType,
10954    pub next: *const c_void,
10955    pub buffer: *mut _screen_buffer,
10956}
10957
10958impl Default for ImportScreenBufferInfoQNX {
10959    #[inline]
10960    fn default() -> Self {
10961        Self {
10962            s_type: StructureType::IMPORT_SCREEN_BUFFER_INFO_QNX,
10963            next: ptr::null(),
10964            buffer: ptr::null_mut(),
10965        }
10966    }
10967}
10968
10969unsafe impl Send for ImportScreenBufferInfoQNX {}
10970unsafe impl Sync for ImportScreenBufferInfoQNX {}
10971
10972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html>
10973#[repr(C)]
10974#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
10975pub struct ImportSemaphoreFdInfoKHR {
10976    pub s_type: StructureType,
10977    pub next: *const c_void,
10978    pub semaphore: Semaphore,
10979    pub flags: SemaphoreImportFlags,
10980    pub handle_type: ExternalSemaphoreHandleTypeFlags,
10981    pub fd: c_int,
10982}
10983
10984impl Default for ImportSemaphoreFdInfoKHR {
10985    #[inline]
10986    fn default() -> Self {
10987        Self {
10988            s_type: StructureType::IMPORT_SEMAPHORE_FD_INFO_KHR,
10989            next: ptr::null(),
10990            semaphore: Semaphore::default(),
10991            flags: SemaphoreImportFlags::default(),
10992            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
10993            fd: c_int::default(),
10994        }
10995    }
10996}
10997
10998unsafe impl Send for ImportSemaphoreFdInfoKHR {}
10999unsafe impl Sync for ImportSemaphoreFdInfoKHR {}
11000
11001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreSciSyncInfoNV.html>
11002#[repr(C)]
11003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11004pub struct ImportSemaphoreSciSyncInfoNV {
11005    pub s_type: StructureType,
11006    pub next: *const c_void,
11007    pub semaphore: Semaphore,
11008    pub handle_type: ExternalSemaphoreHandleTypeFlags,
11009    pub handle: *mut c_void,
11010}
11011
11012impl Default for ImportSemaphoreSciSyncInfoNV {
11013    #[inline]
11014    fn default() -> Self {
11015        Self {
11016            s_type: StructureType::IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV,
11017            next: ptr::null(),
11018            semaphore: Semaphore::default(),
11019            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
11020            handle: ptr::null_mut(),
11021        }
11022    }
11023}
11024
11025unsafe impl Send for ImportSemaphoreSciSyncInfoNV {}
11026unsafe impl Sync for ImportSemaphoreSciSyncInfoNV {}
11027
11028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html>
11029#[repr(C)]
11030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11031pub struct ImportSemaphoreWin32HandleInfoKHR {
11032    pub s_type: StructureType,
11033    pub next: *const c_void,
11034    pub semaphore: Semaphore,
11035    pub flags: SemaphoreImportFlags,
11036    pub handle_type: ExternalSemaphoreHandleTypeFlags,
11037    pub handle: HANDLE,
11038    pub name: LPCWSTR,
11039}
11040
11041impl Default for ImportSemaphoreWin32HandleInfoKHR {
11042    #[inline]
11043    fn default() -> Self {
11044        Self {
11045            s_type: StructureType::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
11046            next: ptr::null(),
11047            semaphore: Semaphore::default(),
11048            flags: SemaphoreImportFlags::default(),
11049            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
11050            handle: ptr::null_mut(),
11051            name: ptr::null_mut(),
11052        }
11053    }
11054}
11055
11056unsafe impl Send for ImportSemaphoreWin32HandleInfoKHR {}
11057unsafe impl Sync for ImportSemaphoreWin32HandleInfoKHR {}
11058
11059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html>
11060#[repr(C)]
11061#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11062pub struct ImportSemaphoreZirconHandleInfoFUCHSIA {
11063    pub s_type: StructureType,
11064    pub next: *const c_void,
11065    pub semaphore: Semaphore,
11066    pub flags: SemaphoreImportFlags,
11067    pub handle_type: ExternalSemaphoreHandleTypeFlags,
11068    pub zircon_handle: zx_handle_t,
11069}
11070
11071impl Default for ImportSemaphoreZirconHandleInfoFUCHSIA {
11072    #[inline]
11073    fn default() -> Self {
11074        Self {
11075            s_type: StructureType::IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
11076            next: ptr::null(),
11077            semaphore: Semaphore::default(),
11078            flags: SemaphoreImportFlags::default(),
11079            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
11080            zircon_handle: zx_handle_t::default(),
11081        }
11082    }
11083}
11084
11085unsafe impl Send for ImportSemaphoreZirconHandleInfoFUCHSIA {}
11086unsafe impl Sync for ImportSemaphoreZirconHandleInfoFUCHSIA {}
11087
11088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html>
11089#[repr(C)]
11090#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11091pub struct IndirectCommandsExecutionSetTokenEXT {
11092    pub type_: IndirectExecutionSetInfoTypeEXT,
11093    pub shader_stages: ShaderStageFlags,
11094}
11095
11096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html>
11097#[repr(C)]
11098#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11099pub struct IndirectCommandsIndexBufferTokenEXT {
11100    pub mode: IndirectCommandsInputModeFlagsEXT,
11101}
11102
11103/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html>
11104#[repr(C)]
11105#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11106pub struct IndirectCommandsLayoutCreateInfoEXT {
11107    pub s_type: StructureType,
11108    pub next: *const c_void,
11109    pub flags: IndirectCommandsLayoutUsageFlagsEXT,
11110    pub shader_stages: ShaderStageFlags,
11111    pub indirect_stride: u32,
11112    pub pipeline_layout: PipelineLayout,
11113    pub token_count: u32,
11114    pub tokens: *const IndirectCommandsLayoutTokenEXT,
11115}
11116
11117impl Default for IndirectCommandsLayoutCreateInfoEXT {
11118    #[inline]
11119    fn default() -> Self {
11120        Self {
11121            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT,
11122            next: ptr::null(),
11123            flags: IndirectCommandsLayoutUsageFlagsEXT::default(),
11124            shader_stages: ShaderStageFlags::default(),
11125            indirect_stride: u32::default(),
11126            pipeline_layout: PipelineLayout::default(),
11127            token_count: u32::default(),
11128            tokens: ptr::null(),
11129        }
11130    }
11131}
11132
11133unsafe impl Send for IndirectCommandsLayoutCreateInfoEXT {}
11134unsafe impl Sync for IndirectCommandsLayoutCreateInfoEXT {}
11135
11136/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html>
11137#[repr(C)]
11138#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11139pub struct IndirectCommandsLayoutCreateInfoNV {
11140    pub s_type: StructureType,
11141    pub next: *const c_void,
11142    pub flags: IndirectCommandsLayoutUsageFlagsNV,
11143    pub pipeline_bind_point: PipelineBindPoint,
11144    pub token_count: u32,
11145    pub tokens: *const IndirectCommandsLayoutTokenNV,
11146    pub stream_count: u32,
11147    pub stream_strides: *const u32,
11148}
11149
11150impl Default for IndirectCommandsLayoutCreateInfoNV {
11151    #[inline]
11152    fn default() -> Self {
11153        Self {
11154            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,
11155            next: ptr::null(),
11156            flags: IndirectCommandsLayoutUsageFlagsNV::default(),
11157            pipeline_bind_point: PipelineBindPoint::default(),
11158            token_count: u32::default(),
11159            tokens: ptr::null(),
11160            stream_count: u32::default(),
11161            stream_strides: ptr::null(),
11162        }
11163    }
11164}
11165
11166unsafe impl Send for IndirectCommandsLayoutCreateInfoNV {}
11167unsafe impl Sync for IndirectCommandsLayoutCreateInfoNV {}
11168
11169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutPushDataTokenNV.html>
11170#[repr(C)]
11171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11172pub struct IndirectCommandsLayoutPushDataTokenNV {
11173    pub s_type: StructureType,
11174    pub next: *const c_void,
11175    pub push_data_offset: u32,
11176    pub push_data_size: u32,
11177}
11178
11179impl Default for IndirectCommandsLayoutPushDataTokenNV {
11180    #[inline]
11181    fn default() -> Self {
11182        Self {
11183            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV,
11184            next: ptr::null(),
11185            push_data_offset: u32::default(),
11186            push_data_size: u32::default(),
11187        }
11188    }
11189}
11190
11191unsafe impl Send for IndirectCommandsLayoutPushDataTokenNV {}
11192unsafe impl Sync for IndirectCommandsLayoutPushDataTokenNV {}
11193
11194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html>
11195#[repr(C)]
11196#[derive(Copy, Clone, Debug)]
11197pub struct IndirectCommandsLayoutTokenEXT {
11198    pub s_type: StructureType,
11199    pub next: *const c_void,
11200    pub type_: IndirectCommandsTokenTypeEXT,
11201    pub data: IndirectCommandsTokenDataEXT,
11202    pub offset: u32,
11203}
11204
11205impl Default for IndirectCommandsLayoutTokenEXT {
11206    #[inline]
11207    fn default() -> Self {
11208        Self {
11209            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT,
11210            next: ptr::null(),
11211            type_: IndirectCommandsTokenTypeEXT::default(),
11212            data: IndirectCommandsTokenDataEXT::default(),
11213            offset: u32::default(),
11214        }
11215    }
11216}
11217
11218unsafe impl Send for IndirectCommandsLayoutTokenEXT {}
11219unsafe impl Sync for IndirectCommandsLayoutTokenEXT {}
11220
11221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html>
11222#[repr(C)]
11223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11224pub struct IndirectCommandsLayoutTokenNV {
11225    pub s_type: StructureType,
11226    pub next: *const c_void,
11227    pub token_type: IndirectCommandsTokenTypeNV,
11228    pub stream: u32,
11229    pub offset: u32,
11230    pub vertex_binding_unit: u32,
11231    pub vertex_dynamic_stride: Bool32,
11232    pub pushconstant_pipeline_layout: PipelineLayout,
11233    pub pushconstant_shader_stage_flags: ShaderStageFlags,
11234    pub pushconstant_offset: u32,
11235    pub pushconstant_size: u32,
11236    pub indirect_state_flags: IndirectStateFlagsNV,
11237    pub index_type_count: u32,
11238    pub index_types: *const IndexType,
11239    pub index_type_values: *const u32,
11240}
11241
11242impl Default for IndirectCommandsLayoutTokenNV {
11243    #[inline]
11244    fn default() -> Self {
11245        Self {
11246            s_type: StructureType::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,
11247            next: ptr::null(),
11248            token_type: IndirectCommandsTokenTypeNV::default(),
11249            stream: u32::default(),
11250            offset: u32::default(),
11251            vertex_binding_unit: u32::default(),
11252            vertex_dynamic_stride: Bool32::default(),
11253            pushconstant_pipeline_layout: PipelineLayout::default(),
11254            pushconstant_shader_stage_flags: ShaderStageFlags::default(),
11255            pushconstant_offset: u32::default(),
11256            pushconstant_size: u32::default(),
11257            indirect_state_flags: IndirectStateFlagsNV::default(),
11258            index_type_count: u32::default(),
11259            index_types: ptr::null(),
11260            index_type_values: ptr::null(),
11261        }
11262    }
11263}
11264
11265unsafe impl Send for IndirectCommandsLayoutTokenNV {}
11266unsafe impl Sync for IndirectCommandsLayoutTokenNV {}
11267
11268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html>
11269#[repr(C)]
11270#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11271pub struct IndirectCommandsPushConstantTokenEXT {
11272    pub update_range: PushConstantRange,
11273}
11274
11275/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html>
11276#[repr(C)]
11277#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11278pub struct IndirectCommandsStreamNV {
11279    pub buffer: Buffer,
11280    pub offset: DeviceSize,
11281}
11282
11283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html>
11284#[repr(C)]
11285#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11286pub struct IndirectCommandsVertexBufferTokenEXT {
11287    pub vertex_binding_unit: u32,
11288}
11289
11290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html>
11291#[repr(C)]
11292#[derive(Copy, Clone, Debug)]
11293pub struct IndirectExecutionSetCreateInfoEXT {
11294    pub s_type: StructureType,
11295    pub next: *const c_void,
11296    pub type_: IndirectExecutionSetInfoTypeEXT,
11297    pub info: IndirectExecutionSetInfoEXT,
11298}
11299
11300impl Default for IndirectExecutionSetCreateInfoEXT {
11301    #[inline]
11302    fn default() -> Self {
11303        Self {
11304            s_type: StructureType::INDIRECT_EXECUTION_SET_CREATE_INFO_EXT,
11305            next: ptr::null(),
11306            type_: IndirectExecutionSetInfoTypeEXT::default(),
11307            info: IndirectExecutionSetInfoEXT::default(),
11308        }
11309    }
11310}
11311
11312unsafe impl Send for IndirectExecutionSetCreateInfoEXT {}
11313unsafe impl Sync for IndirectExecutionSetCreateInfoEXT {}
11314
11315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html>
11316#[repr(C)]
11317#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11318pub struct IndirectExecutionSetPipelineInfoEXT {
11319    pub s_type: StructureType,
11320    pub next: *const c_void,
11321    pub initial_pipeline: Pipeline,
11322    pub max_pipeline_count: u32,
11323}
11324
11325impl Default for IndirectExecutionSetPipelineInfoEXT {
11326    #[inline]
11327    fn default() -> Self {
11328        Self {
11329            s_type: StructureType::INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT,
11330            next: ptr::null(),
11331            initial_pipeline: Pipeline::default(),
11332            max_pipeline_count: u32::default(),
11333        }
11334    }
11335}
11336
11337unsafe impl Send for IndirectExecutionSetPipelineInfoEXT {}
11338unsafe impl Sync for IndirectExecutionSetPipelineInfoEXT {}
11339
11340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html>
11341#[repr(C)]
11342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11343pub struct IndirectExecutionSetShaderInfoEXT {
11344    pub s_type: StructureType,
11345    pub next: *const c_void,
11346    pub shader_count: u32,
11347    pub initial_shaders: *const ShaderEXT,
11348    pub set_layout_infos: *const IndirectExecutionSetShaderLayoutInfoEXT,
11349    pub max_shader_count: u32,
11350    pub push_constant_range_count: u32,
11351    pub push_constant_ranges: *const PushConstantRange,
11352}
11353
11354impl Default for IndirectExecutionSetShaderInfoEXT {
11355    #[inline]
11356    fn default() -> Self {
11357        Self {
11358            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_INFO_EXT,
11359            next: ptr::null(),
11360            shader_count: u32::default(),
11361            initial_shaders: ptr::null(),
11362            set_layout_infos: ptr::null(),
11363            max_shader_count: u32::default(),
11364            push_constant_range_count: u32::default(),
11365            push_constant_ranges: ptr::null(),
11366        }
11367    }
11368}
11369
11370unsafe impl Send for IndirectExecutionSetShaderInfoEXT {}
11371unsafe impl Sync for IndirectExecutionSetShaderInfoEXT {}
11372
11373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html>
11374#[repr(C)]
11375#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11376pub struct IndirectExecutionSetShaderLayoutInfoEXT {
11377    pub s_type: StructureType,
11378    pub next: *const c_void,
11379    pub set_layout_count: u32,
11380    pub set_layouts: *const DescriptorSetLayout,
11381}
11382
11383impl Default for IndirectExecutionSetShaderLayoutInfoEXT {
11384    #[inline]
11385    fn default() -> Self {
11386        Self {
11387            s_type: StructureType::INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT,
11388            next: ptr::null(),
11389            set_layout_count: u32::default(),
11390            set_layouts: ptr::null(),
11391        }
11392    }
11393}
11394
11395unsafe impl Send for IndirectExecutionSetShaderLayoutInfoEXT {}
11396unsafe impl Sync for IndirectExecutionSetShaderLayoutInfoEXT {}
11397
11398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html>
11399#[repr(C)]
11400#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11401pub struct InitializePerformanceApiInfoINTEL {
11402    pub s_type: StructureType,
11403    pub next: *const c_void,
11404    pub user_data: *mut c_void,
11405}
11406
11407impl Default for InitializePerformanceApiInfoINTEL {
11408    #[inline]
11409    fn default() -> Self {
11410        Self {
11411            s_type: StructureType::INITIALIZE_PERFORMANCE_API_INFO_INTEL,
11412            next: ptr::null(),
11413            user_data: ptr::null_mut(),
11414        }
11415    }
11416}
11417
11418unsafe impl Send for InitializePerformanceApiInfoINTEL {}
11419unsafe impl Sync for InitializePerformanceApiInfoINTEL {}
11420
11421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html>
11422#[repr(C)]
11423#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11424pub struct InputAttachmentAspectReference {
11425    pub subpass: u32,
11426    pub input_attachment_index: u32,
11427    pub aspect_mask: ImageAspectFlags,
11428}
11429
11430/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html>
11431#[repr(C)]
11432#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11433pub struct InstanceCreateInfo {
11434    pub s_type: StructureType,
11435    pub next: *const c_void,
11436    pub flags: InstanceCreateFlags,
11437    pub application_info: *const ApplicationInfo,
11438    pub enabled_layer_count: u32,
11439    pub enabled_layer_names: *const *const c_char,
11440    pub enabled_extension_count: u32,
11441    pub enabled_extension_names: *const *const c_char,
11442}
11443
11444impl Default for InstanceCreateInfo {
11445    #[inline]
11446    fn default() -> Self {
11447        Self {
11448            s_type: StructureType::INSTANCE_CREATE_INFO,
11449            next: ptr::null(),
11450            flags: InstanceCreateFlags::default(),
11451            application_info: ptr::null(),
11452            enabled_layer_count: u32::default(),
11453            enabled_layer_names: ptr::null(),
11454            enabled_extension_count: u32::default(),
11455            enabled_extension_names: ptr::null(),
11456        }
11457    }
11458}
11459
11460unsafe impl Send for InstanceCreateInfo {}
11461unsafe impl Sync for InstanceCreateInfo {}
11462
11463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html>
11464#[repr(C)]
11465#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11466pub struct LatencySleepInfoNV {
11467    pub s_type: StructureType,
11468    pub next: *const c_void,
11469    pub signal_semaphore: Semaphore,
11470    pub value: u64,
11471}
11472
11473impl Default for LatencySleepInfoNV {
11474    #[inline]
11475    fn default() -> Self {
11476        Self {
11477            s_type: StructureType::LATENCY_SLEEP_INFO_NV,
11478            next: ptr::null(),
11479            signal_semaphore: Semaphore::default(),
11480            value: u64::default(),
11481        }
11482    }
11483}
11484
11485unsafe impl Send for LatencySleepInfoNV {}
11486unsafe impl Sync for LatencySleepInfoNV {}
11487
11488/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html>
11489#[repr(C)]
11490#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11491pub struct LatencySleepModeInfoNV {
11492    pub s_type: StructureType,
11493    pub next: *const c_void,
11494    pub low_latency_mode: Bool32,
11495    pub low_latency_boost: Bool32,
11496    pub minimum_interval_us: u32,
11497}
11498
11499impl Default for LatencySleepModeInfoNV {
11500    #[inline]
11501    fn default() -> Self {
11502        Self {
11503            s_type: StructureType::LATENCY_SLEEP_MODE_INFO_NV,
11504            next: ptr::null(),
11505            low_latency_mode: Bool32::default(),
11506            low_latency_boost: Bool32::default(),
11507            minimum_interval_us: u32::default(),
11508        }
11509    }
11510}
11511
11512unsafe impl Send for LatencySleepModeInfoNV {}
11513unsafe impl Sync for LatencySleepModeInfoNV {}
11514
11515/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html>
11516#[repr(C)]
11517#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11518pub struct LatencySubmissionPresentIdNV {
11519    pub s_type: StructureType,
11520    pub next: *const c_void,
11521    pub present_id: u64,
11522}
11523
11524impl Default for LatencySubmissionPresentIdNV {
11525    #[inline]
11526    fn default() -> Self {
11527        Self {
11528            s_type: StructureType::LATENCY_SUBMISSION_PRESENT_ID_NV,
11529            next: ptr::null(),
11530            present_id: u64::default(),
11531        }
11532    }
11533}
11534
11535unsafe impl Send for LatencySubmissionPresentIdNV {}
11536unsafe impl Sync for LatencySubmissionPresentIdNV {}
11537
11538/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html>
11539#[repr(C)]
11540#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11541pub struct LatencySurfaceCapabilitiesNV {
11542    pub s_type: StructureType,
11543    pub next: *const c_void,
11544    pub present_mode_count: u32,
11545    pub present_modes: *mut PresentModeKHR,
11546}
11547
11548impl Default for LatencySurfaceCapabilitiesNV {
11549    #[inline]
11550    fn default() -> Self {
11551        Self {
11552            s_type: StructureType::LATENCY_SURFACE_CAPABILITIES_NV,
11553            next: ptr::null(),
11554            present_mode_count: u32::default(),
11555            present_modes: ptr::null_mut(),
11556        }
11557    }
11558}
11559
11560unsafe impl Send for LatencySurfaceCapabilitiesNV {}
11561unsafe impl Sync for LatencySurfaceCapabilitiesNV {}
11562
11563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html>
11564#[repr(C)]
11565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11566pub struct LatencyTimingsFrameReportNV {
11567    pub s_type: StructureType,
11568    pub next: *mut c_void,
11569    pub present_id: u64,
11570    pub input_sample_time_us: u64,
11571    pub sim_start_time_us: u64,
11572    pub sim_end_time_us: u64,
11573    pub render_submit_start_time_us: u64,
11574    pub render_submit_end_time_us: u64,
11575    pub present_start_time_us: u64,
11576    pub present_end_time_us: u64,
11577    pub driver_start_time_us: u64,
11578    pub driver_end_time_us: u64,
11579    pub os_render_queue_start_time_us: u64,
11580    pub os_render_queue_end_time_us: u64,
11581    pub gpu_render_start_time_us: u64,
11582    pub gpu_render_end_time_us: u64,
11583}
11584
11585impl Default for LatencyTimingsFrameReportNV {
11586    #[inline]
11587    fn default() -> Self {
11588        Self {
11589            s_type: StructureType::LATENCY_TIMINGS_FRAME_REPORT_NV,
11590            next: ptr::null_mut(),
11591            present_id: u64::default(),
11592            input_sample_time_us: u64::default(),
11593            sim_start_time_us: u64::default(),
11594            sim_end_time_us: u64::default(),
11595            render_submit_start_time_us: u64::default(),
11596            render_submit_end_time_us: u64::default(),
11597            present_start_time_us: u64::default(),
11598            present_end_time_us: u64::default(),
11599            driver_start_time_us: u64::default(),
11600            driver_end_time_us: u64::default(),
11601            os_render_queue_start_time_us: u64::default(),
11602            os_render_queue_end_time_us: u64::default(),
11603            gpu_render_start_time_us: u64::default(),
11604            gpu_render_end_time_us: u64::default(),
11605        }
11606    }
11607}
11608
11609unsafe impl Send for LatencyTimingsFrameReportNV {}
11610unsafe impl Sync for LatencyTimingsFrameReportNV {}
11611
11612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerProperties.html>
11613#[repr(C)]
11614#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
11615pub struct LayerProperties {
11616    pub layer_name: StringArray<MAX_EXTENSION_NAME_SIZE>,
11617    pub spec_version: u32,
11618    pub implementation_version: u32,
11619    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
11620}
11621
11622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingEXT.html>
11623#[repr(C)]
11624#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11625pub struct LayerSettingEXT {
11626    pub layer_name: *const c_char,
11627    pub setting_name: *const c_char,
11628    pub type_: LayerSettingTypeEXT,
11629    pub value_count: u32,
11630    pub values: *const c_void,
11631}
11632
11633impl Default for LayerSettingEXT {
11634    #[inline]
11635    fn default() -> Self {
11636        Self {
11637            layer_name: ptr::null(),
11638            setting_name: ptr::null(),
11639            type_: LayerSettingTypeEXT::default(),
11640            value_count: u32::default(),
11641            values: ptr::null(),
11642        }
11643    }
11644}
11645
11646unsafe impl Send for LayerSettingEXT {}
11647unsafe impl Sync for LayerSettingEXT {}
11648
11649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html>
11650#[repr(C)]
11651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11652pub struct LayerSettingsCreateInfoEXT {
11653    pub s_type: StructureType,
11654    pub next: *const c_void,
11655    pub setting_count: u32,
11656    pub settings: *const LayerSettingEXT,
11657}
11658
11659impl Default for LayerSettingsCreateInfoEXT {
11660    #[inline]
11661    fn default() -> Self {
11662        Self {
11663            s_type: StructureType::LAYER_SETTINGS_CREATE_INFO_EXT,
11664            next: ptr::null(),
11665            setting_count: u32::default(),
11666            settings: ptr::null(),
11667        }
11668    }
11669}
11670
11671unsafe impl Send for LayerSettingsCreateInfoEXT {}
11672unsafe impl Sync for LayerSettingsCreateInfoEXT {}
11673
11674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html>
11675#[repr(C)]
11676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11677pub struct MacOSSurfaceCreateInfoMVK {
11678    pub s_type: StructureType,
11679    pub next: *const c_void,
11680    pub flags: MacOSSurfaceCreateFlagsMVK,
11681    pub view: *const c_void,
11682}
11683
11684impl Default for MacOSSurfaceCreateInfoMVK {
11685    #[inline]
11686    fn default() -> Self {
11687        Self {
11688            s_type: StructureType::MACOS_SURFACE_CREATE_INFO_MVK,
11689            next: ptr::null(),
11690            flags: MacOSSurfaceCreateFlagsMVK::default(),
11691            view: ptr::null(),
11692        }
11693    }
11694}
11695
11696unsafe impl Send for MacOSSurfaceCreateInfoMVK {}
11697unsafe impl Sync for MacOSSurfaceCreateInfoMVK {}
11698
11699/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMappedMemoryRange.html>
11700#[repr(C)]
11701#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11702pub struct MappedMemoryRange {
11703    pub s_type: StructureType,
11704    pub next: *const c_void,
11705    pub memory: DeviceMemory,
11706    pub offset: DeviceSize,
11707    pub size: DeviceSize,
11708}
11709
11710impl Default for MappedMemoryRange {
11711    #[inline]
11712    fn default() -> Self {
11713        Self {
11714            s_type: StructureType::MAPPED_MEMORY_RANGE,
11715            next: ptr::null(),
11716            memory: DeviceMemory::default(),
11717            offset: DeviceSize::default(),
11718            size: DeviceSize::default(),
11719        }
11720    }
11721}
11722
11723unsafe impl Send for MappedMemoryRange {}
11724unsafe impl Sync for MappedMemoryRange {}
11725
11726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html>
11727#[repr(C)]
11728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11729pub struct MemoryAllocateFlagsInfo {
11730    pub s_type: StructureType,
11731    pub next: *const c_void,
11732    pub flags: MemoryAllocateFlags,
11733    pub device_mask: u32,
11734}
11735
11736impl Default for MemoryAllocateFlagsInfo {
11737    #[inline]
11738    fn default() -> Self {
11739        Self {
11740            s_type: StructureType::MEMORY_ALLOCATE_FLAGS_INFO,
11741            next: ptr::null(),
11742            flags: MemoryAllocateFlags::default(),
11743            device_mask: u32::default(),
11744        }
11745    }
11746}
11747
11748unsafe impl Send for MemoryAllocateFlagsInfo {}
11749unsafe impl Sync for MemoryAllocateFlagsInfo {}
11750
11751/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html>
11752#[repr(C)]
11753#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11754pub struct MemoryAllocateInfo {
11755    pub s_type: StructureType,
11756    pub next: *const c_void,
11757    pub allocation_size: DeviceSize,
11758    pub memory_type_index: u32,
11759}
11760
11761impl Default for MemoryAllocateInfo {
11762    #[inline]
11763    fn default() -> Self {
11764        Self {
11765            s_type: StructureType::MEMORY_ALLOCATE_INFO,
11766            next: ptr::null(),
11767            allocation_size: DeviceSize::default(),
11768            memory_type_index: u32::default(),
11769        }
11770    }
11771}
11772
11773unsafe impl Send for MemoryAllocateInfo {}
11774unsafe impl Sync for MemoryAllocateInfo {}
11775
11776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier.html>
11777#[repr(C)]
11778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11779pub struct MemoryBarrier {
11780    pub s_type: StructureType,
11781    pub next: *const c_void,
11782    pub src_access_mask: AccessFlags,
11783    pub dst_access_mask: AccessFlags,
11784}
11785
11786impl Default for MemoryBarrier {
11787    #[inline]
11788    fn default() -> Self {
11789        Self {
11790            s_type: StructureType::MEMORY_BARRIER,
11791            next: ptr::null(),
11792            src_access_mask: AccessFlags::default(),
11793            dst_access_mask: AccessFlags::default(),
11794        }
11795    }
11796}
11797
11798unsafe impl Send for MemoryBarrier {}
11799unsafe impl Sync for MemoryBarrier {}
11800
11801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2.html>
11802#[repr(C)]
11803#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11804pub struct MemoryBarrier2 {
11805    pub s_type: StructureType,
11806    pub next: *const c_void,
11807    pub src_stage_mask: PipelineStageFlags2,
11808    pub src_access_mask: AccessFlags2,
11809    pub dst_stage_mask: PipelineStageFlags2,
11810    pub dst_access_mask: AccessFlags2,
11811}
11812
11813impl Default for MemoryBarrier2 {
11814    #[inline]
11815    fn default() -> Self {
11816        Self {
11817            s_type: StructureType::MEMORY_BARRIER_2,
11818            next: ptr::null(),
11819            src_stage_mask: PipelineStageFlags2::default(),
11820            src_access_mask: AccessFlags2::default(),
11821            dst_stage_mask: PipelineStageFlags2::default(),
11822            dst_access_mask: AccessFlags2::default(),
11823        }
11824    }
11825}
11826
11827unsafe impl Send for MemoryBarrier2 {}
11828unsafe impl Sync for MemoryBarrier2 {}
11829
11830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html>
11831#[repr(C)]
11832#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11833pub struct MemoryBarrierAccessFlags3KHR {
11834    pub s_type: StructureType,
11835    pub next: *const c_void,
11836    pub src_access_mask3: AccessFlags3KHR,
11837    pub dst_access_mask3: AccessFlags3KHR,
11838}
11839
11840impl Default for MemoryBarrierAccessFlags3KHR {
11841    #[inline]
11842    fn default() -> Self {
11843        Self {
11844            s_type: StructureType::MEMORY_BARRIER_ACCESS_FLAGS_3_KHR,
11845            next: ptr::null(),
11846            src_access_mask3: AccessFlags3KHR::default(),
11847            dst_access_mask3: AccessFlags3KHR::default(),
11848        }
11849    }
11850}
11851
11852unsafe impl Send for MemoryBarrierAccessFlags3KHR {}
11853unsafe impl Sync for MemoryBarrierAccessFlags3KHR {}
11854
11855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html>
11856#[repr(C)]
11857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11858pub struct MemoryDedicatedAllocateInfo {
11859    pub s_type: StructureType,
11860    pub next: *const c_void,
11861    pub image: Image,
11862    pub buffer: Buffer,
11863}
11864
11865impl Default for MemoryDedicatedAllocateInfo {
11866    #[inline]
11867    fn default() -> Self {
11868        Self {
11869            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO,
11870            next: ptr::null(),
11871            image: Image::default(),
11872            buffer: Buffer::default(),
11873        }
11874    }
11875}
11876
11877unsafe impl Send for MemoryDedicatedAllocateInfo {}
11878unsafe impl Sync for MemoryDedicatedAllocateInfo {}
11879
11880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoTensorARM.html>
11881#[repr(C)]
11882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11883pub struct MemoryDedicatedAllocateInfoTensorARM {
11884    pub s_type: StructureType,
11885    pub next: *const c_void,
11886    pub tensor: TensorARM,
11887}
11888
11889impl Default for MemoryDedicatedAllocateInfoTensorARM {
11890    #[inline]
11891    fn default() -> Self {
11892        Self {
11893            s_type: StructureType::MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM,
11894            next: ptr::null(),
11895            tensor: TensorARM::default(),
11896        }
11897    }
11898}
11899
11900unsafe impl Send for MemoryDedicatedAllocateInfoTensorARM {}
11901unsafe impl Sync for MemoryDedicatedAllocateInfoTensorARM {}
11902
11903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html>
11904#[repr(C)]
11905#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11906pub struct MemoryDedicatedRequirements {
11907    pub s_type: StructureType,
11908    pub next: *mut c_void,
11909    pub prefers_dedicated_allocation: Bool32,
11910    pub requires_dedicated_allocation: Bool32,
11911}
11912
11913impl Default for MemoryDedicatedRequirements {
11914    #[inline]
11915    fn default() -> Self {
11916        Self {
11917            s_type: StructureType::MEMORY_DEDICATED_REQUIREMENTS,
11918            next: ptr::null_mut(),
11919            prefers_dedicated_allocation: Bool32::default(),
11920            requires_dedicated_allocation: Bool32::default(),
11921        }
11922    }
11923}
11924
11925unsafe impl Send for MemoryDedicatedRequirements {}
11926unsafe impl Sync for MemoryDedicatedRequirements {}
11927
11928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html>
11929#[repr(C)]
11930#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11931pub struct MemoryFdPropertiesKHR {
11932    pub s_type: StructureType,
11933    pub next: *mut c_void,
11934    pub memory_type_bits: u32,
11935}
11936
11937impl Default for MemoryFdPropertiesKHR {
11938    #[inline]
11939    fn default() -> Self {
11940        Self {
11941            s_type: StructureType::MEMORY_FD_PROPERTIES_KHR,
11942            next: ptr::null_mut(),
11943            memory_type_bits: u32::default(),
11944        }
11945    }
11946}
11947
11948unsafe impl Send for MemoryFdPropertiesKHR {}
11949unsafe impl Sync for MemoryFdPropertiesKHR {}
11950
11951/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html>
11952#[repr(C)]
11953#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11954pub struct MemoryGetAndroidHardwareBufferInfoANDROID {
11955    pub s_type: StructureType,
11956    pub next: *const c_void,
11957    pub memory: DeviceMemory,
11958}
11959
11960impl Default for MemoryGetAndroidHardwareBufferInfoANDROID {
11961    #[inline]
11962    fn default() -> Self {
11963        Self {
11964            s_type: StructureType::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
11965            next: ptr::null(),
11966            memory: DeviceMemory::default(),
11967        }
11968    }
11969}
11970
11971unsafe impl Send for MemoryGetAndroidHardwareBufferInfoANDROID {}
11972unsafe impl Sync for MemoryGetAndroidHardwareBufferInfoANDROID {}
11973
11974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html>
11975#[repr(C)]
11976#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
11977pub struct MemoryGetFdInfoKHR {
11978    pub s_type: StructureType,
11979    pub next: *const c_void,
11980    pub memory: DeviceMemory,
11981    pub handle_type: ExternalMemoryHandleTypeFlags,
11982}
11983
11984impl Default for MemoryGetFdInfoKHR {
11985    #[inline]
11986    fn default() -> Self {
11987        Self {
11988            s_type: StructureType::MEMORY_GET_FD_INFO_KHR,
11989            next: ptr::null(),
11990            memory: DeviceMemory::default(),
11991            handle_type: ExternalMemoryHandleTypeFlags::default(),
11992        }
11993    }
11994}
11995
11996unsafe impl Send for MemoryGetFdInfoKHR {}
11997unsafe impl Sync for MemoryGetFdInfoKHR {}
11998
11999/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html>
12000#[repr(C)]
12001#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12002pub struct MemoryGetMetalHandleInfoEXT {
12003    pub s_type: StructureType,
12004    pub next: *const c_void,
12005    pub memory: DeviceMemory,
12006    pub handle_type: ExternalMemoryHandleTypeFlags,
12007}
12008
12009impl Default for MemoryGetMetalHandleInfoEXT {
12010    #[inline]
12011    fn default() -> Self {
12012        Self {
12013            s_type: StructureType::MEMORY_GET_METAL_HANDLE_INFO_EXT,
12014            next: ptr::null(),
12015            memory: DeviceMemory::default(),
12016            handle_type: ExternalMemoryHandleTypeFlags::default(),
12017        }
12018    }
12019}
12020
12021unsafe impl Send for MemoryGetMetalHandleInfoEXT {}
12022unsafe impl Sync for MemoryGetMetalHandleInfoEXT {}
12023
12024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetNativeBufferInfoOHOS.html>
12025#[repr(C)]
12026#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12027pub struct MemoryGetNativeBufferInfoOHOS {
12028    pub s_type: StructureType,
12029    pub next: *const c_void,
12030    pub memory: DeviceMemory,
12031}
12032
12033impl Default for MemoryGetNativeBufferInfoOHOS {
12034    #[inline]
12035    fn default() -> Self {
12036        Self {
12037            s_type: StructureType::MEMORY_GET_NATIVE_BUFFER_INFO_OHOS,
12038            next: ptr::null(),
12039            memory: DeviceMemory::default(),
12040        }
12041    }
12042}
12043
12044unsafe impl Send for MemoryGetNativeBufferInfoOHOS {}
12045unsafe impl Sync for MemoryGetNativeBufferInfoOHOS {}
12046
12047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html>
12048#[repr(C)]
12049#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12050pub struct MemoryGetRemoteAddressInfoNV {
12051    pub s_type: StructureType,
12052    pub next: *const c_void,
12053    pub memory: DeviceMemory,
12054    pub handle_type: ExternalMemoryHandleTypeFlags,
12055}
12056
12057impl Default for MemoryGetRemoteAddressInfoNV {
12058    #[inline]
12059    fn default() -> Self {
12060        Self {
12061            s_type: StructureType::MEMORY_GET_REMOTE_ADDRESS_INFO_NV,
12062            next: ptr::null(),
12063            memory: DeviceMemory::default(),
12064            handle_type: ExternalMemoryHandleTypeFlags::default(),
12065        }
12066    }
12067}
12068
12069unsafe impl Send for MemoryGetRemoteAddressInfoNV {}
12070unsafe impl Sync for MemoryGetRemoteAddressInfoNV {}
12071
12072/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetSciBufInfoNV.html>
12073#[repr(C)]
12074#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12075pub struct MemoryGetSciBufInfoNV {
12076    pub s_type: StructureType,
12077    pub next: *const c_void,
12078    pub memory: DeviceMemory,
12079    pub handle_type: ExternalMemoryHandleTypeFlags,
12080}
12081
12082impl Default for MemoryGetSciBufInfoNV {
12083    #[inline]
12084    fn default() -> Self {
12085        Self {
12086            s_type: StructureType::MEMORY_GET_SCI_BUF_INFO_NV,
12087            next: ptr::null(),
12088            memory: DeviceMemory::default(),
12089            handle_type: ExternalMemoryHandleTypeFlags::default(),
12090        }
12091    }
12092}
12093
12094unsafe impl Send for MemoryGetSciBufInfoNV {}
12095unsafe impl Sync for MemoryGetSciBufInfoNV {}
12096
12097/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html>
12098#[repr(C)]
12099#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12100pub struct MemoryGetWin32HandleInfoKHR {
12101    pub s_type: StructureType,
12102    pub next: *const c_void,
12103    pub memory: DeviceMemory,
12104    pub handle_type: ExternalMemoryHandleTypeFlags,
12105}
12106
12107impl Default for MemoryGetWin32HandleInfoKHR {
12108    #[inline]
12109    fn default() -> Self {
12110        Self {
12111            s_type: StructureType::MEMORY_GET_WIN32_HANDLE_INFO_KHR,
12112            next: ptr::null(),
12113            memory: DeviceMemory::default(),
12114            handle_type: ExternalMemoryHandleTypeFlags::default(),
12115        }
12116    }
12117}
12118
12119unsafe impl Send for MemoryGetWin32HandleInfoKHR {}
12120unsafe impl Sync for MemoryGetWin32HandleInfoKHR {}
12121
12122/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html>
12123#[repr(C)]
12124#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12125pub struct MemoryGetZirconHandleInfoFUCHSIA {
12126    pub s_type: StructureType,
12127    pub next: *const c_void,
12128    pub memory: DeviceMemory,
12129    pub handle_type: ExternalMemoryHandleTypeFlags,
12130}
12131
12132impl Default for MemoryGetZirconHandleInfoFUCHSIA {
12133    #[inline]
12134    fn default() -> Self {
12135        Self {
12136            s_type: StructureType::MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
12137            next: ptr::null(),
12138            memory: DeviceMemory::default(),
12139            handle_type: ExternalMemoryHandleTypeFlags::default(),
12140        }
12141    }
12142}
12143
12144unsafe impl Send for MemoryGetZirconHandleInfoFUCHSIA {}
12145unsafe impl Sync for MemoryGetZirconHandleInfoFUCHSIA {}
12146
12147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHeap.html>
12148#[repr(C)]
12149#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12150pub struct MemoryHeap {
12151    pub size: DeviceSize,
12152    pub flags: MemoryHeapFlags,
12153}
12154
12155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html>
12156#[repr(C)]
12157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12158pub struct MemoryHostPointerPropertiesEXT {
12159    pub s_type: StructureType,
12160    pub next: *mut c_void,
12161    pub memory_type_bits: u32,
12162}
12163
12164impl Default for MemoryHostPointerPropertiesEXT {
12165    #[inline]
12166    fn default() -> Self {
12167        Self {
12168            s_type: StructureType::MEMORY_HOST_POINTER_PROPERTIES_EXT,
12169            next: ptr::null_mut(),
12170            memory_type_bits: u32::default(),
12171        }
12172    }
12173}
12174
12175unsafe impl Send for MemoryHostPointerPropertiesEXT {}
12176unsafe impl Sync for MemoryHostPointerPropertiesEXT {}
12177
12178/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfo.html>
12179#[repr(C)]
12180#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12181pub struct MemoryMapInfo {
12182    pub s_type: StructureType,
12183    pub next: *const c_void,
12184    pub flags: MemoryMapFlags,
12185    pub memory: DeviceMemory,
12186    pub offset: DeviceSize,
12187    pub size: DeviceSize,
12188}
12189
12190impl Default for MemoryMapInfo {
12191    #[inline]
12192    fn default() -> Self {
12193        Self {
12194            s_type: StructureType::MEMORY_MAP_INFO,
12195            next: ptr::null(),
12196            flags: MemoryMapFlags::default(),
12197            memory: DeviceMemory::default(),
12198            offset: DeviceSize::default(),
12199            size: DeviceSize::default(),
12200        }
12201    }
12202}
12203
12204unsafe impl Send for MemoryMapInfo {}
12205unsafe impl Sync for MemoryMapInfo {}
12206
12207/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html>
12208#[repr(C)]
12209#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12210pub struct MemoryMapPlacedInfoEXT {
12211    pub s_type: StructureType,
12212    pub next: *const c_void,
12213    pub placed_address: *mut c_void,
12214}
12215
12216impl Default for MemoryMapPlacedInfoEXT {
12217    #[inline]
12218    fn default() -> Self {
12219        Self {
12220            s_type: StructureType::MEMORY_MAP_PLACED_INFO_EXT,
12221            next: ptr::null(),
12222            placed_address: ptr::null_mut(),
12223        }
12224    }
12225}
12226
12227unsafe impl Send for MemoryMapPlacedInfoEXT {}
12228unsafe impl Sync for MemoryMapPlacedInfoEXT {}
12229
12230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html>
12231#[repr(C)]
12232#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12233pub struct MemoryMetalHandlePropertiesEXT {
12234    pub s_type: StructureType,
12235    pub next: *mut c_void,
12236    pub memory_type_bits: u32,
12237}
12238
12239impl Default for MemoryMetalHandlePropertiesEXT {
12240    #[inline]
12241    fn default() -> Self {
12242        Self {
12243            s_type: StructureType::MEMORY_METAL_HANDLE_PROPERTIES_EXT,
12244            next: ptr::null_mut(),
12245            memory_type_bits: u32::default(),
12246        }
12247    }
12248}
12249
12250unsafe impl Send for MemoryMetalHandlePropertiesEXT {}
12251unsafe impl Sync for MemoryMetalHandlePropertiesEXT {}
12252
12253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html>
12254#[repr(C)]
12255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12256pub struct MemoryOpaqueCaptureAddressAllocateInfo {
12257    pub s_type: StructureType,
12258    pub next: *const c_void,
12259    pub opaque_capture_address: u64,
12260}
12261
12262impl Default for MemoryOpaqueCaptureAddressAllocateInfo {
12263    #[inline]
12264    fn default() -> Self {
12265        Self {
12266            s_type: StructureType::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
12267            next: ptr::null(),
12268            opaque_capture_address: u64::default(),
12269        }
12270    }
12271}
12272
12273unsafe impl Send for MemoryOpaqueCaptureAddressAllocateInfo {}
12274unsafe impl Sync for MemoryOpaqueCaptureAddressAllocateInfo {}
12275
12276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html>
12277#[repr(C)]
12278#[derive(Copy, Clone, Debug, PartialEq)]
12279pub struct MemoryPriorityAllocateInfoEXT {
12280    pub s_type: StructureType,
12281    pub next: *const c_void,
12282    pub priority: f32,
12283}
12284
12285impl Default for MemoryPriorityAllocateInfoEXT {
12286    #[inline]
12287    fn default() -> Self {
12288        Self {
12289            s_type: StructureType::MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
12290            next: ptr::null(),
12291            priority: f32::default(),
12292        }
12293    }
12294}
12295
12296unsafe impl Send for MemoryPriorityAllocateInfoEXT {}
12297unsafe impl Sync for MemoryPriorityAllocateInfoEXT {}
12298
12299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements.html>
12300#[repr(C)]
12301#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12302pub struct MemoryRequirements {
12303    pub size: DeviceSize,
12304    pub alignment: DeviceSize,
12305    pub memory_type_bits: u32,
12306}
12307
12308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2.html>
12309#[repr(C)]
12310#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12311pub struct MemoryRequirements2 {
12312    pub s_type: StructureType,
12313    pub next: *mut c_void,
12314    pub memory_requirements: MemoryRequirements,
12315}
12316
12317impl Default for MemoryRequirements2 {
12318    #[inline]
12319    fn default() -> Self {
12320        Self {
12321            s_type: StructureType::MEMORY_REQUIREMENTS_2,
12322            next: ptr::null_mut(),
12323            memory_requirements: MemoryRequirements::default(),
12324        }
12325    }
12326}
12327
12328unsafe impl Send for MemoryRequirements2 {}
12329unsafe impl Sync for MemoryRequirements2 {}
12330
12331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemorySciBufPropertiesNV.html>
12332#[repr(C)]
12333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12334pub struct MemorySciBufPropertiesNV {
12335    pub s_type: StructureType,
12336    pub next: *const c_void,
12337    pub memory_type_bits: u32,
12338}
12339
12340impl Default for MemorySciBufPropertiesNV {
12341    #[inline]
12342    fn default() -> Self {
12343        Self {
12344            s_type: StructureType::MEMORY_SCI_BUF_PROPERTIES_NV,
12345            next: ptr::null(),
12346            memory_type_bits: u32::default(),
12347        }
12348    }
12349}
12350
12351unsafe impl Send for MemorySciBufPropertiesNV {}
12352unsafe impl Sync for MemorySciBufPropertiesNV {}
12353
12354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html>
12355#[repr(C)]
12356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12357pub struct MemoryToImageCopy {
12358    pub s_type: StructureType,
12359    pub next: *const c_void,
12360    pub host_pointer: *const c_void,
12361    pub memory_row_length: u32,
12362    pub memory_image_height: u32,
12363    pub image_subresource: ImageSubresourceLayers,
12364    pub image_offset: Offset3D,
12365    pub image_extent: Extent3D,
12366}
12367
12368impl Default for MemoryToImageCopy {
12369    #[inline]
12370    fn default() -> Self {
12371        Self {
12372            s_type: StructureType::MEMORY_TO_IMAGE_COPY,
12373            next: ptr::null(),
12374            host_pointer: ptr::null(),
12375            memory_row_length: u32::default(),
12376            memory_image_height: u32::default(),
12377            image_subresource: ImageSubresourceLayers::default(),
12378            image_offset: Offset3D::default(),
12379            image_extent: Extent3D::default(),
12380        }
12381    }
12382}
12383
12384unsafe impl Send for MemoryToImageCopy {}
12385unsafe impl Sync for MemoryToImageCopy {}
12386
12387/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryType.html>
12388#[repr(C)]
12389#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12390pub struct MemoryType {
12391    pub property_flags: MemoryPropertyFlags,
12392    pub heap_index: u32,
12393}
12394
12395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html>
12396#[repr(C)]
12397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12398pub struct MemoryUnmapInfo {
12399    pub s_type: StructureType,
12400    pub next: *const c_void,
12401    pub flags: MemoryUnmapFlags,
12402    pub memory: DeviceMemory,
12403}
12404
12405impl Default for MemoryUnmapInfo {
12406    #[inline]
12407    fn default() -> Self {
12408        Self {
12409            s_type: StructureType::MEMORY_UNMAP_INFO,
12410            next: ptr::null(),
12411            flags: MemoryUnmapFlags::default(),
12412            memory: DeviceMemory::default(),
12413        }
12414    }
12415}
12416
12417unsafe impl Send for MemoryUnmapInfo {}
12418unsafe impl Sync for MemoryUnmapInfo {}
12419
12420/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html>
12421#[repr(C)]
12422#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12423pub struct MemoryWin32HandlePropertiesKHR {
12424    pub s_type: StructureType,
12425    pub next: *mut c_void,
12426    pub memory_type_bits: u32,
12427}
12428
12429impl Default for MemoryWin32HandlePropertiesKHR {
12430    #[inline]
12431    fn default() -> Self {
12432        Self {
12433            s_type: StructureType::MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
12434            next: ptr::null_mut(),
12435            memory_type_bits: u32::default(),
12436        }
12437    }
12438}
12439
12440unsafe impl Send for MemoryWin32HandlePropertiesKHR {}
12441unsafe impl Sync for MemoryWin32HandlePropertiesKHR {}
12442
12443/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html>
12444#[repr(C)]
12445#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12446pub struct MemoryZirconHandlePropertiesFUCHSIA {
12447    pub s_type: StructureType,
12448    pub next: *mut c_void,
12449    pub memory_type_bits: u32,
12450}
12451
12452impl Default for MemoryZirconHandlePropertiesFUCHSIA {
12453    #[inline]
12454    fn default() -> Self {
12455        Self {
12456            s_type: StructureType::MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
12457            next: ptr::null_mut(),
12458            memory_type_bits: u32::default(),
12459        }
12460    }
12461}
12462
12463unsafe impl Send for MemoryZirconHandlePropertiesFUCHSIA {}
12464unsafe impl Sync for MemoryZirconHandlePropertiesFUCHSIA {}
12465
12466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html>
12467#[repr(C)]
12468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12469pub struct MetalSurfaceCreateInfoEXT {
12470    pub s_type: StructureType,
12471    pub next: *const c_void,
12472    pub flags: MetalSurfaceCreateFlagsEXT,
12473    pub layer: *const CAMetalLayer,
12474}
12475
12476impl Default for MetalSurfaceCreateInfoEXT {
12477    #[inline]
12478    fn default() -> Self {
12479        Self {
12480            s_type: StructureType::METAL_SURFACE_CREATE_INFO_EXT,
12481            next: ptr::null(),
12482            flags: MetalSurfaceCreateFlagsEXT::default(),
12483            layer: ptr::null(),
12484        }
12485    }
12486}
12487
12488unsafe impl Send for MetalSurfaceCreateInfoEXT {}
12489unsafe impl Sync for MetalSurfaceCreateInfoEXT {}
12490
12491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html>
12492#[repr(C)]
12493#[derive(Copy, Clone, Debug)]
12494pub struct MicromapBuildInfoEXT {
12495    pub s_type: StructureType,
12496    pub next: *const c_void,
12497    pub type_: MicromapTypeEXT,
12498    pub flags: BuildMicromapFlagsEXT,
12499    pub mode: BuildMicromapModeEXT,
12500    pub dst_micromap: MicromapEXT,
12501    pub usage_counts_count: u32,
12502    pub usage_counts: *const MicromapUsageEXT,
12503    pub pointer_usage_counts: *const *const MicromapUsageEXT,
12504    pub data: DeviceOrHostAddressConstKHR,
12505    pub scratch_data: DeviceOrHostAddressKHR,
12506    pub triangle_array: DeviceOrHostAddressConstKHR,
12507    pub triangle_array_stride: DeviceSize,
12508}
12509
12510impl Default for MicromapBuildInfoEXT {
12511    #[inline]
12512    fn default() -> Self {
12513        Self {
12514            s_type: StructureType::MICROMAP_BUILD_INFO_EXT,
12515            next: ptr::null(),
12516            type_: MicromapTypeEXT::default(),
12517            flags: BuildMicromapFlagsEXT::default(),
12518            mode: BuildMicromapModeEXT::default(),
12519            dst_micromap: MicromapEXT::default(),
12520            usage_counts_count: u32::default(),
12521            usage_counts: ptr::null(),
12522            pointer_usage_counts: ptr::null(),
12523            data: DeviceOrHostAddressConstKHR::default(),
12524            scratch_data: DeviceOrHostAddressKHR::default(),
12525            triangle_array: DeviceOrHostAddressConstKHR::default(),
12526            triangle_array_stride: DeviceSize::default(),
12527        }
12528    }
12529}
12530
12531unsafe impl Send for MicromapBuildInfoEXT {}
12532unsafe impl Sync for MicromapBuildInfoEXT {}
12533
12534/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html>
12535#[repr(C)]
12536#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12537pub struct MicromapBuildSizesInfoEXT {
12538    pub s_type: StructureType,
12539    pub next: *const c_void,
12540    pub micromap_size: DeviceSize,
12541    pub build_scratch_size: DeviceSize,
12542    pub discardable: Bool32,
12543}
12544
12545impl Default for MicromapBuildSizesInfoEXT {
12546    #[inline]
12547    fn default() -> Self {
12548        Self {
12549            s_type: StructureType::MICROMAP_BUILD_SIZES_INFO_EXT,
12550            next: ptr::null(),
12551            micromap_size: DeviceSize::default(),
12552            build_scratch_size: DeviceSize::default(),
12553            discardable: Bool32::default(),
12554        }
12555    }
12556}
12557
12558unsafe impl Send for MicromapBuildSizesInfoEXT {}
12559unsafe impl Sync for MicromapBuildSizesInfoEXT {}
12560
12561/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html>
12562#[repr(C)]
12563#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12564pub struct MicromapCreateInfoEXT {
12565    pub s_type: StructureType,
12566    pub next: *const c_void,
12567    pub create_flags: MicromapCreateFlagsEXT,
12568    pub buffer: Buffer,
12569    pub offset: DeviceSize,
12570    pub size: DeviceSize,
12571    pub type_: MicromapTypeEXT,
12572    pub device_address: DeviceAddress,
12573}
12574
12575impl Default for MicromapCreateInfoEXT {
12576    #[inline]
12577    fn default() -> Self {
12578        Self {
12579            s_type: StructureType::MICROMAP_CREATE_INFO_EXT,
12580            next: ptr::null(),
12581            create_flags: MicromapCreateFlagsEXT::default(),
12582            buffer: Buffer::default(),
12583            offset: DeviceSize::default(),
12584            size: DeviceSize::default(),
12585            type_: MicromapTypeEXT::default(),
12586            device_address: DeviceAddress::default(),
12587        }
12588    }
12589}
12590
12591unsafe impl Send for MicromapCreateInfoEXT {}
12592unsafe impl Sync for MicromapCreateInfoEXT {}
12593
12594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html>
12595#[repr(C)]
12596#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12597pub struct MicromapTriangleEXT {
12598    pub data_offset: u32,
12599    pub subdivision_level: u16,
12600    pub format: u16,
12601}
12602
12603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html>
12604#[repr(C)]
12605#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12606pub struct MicromapUsageEXT {
12607    pub count: u32,
12608    pub subdivision_level: u32,
12609    pub format: u32,
12610}
12611
12612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html>
12613#[repr(C)]
12614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12615pub struct MicromapVersionInfoEXT {
12616    pub s_type: StructureType,
12617    pub next: *const c_void,
12618    pub version_data: *const u8,
12619}
12620
12621impl Default for MicromapVersionInfoEXT {
12622    #[inline]
12623    fn default() -> Self {
12624        Self {
12625            s_type: StructureType::MICROMAP_VERSION_INFO_EXT,
12626            next: ptr::null(),
12627            version_data: ptr::null(),
12628        }
12629    }
12630}
12631
12632unsafe impl Send for MicromapVersionInfoEXT {}
12633unsafe impl Sync for MicromapVersionInfoEXT {}
12634
12635/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html>
12636#[repr(C)]
12637#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12638pub struct MultiDrawIndexedInfoEXT {
12639    pub first_index: u32,
12640    pub index_count: u32,
12641    pub vertex_offset: i32,
12642}
12643
12644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html>
12645#[repr(C)]
12646#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12647pub struct MultiDrawInfoEXT {
12648    pub first_vertex: u32,
12649    pub vertex_count: u32,
12650}
12651
12652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html>
12653#[repr(C)]
12654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12655pub struct MultisamplePropertiesEXT {
12656    pub s_type: StructureType,
12657    pub next: *mut c_void,
12658    pub max_sample_location_grid_size: Extent2D,
12659}
12660
12661impl Default for MultisamplePropertiesEXT {
12662    #[inline]
12663    fn default() -> Self {
12664        Self {
12665            s_type: StructureType::MULTISAMPLE_PROPERTIES_EXT,
12666            next: ptr::null_mut(),
12667            max_sample_location_grid_size: Extent2D::default(),
12668        }
12669    }
12670}
12671
12672unsafe impl Send for MultisamplePropertiesEXT {}
12673unsafe impl Sync for MultisamplePropertiesEXT {}
12674
12675/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html>
12676#[repr(C)]
12677#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12678pub struct MultisampledRenderToSingleSampledInfoEXT {
12679    pub s_type: StructureType,
12680    pub next: *const c_void,
12681    pub multisampled_render_to_single_sampled_enable: Bool32,
12682    pub rasterization_samples: SampleCountFlags,
12683}
12684
12685impl Default for MultisampledRenderToSingleSampledInfoEXT {
12686    #[inline]
12687    fn default() -> Self {
12688        Self {
12689            s_type: StructureType::MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT,
12690            next: ptr::null(),
12691            multisampled_render_to_single_sampled_enable: Bool32::default(),
12692            rasterization_samples: SampleCountFlags::default(),
12693        }
12694    }
12695}
12696
12697unsafe impl Send for MultisampledRenderToSingleSampledInfoEXT {}
12698unsafe impl Sync for MultisampledRenderToSingleSampledInfoEXT {}
12699
12700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html>
12701#[repr(C)]
12702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12703pub struct MultiviewPerViewAttributesInfoNVX {
12704    pub s_type: StructureType,
12705    pub next: *const c_void,
12706    pub per_view_attributes: Bool32,
12707    pub per_view_attributes_position_x_only: Bool32,
12708}
12709
12710impl Default for MultiviewPerViewAttributesInfoNVX {
12711    #[inline]
12712    fn default() -> Self {
12713        Self {
12714            s_type: StructureType::MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX,
12715            next: ptr::null(),
12716            per_view_attributes: Bool32::default(),
12717            per_view_attributes_position_x_only: Bool32::default(),
12718        }
12719    }
12720}
12721
12722unsafe impl Send for MultiviewPerViewAttributesInfoNVX {}
12723unsafe impl Sync for MultiviewPerViewAttributesInfoNVX {}
12724
12725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html>
12726#[repr(C)]
12727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12728pub struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12729    pub s_type: StructureType,
12730    pub next: *const c_void,
12731    pub per_view_render_area_count: u32,
12732    pub per_view_render_areas: *const Rect2D,
12733}
12734
12735impl Default for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
12736    #[inline]
12737    fn default() -> Self {
12738        Self {
12739            s_type: StructureType::MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM,
12740            next: ptr::null(),
12741            per_view_render_area_count: u32::default(),
12742            per_view_render_areas: ptr::null(),
12743        }
12744    }
12745}
12746
12747unsafe impl Send for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12748unsafe impl Sync for MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {}
12749
12750/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html>
12751#[repr(C)]
12752#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12753pub struct MutableDescriptorTypeCreateInfoEXT {
12754    pub s_type: StructureType,
12755    pub next: *const c_void,
12756    pub mutable_descriptor_type_list_count: u32,
12757    pub mutable_descriptor_type_lists: *const MutableDescriptorTypeListEXT,
12758}
12759
12760impl Default for MutableDescriptorTypeCreateInfoEXT {
12761    #[inline]
12762    fn default() -> Self {
12763        Self {
12764            s_type: StructureType::MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
12765            next: ptr::null(),
12766            mutable_descriptor_type_list_count: u32::default(),
12767            mutable_descriptor_type_lists: ptr::null(),
12768        }
12769    }
12770}
12771
12772unsafe impl Send for MutableDescriptorTypeCreateInfoEXT {}
12773unsafe impl Sync for MutableDescriptorTypeCreateInfoEXT {}
12774
12775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html>
12776#[repr(C)]
12777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12778pub struct MutableDescriptorTypeListEXT {
12779    pub descriptor_type_count: u32,
12780    pub descriptor_types: *const DescriptorType,
12781}
12782
12783impl Default for MutableDescriptorTypeListEXT {
12784    #[inline]
12785    fn default() -> Self {
12786        Self {
12787            descriptor_type_count: u32::default(),
12788            descriptor_types: ptr::null(),
12789        }
12790    }
12791}
12792
12793unsafe impl Send for MutableDescriptorTypeListEXT {}
12794unsafe impl Sync for MutableDescriptorTypeListEXT {}
12795
12796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferFormatPropertiesOHOS.html>
12797#[repr(C)]
12798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12799pub struct NativeBufferFormatPropertiesOHOS {
12800    pub s_type: StructureType,
12801    pub next: *mut c_void,
12802    pub format: Format,
12803    pub external_format: u64,
12804    pub format_features: FormatFeatureFlags,
12805    pub sampler_ycbcr_conversion_components: ComponentMapping,
12806    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
12807    pub suggested_ycbcr_range: SamplerYcbcrRange,
12808    pub suggested_x_chroma_offset: ChromaLocation,
12809    pub suggested_y_chroma_offset: ChromaLocation,
12810}
12811
12812impl Default for NativeBufferFormatPropertiesOHOS {
12813    #[inline]
12814    fn default() -> Self {
12815        Self {
12816            s_type: StructureType::NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS,
12817            next: ptr::null_mut(),
12818            format: Format::default(),
12819            external_format: u64::default(),
12820            format_features: FormatFeatureFlags::default(),
12821            sampler_ycbcr_conversion_components: ComponentMapping::default(),
12822            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
12823            suggested_ycbcr_range: SamplerYcbcrRange::default(),
12824            suggested_x_chroma_offset: ChromaLocation::default(),
12825            suggested_y_chroma_offset: ChromaLocation::default(),
12826        }
12827    }
12828}
12829
12830unsafe impl Send for NativeBufferFormatPropertiesOHOS {}
12831unsafe impl Sync for NativeBufferFormatPropertiesOHOS {}
12832
12833/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferPropertiesOHOS.html>
12834#[repr(C)]
12835#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12836pub struct NativeBufferPropertiesOHOS {
12837    pub s_type: StructureType,
12838    pub next: *mut c_void,
12839    pub allocation_size: DeviceSize,
12840    pub memory_type_bits: u32,
12841}
12842
12843impl Default for NativeBufferPropertiesOHOS {
12844    #[inline]
12845    fn default() -> Self {
12846        Self {
12847            s_type: StructureType::NATIVE_BUFFER_PROPERTIES_OHOS,
12848            next: ptr::null_mut(),
12849            allocation_size: DeviceSize::default(),
12850            memory_type_bits: u32::default(),
12851        }
12852    }
12853}
12854
12855unsafe impl Send for NativeBufferPropertiesOHOS {}
12856unsafe impl Sync for NativeBufferPropertiesOHOS {}
12857
12858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkNativeBufferUsageOHOS.html>
12859#[repr(C)]
12860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12861pub struct NativeBufferUsageOHOS {
12862    pub s_type: StructureType,
12863    pub next: *mut c_void,
12864    pub ohos_native_buffer_usage: u64,
12865}
12866
12867impl Default for NativeBufferUsageOHOS {
12868    #[inline]
12869    fn default() -> Self {
12870        Self {
12871            s_type: StructureType::NATIVE_BUFFER_USAGE_OHOS,
12872            next: ptr::null_mut(),
12873            ohos_native_buffer_usage: u64::default(),
12874        }
12875    }
12876}
12877
12878unsafe impl Send for NativeBufferUsageOHOS {}
12879unsafe impl Sync for NativeBufferUsageOHOS {}
12880
12881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset2D.html>
12882#[repr(C)]
12883#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12884pub struct Offset2D {
12885    pub x: i32,
12886    pub y: i32,
12887}
12888
12889/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOffset3D.html>
12890#[repr(C)]
12891#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
12892pub struct Offset3D {
12893    pub x: i32,
12894    pub y: i32,
12895    pub z: i32,
12896}
12897
12898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDataCreateInfoEXT.html>
12899#[repr(C)]
12900#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12901pub struct OpaqueCaptureDataCreateInfoEXT {
12902    pub s_type: StructureType,
12903    pub next: *const c_void,
12904    pub data: *const HostAddressRangeConstEXT,
12905}
12906
12907impl Default for OpaqueCaptureDataCreateInfoEXT {
12908    #[inline]
12909    fn default() -> Self {
12910        Self {
12911            s_type: StructureType::OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT,
12912            next: ptr::null(),
12913            data: ptr::null(),
12914        }
12915    }
12916}
12917
12918unsafe impl Send for OpaqueCaptureDataCreateInfoEXT {}
12919unsafe impl Sync for OpaqueCaptureDataCreateInfoEXT {}
12920
12921/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html>
12922#[repr(C)]
12923#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12924pub struct OpaqueCaptureDescriptorDataCreateInfoEXT {
12925    pub s_type: StructureType,
12926    pub next: *const c_void,
12927    pub opaque_capture_descriptor_data: *const c_void,
12928}
12929
12930impl Default for OpaqueCaptureDescriptorDataCreateInfoEXT {
12931    #[inline]
12932    fn default() -> Self {
12933        Self {
12934            s_type: StructureType::OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT,
12935            next: ptr::null(),
12936            opaque_capture_descriptor_data: ptr::null(),
12937        }
12938    }
12939}
12940
12941unsafe impl Send for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12942unsafe impl Sync for OpaqueCaptureDescriptorDataCreateInfoEXT {}
12943
12944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html>
12945#[repr(C)]
12946#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12947pub struct OpticalFlowExecuteInfoNV {
12948    pub s_type: StructureType,
12949    pub next: *mut c_void,
12950    pub flags: OpticalFlowExecuteFlagsNV,
12951    pub region_count: u32,
12952    pub regions: *const Rect2D,
12953}
12954
12955impl Default for OpticalFlowExecuteInfoNV {
12956    #[inline]
12957    fn default() -> Self {
12958        Self {
12959            s_type: StructureType::OPTICAL_FLOW_EXECUTE_INFO_NV,
12960            next: ptr::null_mut(),
12961            flags: OpticalFlowExecuteFlagsNV::default(),
12962            region_count: u32::default(),
12963            regions: ptr::null(),
12964        }
12965    }
12966}
12967
12968unsafe impl Send for OpticalFlowExecuteInfoNV {}
12969unsafe impl Sync for OpticalFlowExecuteInfoNV {}
12970
12971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html>
12972#[repr(C)]
12973#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12974pub struct OpticalFlowImageFormatInfoNV {
12975    pub s_type: StructureType,
12976    pub next: *const c_void,
12977    pub usage: OpticalFlowUsageFlagsNV,
12978}
12979
12980impl Default for OpticalFlowImageFormatInfoNV {
12981    #[inline]
12982    fn default() -> Self {
12983        Self {
12984            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV,
12985            next: ptr::null(),
12986            usage: OpticalFlowUsageFlagsNV::default(),
12987        }
12988    }
12989}
12990
12991unsafe impl Send for OpticalFlowImageFormatInfoNV {}
12992unsafe impl Sync for OpticalFlowImageFormatInfoNV {}
12993
12994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html>
12995#[repr(C)]
12996#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
12997pub struct OpticalFlowImageFormatPropertiesNV {
12998    pub s_type: StructureType,
12999    pub next: *mut c_void,
13000    pub format: Format,
13001}
13002
13003impl Default for OpticalFlowImageFormatPropertiesNV {
13004    #[inline]
13005    fn default() -> Self {
13006        Self {
13007            s_type: StructureType::OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV,
13008            next: ptr::null_mut(),
13009            format: Format::default(),
13010        }
13011    }
13012}
13013
13014unsafe impl Send for OpticalFlowImageFormatPropertiesNV {}
13015unsafe impl Sync for OpticalFlowImageFormatPropertiesNV {}
13016
13017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html>
13018#[repr(C)]
13019#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13020pub struct OpticalFlowSessionCreateInfoNV {
13021    pub s_type: StructureType,
13022    pub next: *mut c_void,
13023    pub width: u32,
13024    pub height: u32,
13025    pub image_format: Format,
13026    pub flow_vector_format: Format,
13027    pub cost_format: Format,
13028    pub output_grid_size: OpticalFlowGridSizeFlagsNV,
13029    pub hint_grid_size: OpticalFlowGridSizeFlagsNV,
13030    pub performance_level: OpticalFlowPerformanceLevelNV,
13031    pub flags: OpticalFlowSessionCreateFlagsNV,
13032}
13033
13034impl Default for OpticalFlowSessionCreateInfoNV {
13035    #[inline]
13036    fn default() -> Self {
13037        Self {
13038            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV,
13039            next: ptr::null_mut(),
13040            width: u32::default(),
13041            height: u32::default(),
13042            image_format: Format::default(),
13043            flow_vector_format: Format::default(),
13044            cost_format: Format::default(),
13045            output_grid_size: OpticalFlowGridSizeFlagsNV::default(),
13046            hint_grid_size: OpticalFlowGridSizeFlagsNV::default(),
13047            performance_level: OpticalFlowPerformanceLevelNV::default(),
13048            flags: OpticalFlowSessionCreateFlagsNV::default(),
13049        }
13050    }
13051}
13052
13053unsafe impl Send for OpticalFlowSessionCreateInfoNV {}
13054unsafe impl Sync for OpticalFlowSessionCreateInfoNV {}
13055
13056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html>
13057#[repr(C)]
13058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13059pub struct OpticalFlowSessionCreatePrivateDataInfoNV {
13060    pub s_type: StructureType,
13061    pub next: *mut c_void,
13062    pub id: u32,
13063    pub size: u32,
13064    pub private_data: *const c_void,
13065}
13066
13067impl Default for OpticalFlowSessionCreatePrivateDataInfoNV {
13068    #[inline]
13069    fn default() -> Self {
13070        Self {
13071            s_type: StructureType::OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV,
13072            next: ptr::null_mut(),
13073            id: u32::default(),
13074            size: u32::default(),
13075            private_data: ptr::null(),
13076        }
13077    }
13078}
13079
13080unsafe impl Send for OpticalFlowSessionCreatePrivateDataInfoNV {}
13081unsafe impl Sync for OpticalFlowSessionCreatePrivateDataInfoNV {}
13082
13083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html>
13084#[repr(C)]
13085#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13086pub struct OutOfBandQueueTypeInfoNV {
13087    pub s_type: StructureType,
13088    pub next: *const c_void,
13089    pub queue_type: OutOfBandQueueTypeNV,
13090}
13091
13092impl Default for OutOfBandQueueTypeInfoNV {
13093    #[inline]
13094    fn default() -> Self {
13095        Self {
13096            s_type: StructureType::OUT_OF_BAND_QUEUE_TYPE_INFO_NV,
13097            next: ptr::null(),
13098            queue_type: OutOfBandQueueTypeNV::default(),
13099        }
13100    }
13101}
13102
13103unsafe impl Send for OutOfBandQueueTypeInfoNV {}
13104unsafe impl Sync for OutOfBandQueueTypeInfoNV {}
13105
13106/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html>
13107#[repr(C)]
13108#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13109pub struct PartitionedAccelerationStructureFlagsNV {
13110    pub s_type: StructureType,
13111    pub next: *mut c_void,
13112    pub enable_partition_translation: Bool32,
13113}
13114
13115impl Default for PartitionedAccelerationStructureFlagsNV {
13116    #[inline]
13117    fn default() -> Self {
13118        Self {
13119            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV,
13120            next: ptr::null_mut(),
13121            enable_partition_translation: Bool32::default(),
13122        }
13123    }
13124}
13125
13126unsafe impl Send for PartitionedAccelerationStructureFlagsNV {}
13127unsafe impl Sync for PartitionedAccelerationStructureFlagsNV {}
13128
13129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html>
13130#[repr(C)]
13131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13132pub struct PartitionedAccelerationStructureInstancesInputNV {
13133    pub s_type: StructureType,
13134    pub next: *mut c_void,
13135    pub flags: BuildAccelerationStructureFlagsKHR,
13136    pub instance_count: u32,
13137    pub max_instance_per_partition_count: u32,
13138    pub partition_count: u32,
13139    pub max_instance_in_global_partition_count: u32,
13140}
13141
13142impl Default for PartitionedAccelerationStructureInstancesInputNV {
13143    #[inline]
13144    fn default() -> Self {
13145        Self {
13146            s_type: StructureType::PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV,
13147            next: ptr::null_mut(),
13148            flags: BuildAccelerationStructureFlagsKHR::default(),
13149            instance_count: u32::default(),
13150            max_instance_per_partition_count: u32::default(),
13151            partition_count: u32::default(),
13152            max_instance_in_global_partition_count: u32::default(),
13153        }
13154    }
13155}
13156
13157unsafe impl Send for PartitionedAccelerationStructureInstancesInputNV {}
13158unsafe impl Sync for PartitionedAccelerationStructureInstancesInputNV {}
13159
13160/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html>
13161#[repr(C)]
13162#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
13163pub struct PartitionedAccelerationStructureUpdateInstanceDataNV {
13164    pub instance_index: u32,
13165    pub instance_contribution_to_hit_group_index: u32,
13166    pub acceleration_structure: DeviceAddress,
13167}
13168
13169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html>
13170#[repr(C)]
13171#[derive(Copy, Clone, Default, Debug, PartialEq)]
13172pub struct PartitionedAccelerationStructureWriteInstanceDataNV {
13173    pub transform: TransformMatrixKHR,
13174    pub explicit_aabb: [f32; 6],
13175    pub instance_id: u32,
13176    pub instance_mask: u32,
13177    pub instance_contribution_to_hit_group_index: u32,
13178    pub instance_flags: PartitionedAccelerationStructureInstanceFlagsNV,
13179    pub instance_index: u32,
13180    pub partition_index: u32,
13181    pub acceleration_structure: DeviceAddress,
13182}
13183
13184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html>
13185#[repr(C)]
13186#[derive(Copy, Clone, Default, Debug, PartialEq)]
13187pub struct PartitionedAccelerationStructureWritePartitionTranslationDataNV {
13188    pub partition_index: u32,
13189    pub partition_translation: [f32; 3],
13190}
13191
13192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingEXT.html>
13193#[repr(C)]
13194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13195pub struct PastPresentationTimingEXT {
13196    pub s_type: StructureType,
13197    pub next: *mut c_void,
13198    pub present_id: u64,
13199    pub target_time: u64,
13200    pub present_stage_count: u32,
13201    pub present_stages: *mut PresentStageTimeEXT,
13202    pub time_domain: TimeDomainKHR,
13203    pub time_domain_id: u64,
13204    pub report_complete: Bool32,
13205}
13206
13207impl Default for PastPresentationTimingEXT {
13208    #[inline]
13209    fn default() -> Self {
13210        Self {
13211            s_type: StructureType::PAST_PRESENTATION_TIMING_EXT,
13212            next: ptr::null_mut(),
13213            present_id: u64::default(),
13214            target_time: u64::default(),
13215            present_stage_count: u32::default(),
13216            present_stages: ptr::null_mut(),
13217            time_domain: TimeDomainKHR::default(),
13218            time_domain_id: u64::default(),
13219            report_complete: Bool32::default(),
13220        }
13221    }
13222}
13223
13224unsafe impl Send for PastPresentationTimingEXT {}
13225unsafe impl Sync for PastPresentationTimingEXT {}
13226
13227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html>
13228#[repr(C)]
13229#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
13230pub struct PastPresentationTimingGOOGLE {
13231    pub present_id: u32,
13232    pub desired_present_time: u64,
13233    pub actual_present_time: u64,
13234    pub earliest_present_time: u64,
13235    pub present_margin: u64,
13236}
13237
13238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingInfoEXT.html>
13239#[repr(C)]
13240#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13241pub struct PastPresentationTimingInfoEXT {
13242    pub s_type: StructureType,
13243    pub next: *const c_void,
13244    pub flags: PastPresentationTimingFlagsEXT,
13245    pub swapchain: SwapchainKHR,
13246}
13247
13248impl Default for PastPresentationTimingInfoEXT {
13249    #[inline]
13250    fn default() -> Self {
13251        Self {
13252            s_type: StructureType::PAST_PRESENTATION_TIMING_INFO_EXT,
13253            next: ptr::null(),
13254            flags: PastPresentationTimingFlagsEXT::default(),
13255            swapchain: SwapchainKHR::default(),
13256        }
13257    }
13258}
13259
13260unsafe impl Send for PastPresentationTimingInfoEXT {}
13261unsafe impl Sync for PastPresentationTimingInfoEXT {}
13262
13263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPastPresentationTimingPropertiesEXT.html>
13264#[repr(C)]
13265#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13266pub struct PastPresentationTimingPropertiesEXT {
13267    pub s_type: StructureType,
13268    pub next: *mut c_void,
13269    pub timing_properties_counter: u64,
13270    pub time_domains_counter: u64,
13271    pub presentation_timing_count: u32,
13272    pub presentation_timings: *mut PastPresentationTimingEXT,
13273}
13274
13275impl Default for PastPresentationTimingPropertiesEXT {
13276    #[inline]
13277    fn default() -> Self {
13278        Self {
13279            s_type: StructureType::PAST_PRESENTATION_TIMING_PROPERTIES_EXT,
13280            next: ptr::null_mut(),
13281            timing_properties_counter: u64::default(),
13282            time_domains_counter: u64::default(),
13283            presentation_timing_count: u32::default(),
13284            presentation_timings: ptr::null_mut(),
13285        }
13286    }
13287}
13288
13289unsafe impl Send for PastPresentationTimingPropertiesEXT {}
13290unsafe impl Sync for PastPresentationTimingPropertiesEXT {}
13291
13292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileBeginInfoQCOM.html>
13293#[repr(C)]
13294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13295pub struct PerTileBeginInfoQCOM {
13296    pub s_type: StructureType,
13297    pub next: *const c_void,
13298}
13299
13300impl Default for PerTileBeginInfoQCOM {
13301    #[inline]
13302    fn default() -> Self {
13303        Self {
13304            s_type: StructureType::PER_TILE_BEGIN_INFO_QCOM,
13305            next: ptr::null(),
13306        }
13307    }
13308}
13309
13310unsafe impl Send for PerTileBeginInfoQCOM {}
13311unsafe impl Sync for PerTileBeginInfoQCOM {}
13312
13313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerTileEndInfoQCOM.html>
13314#[repr(C)]
13315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13316pub struct PerTileEndInfoQCOM {
13317    pub s_type: StructureType,
13318    pub next: *const c_void,
13319}
13320
13321impl Default for PerTileEndInfoQCOM {
13322    #[inline]
13323    fn default() -> Self {
13324        Self {
13325            s_type: StructureType::PER_TILE_END_INFO_QCOM,
13326            next: ptr::null(),
13327        }
13328    }
13329}
13330
13331unsafe impl Send for PerTileEndInfoQCOM {}
13332unsafe impl Sync for PerTileEndInfoQCOM {}
13333
13334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html>
13335#[repr(C)]
13336#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13337pub struct PerformanceConfigurationAcquireInfoINTEL {
13338    pub s_type: StructureType,
13339    pub next: *const c_void,
13340    pub type_: PerformanceConfigurationTypeINTEL,
13341}
13342
13343impl Default for PerformanceConfigurationAcquireInfoINTEL {
13344    #[inline]
13345    fn default() -> Self {
13346        Self {
13347            s_type: StructureType::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
13348            next: ptr::null(),
13349            type_: PerformanceConfigurationTypeINTEL::default(),
13350        }
13351    }
13352}
13353
13354unsafe impl Send for PerformanceConfigurationAcquireInfoINTEL {}
13355unsafe impl Sync for PerformanceConfigurationAcquireInfoINTEL {}
13356
13357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterARM.html>
13358#[repr(C)]
13359#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13360pub struct PerformanceCounterARM {
13361    pub s_type: StructureType,
13362    pub next: *mut c_void,
13363    pub counter_id: u32,
13364}
13365
13366impl Default for PerformanceCounterARM {
13367    #[inline]
13368    fn default() -> Self {
13369        Self {
13370            s_type: StructureType::PERFORMANCE_COUNTER_ARM,
13371            next: ptr::null_mut(),
13372            counter_id: u32::default(),
13373        }
13374    }
13375}
13376
13377unsafe impl Send for PerformanceCounterARM {}
13378unsafe impl Sync for PerformanceCounterARM {}
13379
13380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionARM.html>
13381#[repr(C)]
13382#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13383pub struct PerformanceCounterDescriptionARM {
13384    pub s_type: StructureType,
13385    pub next: *mut c_void,
13386    pub flags: PerformanceCounterDescriptionFlagsARM,
13387    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
13388}
13389
13390impl Default for PerformanceCounterDescriptionARM {
13391    #[inline]
13392    fn default() -> Self {
13393        Self {
13394            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_ARM,
13395            next: ptr::null_mut(),
13396            flags: PerformanceCounterDescriptionFlagsARM::default(),
13397            name: StringArray::default(),
13398        }
13399    }
13400}
13401
13402unsafe impl Send for PerformanceCounterDescriptionARM {}
13403unsafe impl Sync for PerformanceCounterDescriptionARM {}
13404
13405/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html>
13406#[repr(C)]
13407#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13408pub struct PerformanceCounterDescriptionKHR {
13409    pub s_type: StructureType,
13410    pub next: *mut c_void,
13411    pub flags: PerformanceCounterDescriptionFlagsKHR,
13412    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
13413    pub category: StringArray<MAX_DESCRIPTION_SIZE>,
13414    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
13415}
13416
13417impl Default for PerformanceCounterDescriptionKHR {
13418    #[inline]
13419    fn default() -> Self {
13420        Self {
13421            s_type: StructureType::PERFORMANCE_COUNTER_DESCRIPTION_KHR,
13422            next: ptr::null_mut(),
13423            flags: PerformanceCounterDescriptionFlagsKHR::default(),
13424            name: StringArray::default(),
13425            category: StringArray::default(),
13426            description: StringArray::default(),
13427        }
13428    }
13429}
13430
13431unsafe impl Send for PerformanceCounterDescriptionKHR {}
13432unsafe impl Sync for PerformanceCounterDescriptionKHR {}
13433
13434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html>
13435#[repr(C)]
13436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13437pub struct PerformanceCounterKHR {
13438    pub s_type: StructureType,
13439    pub next: *mut c_void,
13440    pub unit: PerformanceCounterUnitKHR,
13441    pub scope: PerformanceCounterScopeKHR,
13442    pub storage: PerformanceCounterStorageKHR,
13443    pub uuid: ByteArray<UUID_SIZE>,
13444}
13445
13446impl Default for PerformanceCounterKHR {
13447    #[inline]
13448    fn default() -> Self {
13449        Self {
13450            s_type: StructureType::PERFORMANCE_COUNTER_KHR,
13451            next: ptr::null_mut(),
13452            unit: PerformanceCounterUnitKHR::default(),
13453            scope: PerformanceCounterScopeKHR::default(),
13454            storage: PerformanceCounterStorageKHR::default(),
13455            uuid: ByteArray::default(),
13456        }
13457    }
13458}
13459
13460unsafe impl Send for PerformanceCounterKHR {}
13461unsafe impl Sync for PerformanceCounterKHR {}
13462
13463/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html>
13464#[repr(C)]
13465#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13466pub struct PerformanceMarkerInfoINTEL {
13467    pub s_type: StructureType,
13468    pub next: *const c_void,
13469    pub marker: u64,
13470}
13471
13472impl Default for PerformanceMarkerInfoINTEL {
13473    #[inline]
13474    fn default() -> Self {
13475        Self {
13476            s_type: StructureType::PERFORMANCE_MARKER_INFO_INTEL,
13477            next: ptr::null(),
13478            marker: u64::default(),
13479        }
13480    }
13481}
13482
13483unsafe impl Send for PerformanceMarkerInfoINTEL {}
13484unsafe impl Sync for PerformanceMarkerInfoINTEL {}
13485
13486/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html>
13487#[repr(C)]
13488#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13489pub struct PerformanceOverrideInfoINTEL {
13490    pub s_type: StructureType,
13491    pub next: *const c_void,
13492    pub type_: PerformanceOverrideTypeINTEL,
13493    pub enable: Bool32,
13494    pub parameter: u64,
13495}
13496
13497impl Default for PerformanceOverrideInfoINTEL {
13498    #[inline]
13499    fn default() -> Self {
13500        Self {
13501            s_type: StructureType::PERFORMANCE_OVERRIDE_INFO_INTEL,
13502            next: ptr::null(),
13503            type_: PerformanceOverrideTypeINTEL::default(),
13504            enable: Bool32::default(),
13505            parameter: u64::default(),
13506        }
13507    }
13508}
13509
13510unsafe impl Send for PerformanceOverrideInfoINTEL {}
13511unsafe impl Sync for PerformanceOverrideInfoINTEL {}
13512
13513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQueryReservationInfoKHR.html>
13514#[repr(C)]
13515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13516pub struct PerformanceQueryReservationInfoKHR {
13517    pub s_type: StructureType,
13518    pub next: *const c_void,
13519    pub max_performance_queries_per_pool: u32,
13520}
13521
13522impl Default for PerformanceQueryReservationInfoKHR {
13523    #[inline]
13524    fn default() -> Self {
13525        Self {
13526            s_type: StructureType::PERFORMANCE_QUERY_RESERVATION_INFO_KHR,
13527            next: ptr::null(),
13528            max_performance_queries_per_pool: u32::default(),
13529        }
13530    }
13531}
13532
13533unsafe impl Send for PerformanceQueryReservationInfoKHR {}
13534unsafe impl Sync for PerformanceQueryReservationInfoKHR {}
13535
13536/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html>
13537#[repr(C)]
13538#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13539pub struct PerformanceQuerySubmitInfoKHR {
13540    pub s_type: StructureType,
13541    pub next: *const c_void,
13542    pub counter_pass_index: u32,
13543}
13544
13545impl Default for PerformanceQuerySubmitInfoKHR {
13546    #[inline]
13547    fn default() -> Self {
13548        Self {
13549            s_type: StructureType::PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
13550            next: ptr::null(),
13551            counter_pass_index: u32::default(),
13552        }
13553    }
13554}
13555
13556unsafe impl Send for PerformanceQuerySubmitInfoKHR {}
13557unsafe impl Sync for PerformanceQuerySubmitInfoKHR {}
13558
13559/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html>
13560#[repr(C)]
13561#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13562pub struct PerformanceStreamMarkerInfoINTEL {
13563    pub s_type: StructureType,
13564    pub next: *const c_void,
13565    pub marker: u32,
13566}
13567
13568impl Default for PerformanceStreamMarkerInfoINTEL {
13569    #[inline]
13570    fn default() -> Self {
13571        Self {
13572            s_type: StructureType::PERFORMANCE_STREAM_MARKER_INFO_INTEL,
13573            next: ptr::null(),
13574            marker: u32::default(),
13575        }
13576    }
13577}
13578
13579unsafe impl Send for PerformanceStreamMarkerInfoINTEL {}
13580unsafe impl Sync for PerformanceStreamMarkerInfoINTEL {}
13581
13582/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html>
13583#[repr(C)]
13584#[derive(Copy, Clone, Default, Debug)]
13585pub struct PerformanceValueINTEL {
13586    pub type_: PerformanceValueTypeINTEL,
13587    pub data: PerformanceValueDataINTEL,
13588}
13589
13590/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html>
13591#[repr(C)]
13592#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13593pub struct PhysicalDevice16BitStorageFeatures {
13594    pub s_type: StructureType,
13595    pub next: *mut c_void,
13596    pub storage_buffer_16bit_access: Bool32,
13597    pub uniform_and_storage_buffer_16bit_access: Bool32,
13598    pub storage_push_constant16: Bool32,
13599    pub storage_input_output16: Bool32,
13600}
13601
13602impl Default for PhysicalDevice16BitStorageFeatures {
13603    #[inline]
13604    fn default() -> Self {
13605        Self {
13606            s_type: StructureType::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
13607            next: ptr::null_mut(),
13608            storage_buffer_16bit_access: Bool32::default(),
13609            uniform_and_storage_buffer_16bit_access: Bool32::default(),
13610            storage_push_constant16: Bool32::default(),
13611            storage_input_output16: Bool32::default(),
13612        }
13613    }
13614}
13615
13616unsafe impl Send for PhysicalDevice16BitStorageFeatures {}
13617unsafe impl Sync for PhysicalDevice16BitStorageFeatures {}
13618
13619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html>
13620#[repr(C)]
13621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13622pub struct PhysicalDevice4444FormatsFeaturesEXT {
13623    pub s_type: StructureType,
13624    pub next: *mut c_void,
13625    pub format_a4_r4_g4_b4: Bool32,
13626    pub format_a4_b4_g4_r4: Bool32,
13627}
13628
13629impl Default for PhysicalDevice4444FormatsFeaturesEXT {
13630    #[inline]
13631    fn default() -> Self {
13632        Self {
13633            s_type: StructureType::PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
13634            next: ptr::null_mut(),
13635            format_a4_r4_g4_b4: Bool32::default(),
13636            format_a4_b4_g4_r4: Bool32::default(),
13637        }
13638    }
13639}
13640
13641unsafe impl Send for PhysicalDevice4444FormatsFeaturesEXT {}
13642unsafe impl Sync for PhysicalDevice4444FormatsFeaturesEXT {}
13643
13644/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html>
13645#[repr(C)]
13646#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13647pub struct PhysicalDevice8BitStorageFeatures {
13648    pub s_type: StructureType,
13649    pub next: *mut c_void,
13650    pub storage_buffer_8bit_access: Bool32,
13651    pub uniform_and_storage_buffer_8bit_access: Bool32,
13652    pub storage_push_constant8: Bool32,
13653}
13654
13655impl Default for PhysicalDevice8BitStorageFeatures {
13656    #[inline]
13657    fn default() -> Self {
13658        Self {
13659            s_type: StructureType::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
13660            next: ptr::null_mut(),
13661            storage_buffer_8bit_access: Bool32::default(),
13662            uniform_and_storage_buffer_8bit_access: Bool32::default(),
13663            storage_push_constant8: Bool32::default(),
13664        }
13665    }
13666}
13667
13668unsafe impl Send for PhysicalDevice8BitStorageFeatures {}
13669unsafe impl Sync for PhysicalDevice8BitStorageFeatures {}
13670
13671/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html>
13672#[repr(C)]
13673#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13674pub struct PhysicalDeviceASTCDecodeFeaturesEXT {
13675    pub s_type: StructureType,
13676    pub next: *mut c_void,
13677    pub decode_mode_shared_exponent: Bool32,
13678}
13679
13680impl Default for PhysicalDeviceASTCDecodeFeaturesEXT {
13681    #[inline]
13682    fn default() -> Self {
13683        Self {
13684            s_type: StructureType::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
13685            next: ptr::null_mut(),
13686            decode_mode_shared_exponent: Bool32::default(),
13687        }
13688    }
13689}
13690
13691unsafe impl Send for PhysicalDeviceASTCDecodeFeaturesEXT {}
13692unsafe impl Sync for PhysicalDeviceASTCDecodeFeaturesEXT {}
13693
13694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html>
13695#[repr(C)]
13696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13697pub struct PhysicalDeviceAccelerationStructureFeaturesKHR {
13698    pub s_type: StructureType,
13699    pub next: *mut c_void,
13700    pub acceleration_structure: Bool32,
13701    pub acceleration_structure_capture_replay: Bool32,
13702    pub acceleration_structure_indirect_build: Bool32,
13703    pub acceleration_structure_host_commands: Bool32,
13704    pub descriptor_binding_acceleration_structure_update_after_bind: Bool32,
13705}
13706
13707impl Default for PhysicalDeviceAccelerationStructureFeaturesKHR {
13708    #[inline]
13709    fn default() -> Self {
13710        Self {
13711            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR,
13712            next: ptr::null_mut(),
13713            acceleration_structure: Bool32::default(),
13714            acceleration_structure_capture_replay: Bool32::default(),
13715            acceleration_structure_indirect_build: Bool32::default(),
13716            acceleration_structure_host_commands: Bool32::default(),
13717            descriptor_binding_acceleration_structure_update_after_bind: Bool32::default(),
13718        }
13719    }
13720}
13721
13722unsafe impl Send for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13723unsafe impl Sync for PhysicalDeviceAccelerationStructureFeaturesKHR {}
13724
13725/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html>
13726#[repr(C)]
13727#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13728pub struct PhysicalDeviceAccelerationStructurePropertiesKHR {
13729    pub s_type: StructureType,
13730    pub next: *mut c_void,
13731    pub max_geometry_count: u64,
13732    pub max_instance_count: u64,
13733    pub max_primitive_count: u64,
13734    pub max_per_stage_descriptor_acceleration_structures: u32,
13735    pub max_per_stage_descriptor_update_after_bind_acceleration_structures: u32,
13736    pub max_descriptor_set_acceleration_structures: u32,
13737    pub max_descriptor_set_update_after_bind_acceleration_structures: u32,
13738    pub min_acceleration_structure_scratch_offset_alignment: u32,
13739}
13740
13741impl Default for PhysicalDeviceAccelerationStructurePropertiesKHR {
13742    #[inline]
13743    fn default() -> Self {
13744        Self {
13745            s_type: StructureType::PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR,
13746            next: ptr::null_mut(),
13747            max_geometry_count: u64::default(),
13748            max_instance_count: u64::default(),
13749            max_primitive_count: u64::default(),
13750            max_per_stage_descriptor_acceleration_structures: u32::default(),
13751            max_per_stage_descriptor_update_after_bind_acceleration_structures: u32::default(),
13752            max_descriptor_set_acceleration_structures: u32::default(),
13753            max_descriptor_set_update_after_bind_acceleration_structures: u32::default(),
13754            min_acceleration_structure_scratch_offset_alignment: u32::default(),
13755        }
13756    }
13757}
13758
13759unsafe impl Send for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13760unsafe impl Sync for PhysicalDeviceAccelerationStructurePropertiesKHR {}
13761
13762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html>
13763#[repr(C)]
13764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13765pub struct PhysicalDeviceAddressBindingReportFeaturesEXT {
13766    pub s_type: StructureType,
13767    pub next: *mut c_void,
13768    pub report_address_binding: Bool32,
13769}
13770
13771impl Default for PhysicalDeviceAddressBindingReportFeaturesEXT {
13772    #[inline]
13773    fn default() -> Self {
13774        Self {
13775            s_type: StructureType::PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT,
13776            next: ptr::null_mut(),
13777            report_address_binding: Bool32::default(),
13778        }
13779    }
13780}
13781
13782unsafe impl Send for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13783unsafe impl Sync for PhysicalDeviceAddressBindingReportFeaturesEXT {}
13784
13785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html>
13786#[repr(C)]
13787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13788pub struct PhysicalDeviceAmigoProfilingFeaturesSEC {
13789    pub s_type: StructureType,
13790    pub next: *mut c_void,
13791    pub amigo_profiling: Bool32,
13792}
13793
13794impl Default for PhysicalDeviceAmigoProfilingFeaturesSEC {
13795    #[inline]
13796    fn default() -> Self {
13797        Self {
13798            s_type: StructureType::PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC,
13799            next: ptr::null_mut(),
13800            amigo_profiling: Bool32::default(),
13801        }
13802    }
13803}
13804
13805unsafe impl Send for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13806unsafe impl Sync for PhysicalDeviceAmigoProfilingFeaturesSEC {}
13807
13808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html>
13809#[repr(C)]
13810#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13811pub struct PhysicalDeviceAntiLagFeaturesAMD {
13812    pub s_type: StructureType,
13813    pub next: *mut c_void,
13814    pub anti_lag: Bool32,
13815}
13816
13817impl Default for PhysicalDeviceAntiLagFeaturesAMD {
13818    #[inline]
13819    fn default() -> Self {
13820        Self {
13821            s_type: StructureType::PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD,
13822            next: ptr::null_mut(),
13823            anti_lag: Bool32::default(),
13824        }
13825    }
13826}
13827
13828unsafe impl Send for PhysicalDeviceAntiLagFeaturesAMD {}
13829unsafe impl Sync for PhysicalDeviceAntiLagFeaturesAMD {}
13830
13831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html>
13832#[repr(C)]
13833#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13834pub struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13835    pub s_type: StructureType,
13836    pub next: *mut c_void,
13837    pub attachment_feedback_loop_dynamic_state: Bool32,
13838}
13839
13840impl Default for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
13841    #[inline]
13842    fn default() -> Self {
13843        Self {
13844            s_type:
13845                StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT,
13846            next: ptr::null_mut(),
13847            attachment_feedback_loop_dynamic_state: Bool32::default(),
13848        }
13849    }
13850}
13851
13852unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13853unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {}
13854
13855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html>
13856#[repr(C)]
13857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13858pub struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13859    pub s_type: StructureType,
13860    pub next: *mut c_void,
13861    pub attachment_feedback_loop_layout: Bool32,
13862}
13863
13864impl Default for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
13865    #[inline]
13866    fn default() -> Self {
13867        Self {
13868            s_type: StructureType::PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT,
13869            next: ptr::null_mut(),
13870            attachment_feedback_loop_layout: Bool32::default(),
13871        }
13872    }
13873}
13874
13875unsafe impl Send for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13876unsafe impl Sync for PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {}
13877
13878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html>
13879#[repr(C)]
13880#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13881pub struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13882    pub s_type: StructureType,
13883    pub next: *mut c_void,
13884    pub advanced_blend_coherent_operations: Bool32,
13885}
13886
13887impl Default for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {
13888    #[inline]
13889    fn default() -> Self {
13890        Self {
13891            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
13892            next: ptr::null_mut(),
13893            advanced_blend_coherent_operations: Bool32::default(),
13894        }
13895    }
13896}
13897
13898unsafe impl Send for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13899unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedFeaturesEXT {}
13900
13901/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html>
13902#[repr(C)]
13903#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13904pub struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13905    pub s_type: StructureType,
13906    pub next: *mut c_void,
13907    pub advanced_blend_max_color_attachments: u32,
13908    pub advanced_blend_independent_blend: Bool32,
13909    pub advanced_blend_non_premultiplied_src_color: Bool32,
13910    pub advanced_blend_non_premultiplied_dst_color: Bool32,
13911    pub advanced_blend_correlated_overlap: Bool32,
13912    pub advanced_blend_all_operations: Bool32,
13913}
13914
13915impl Default for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {
13916    #[inline]
13917    fn default() -> Self {
13918        Self {
13919            s_type: StructureType::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
13920            next: ptr::null_mut(),
13921            advanced_blend_max_color_attachments: u32::default(),
13922            advanced_blend_independent_blend: Bool32::default(),
13923            advanced_blend_non_premultiplied_src_color: Bool32::default(),
13924            advanced_blend_non_premultiplied_dst_color: Bool32::default(),
13925            advanced_blend_correlated_overlap: Bool32::default(),
13926            advanced_blend_all_operations: Bool32::default(),
13927        }
13928    }
13929}
13930
13931unsafe impl Send for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13932unsafe impl Sync for PhysicalDeviceBlendOperationAdvancedPropertiesEXT {}
13933
13934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html>
13935#[repr(C)]
13936#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13937pub struct PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13938    pub s_type: StructureType,
13939    pub next: *mut c_void,
13940    pub border_color_swizzle: Bool32,
13941    pub border_color_swizzle_from_image: Bool32,
13942}
13943
13944impl Default for PhysicalDeviceBorderColorSwizzleFeaturesEXT {
13945    #[inline]
13946    fn default() -> Self {
13947        Self {
13948            s_type: StructureType::PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
13949            next: ptr::null_mut(),
13950            border_color_swizzle: Bool32::default(),
13951            border_color_swizzle_from_image: Bool32::default(),
13952        }
13953    }
13954}
13955
13956unsafe impl Send for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13957unsafe impl Sync for PhysicalDeviceBorderColorSwizzleFeaturesEXT {}
13958
13959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html>
13960#[repr(C)]
13961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13962pub struct PhysicalDeviceBufferDeviceAddressFeatures {
13963    pub s_type: StructureType,
13964    pub next: *mut c_void,
13965    pub buffer_device_address: Bool32,
13966    pub buffer_device_address_capture_replay: Bool32,
13967    pub buffer_device_address_multi_device: Bool32,
13968}
13969
13970impl Default for PhysicalDeviceBufferDeviceAddressFeatures {
13971    #[inline]
13972    fn default() -> Self {
13973        Self {
13974            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
13975            next: ptr::null_mut(),
13976            buffer_device_address: Bool32::default(),
13977            buffer_device_address_capture_replay: Bool32::default(),
13978            buffer_device_address_multi_device: Bool32::default(),
13979        }
13980    }
13981}
13982
13983unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeatures {}
13984unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeatures {}
13985
13986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html>
13987#[repr(C)]
13988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
13989pub struct PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13990    pub s_type: StructureType,
13991    pub next: *mut c_void,
13992    pub buffer_device_address: Bool32,
13993    pub buffer_device_address_capture_replay: Bool32,
13994    pub buffer_device_address_multi_device: Bool32,
13995}
13996
13997impl Default for PhysicalDeviceBufferDeviceAddressFeaturesEXT {
13998    #[inline]
13999    fn default() -> Self {
14000        Self {
14001            s_type: StructureType::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
14002            next: ptr::null_mut(),
14003            buffer_device_address: Bool32::default(),
14004            buffer_device_address_capture_replay: Bool32::default(),
14005            buffer_device_address_multi_device: Bool32::default(),
14006        }
14007    }
14008}
14009
14010unsafe impl Send for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
14011unsafe impl Sync for PhysicalDeviceBufferDeviceAddressFeaturesEXT {}
14012
14013/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html>
14014#[repr(C)]
14015#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14016pub struct PhysicalDeviceClusterAccelerationStructureFeaturesNV {
14017    pub s_type: StructureType,
14018    pub next: *mut c_void,
14019    pub cluster_acceleration_structure: Bool32,
14020}
14021
14022impl Default for PhysicalDeviceClusterAccelerationStructureFeaturesNV {
14023    #[inline]
14024    fn default() -> Self {
14025        Self {
14026            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV,
14027            next: ptr::null_mut(),
14028            cluster_acceleration_structure: Bool32::default(),
14029        }
14030    }
14031}
14032
14033unsafe impl Send for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
14034unsafe impl Sync for PhysicalDeviceClusterAccelerationStructureFeaturesNV {}
14035
14036/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html>
14037#[repr(C)]
14038#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14039pub struct PhysicalDeviceClusterAccelerationStructurePropertiesNV {
14040    pub s_type: StructureType,
14041    pub next: *mut c_void,
14042    pub max_vertices_per_cluster: u32,
14043    pub max_triangles_per_cluster: u32,
14044    pub cluster_scratch_byte_alignment: u32,
14045    pub cluster_byte_alignment: u32,
14046    pub cluster_template_byte_alignment: u32,
14047    pub cluster_bottom_level_byte_alignment: u32,
14048    pub cluster_template_bounds_byte_alignment: u32,
14049    pub max_cluster_geometry_index: u32,
14050}
14051
14052impl Default for PhysicalDeviceClusterAccelerationStructurePropertiesNV {
14053    #[inline]
14054    fn default() -> Self {
14055        Self {
14056            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV,
14057            next: ptr::null_mut(),
14058            max_vertices_per_cluster: u32::default(),
14059            max_triangles_per_cluster: u32::default(),
14060            cluster_scratch_byte_alignment: u32::default(),
14061            cluster_byte_alignment: u32::default(),
14062            cluster_template_byte_alignment: u32::default(),
14063            cluster_bottom_level_byte_alignment: u32::default(),
14064            cluster_template_bounds_byte_alignment: u32::default(),
14065            max_cluster_geometry_index: u32::default(),
14066        }
14067    }
14068}
14069
14070unsafe impl Send for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
14071unsafe impl Sync for PhysicalDeviceClusterAccelerationStructurePropertiesNV {}
14072
14073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html>
14074#[repr(C)]
14075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14076pub struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
14077    pub s_type: StructureType,
14078    pub next: *mut c_void,
14079    pub clusterculling_shader: Bool32,
14080    pub multiview_cluster_culling_shader: Bool32,
14081}
14082
14083impl Default for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
14084    #[inline]
14085    fn default() -> Self {
14086        Self {
14087            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
14088            next: ptr::null_mut(),
14089            clusterculling_shader: Bool32::default(),
14090            multiview_cluster_culling_shader: Bool32::default(),
14091        }
14092    }
14093}
14094
14095unsafe impl Send for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
14096unsafe impl Sync for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI {}
14097
14098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html>
14099#[repr(C)]
14100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14101pub struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
14102    pub s_type: StructureType,
14103    pub next: *mut c_void,
14104    pub max_work_group_count: [u32; 3],
14105    pub max_work_group_size: [u32; 3],
14106    pub max_output_cluster_count: u32,
14107    pub indirect_buffer_offset_alignment: DeviceSize,
14108}
14109
14110impl Default for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
14111    #[inline]
14112    fn default() -> Self {
14113        Self {
14114            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
14115            next: ptr::null_mut(),
14116            max_work_group_count: [u32::default(); 3],
14117            max_work_group_size: [u32::default(); 3],
14118            max_output_cluster_count: u32::default(),
14119            indirect_buffer_offset_alignment: DeviceSize::default(),
14120        }
14121    }
14122}
14123
14124unsafe impl Send for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
14125unsafe impl Sync for PhysicalDeviceClusterCullingShaderPropertiesHUAWEI {}
14126
14127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html>
14128#[repr(C)]
14129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14130pub struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
14131    pub s_type: StructureType,
14132    pub next: *mut c_void,
14133    pub cluster_shading_rate: Bool32,
14134}
14135
14136impl Default for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
14137    #[inline]
14138    fn default() -> Self {
14139        Self {
14140            s_type: StructureType::PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
14141            next: ptr::null_mut(),
14142            cluster_shading_rate: Bool32::default(),
14143        }
14144    }
14145}
14146
14147unsafe impl Send for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
14148unsafe impl Sync for PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {}
14149
14150/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html>
14151#[repr(C)]
14152#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14153pub struct PhysicalDeviceCoherentMemoryFeaturesAMD {
14154    pub s_type: StructureType,
14155    pub next: *mut c_void,
14156    pub device_coherent_memory: Bool32,
14157}
14158
14159impl Default for PhysicalDeviceCoherentMemoryFeaturesAMD {
14160    #[inline]
14161    fn default() -> Self {
14162        Self {
14163            s_type: StructureType::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
14164            next: ptr::null_mut(),
14165            device_coherent_memory: Bool32::default(),
14166        }
14167    }
14168}
14169
14170unsafe impl Send for PhysicalDeviceCoherentMemoryFeaturesAMD {}
14171unsafe impl Sync for PhysicalDeviceCoherentMemoryFeaturesAMD {}
14172
14173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html>
14174#[repr(C)]
14175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14176pub struct PhysicalDeviceColorWriteEnableFeaturesEXT {
14177    pub s_type: StructureType,
14178    pub next: *mut c_void,
14179    pub color_write_enable: Bool32,
14180}
14181
14182impl Default for PhysicalDeviceColorWriteEnableFeaturesEXT {
14183    #[inline]
14184    fn default() -> Self {
14185        Self {
14186            s_type: StructureType::PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
14187            next: ptr::null_mut(),
14188            color_write_enable: Bool32::default(),
14189        }
14190    }
14191}
14192
14193unsafe impl Send for PhysicalDeviceColorWriteEnableFeaturesEXT {}
14194unsafe impl Sync for PhysicalDeviceColorWriteEnableFeaturesEXT {}
14195
14196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html>
14197#[repr(C)]
14198#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14199pub struct PhysicalDeviceCommandBufferInheritanceFeaturesNV {
14200    pub s_type: StructureType,
14201    pub next: *mut c_void,
14202    pub command_buffer_inheritance: Bool32,
14203}
14204
14205impl Default for PhysicalDeviceCommandBufferInheritanceFeaturesNV {
14206    #[inline]
14207    fn default() -> Self {
14208        Self {
14209            s_type: StructureType::PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV,
14210            next: ptr::null_mut(),
14211            command_buffer_inheritance: Bool32::default(),
14212        }
14213    }
14214}
14215
14216unsafe impl Send for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
14217unsafe impl Sync for PhysicalDeviceCommandBufferInheritanceFeaturesNV {}
14218
14219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV.html>
14220#[repr(C)]
14221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14222pub struct PhysicalDeviceComputeOccupancyPriorityFeaturesNV {
14223    pub s_type: StructureType,
14224    pub next: *mut c_void,
14225    pub compute_occupancy_priority: Bool32,
14226}
14227
14228impl Default for PhysicalDeviceComputeOccupancyPriorityFeaturesNV {
14229    #[inline]
14230    fn default() -> Self {
14231        Self {
14232            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV,
14233            next: ptr::null_mut(),
14234            compute_occupancy_priority: Bool32::default(),
14235        }
14236    }
14237}
14238
14239unsafe impl Send for PhysicalDeviceComputeOccupancyPriorityFeaturesNV {}
14240unsafe impl Sync for PhysicalDeviceComputeOccupancyPriorityFeaturesNV {}
14241
14242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html>
14243#[repr(C)]
14244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14245pub struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
14246    pub s_type: StructureType,
14247    pub next: *mut c_void,
14248    pub compute_derivative_group_quads: Bool32,
14249    pub compute_derivative_group_linear: Bool32,
14250}
14251
14252impl Default for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {
14253    #[inline]
14254    fn default() -> Self {
14255        Self {
14256            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR,
14257            next: ptr::null_mut(),
14258            compute_derivative_group_quads: Bool32::default(),
14259            compute_derivative_group_linear: Bool32::default(),
14260        }
14261    }
14262}
14263
14264unsafe impl Send for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
14265unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesFeaturesKHR {}
14266
14267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html>
14268#[repr(C)]
14269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14270pub struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
14271    pub s_type: StructureType,
14272    pub next: *mut c_void,
14273    pub mesh_and_task_shader_derivatives: Bool32,
14274}
14275
14276impl Default for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {
14277    #[inline]
14278    fn default() -> Self {
14279        Self {
14280            s_type: StructureType::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR,
14281            next: ptr::null_mut(),
14282            mesh_and_task_shader_derivatives: Bool32::default(),
14283        }
14284    }
14285}
14286
14287unsafe impl Send for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
14288unsafe impl Sync for PhysicalDeviceComputeShaderDerivativesPropertiesKHR {}
14289
14290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html>
14291#[repr(C)]
14292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14293pub struct PhysicalDeviceConditionalRenderingFeaturesEXT {
14294    pub s_type: StructureType,
14295    pub next: *mut c_void,
14296    pub conditional_rendering: Bool32,
14297    pub inherited_conditional_rendering: Bool32,
14298}
14299
14300impl Default for PhysicalDeviceConditionalRenderingFeaturesEXT {
14301    #[inline]
14302    fn default() -> Self {
14303        Self {
14304            s_type: StructureType::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
14305            next: ptr::null_mut(),
14306            conditional_rendering: Bool32::default(),
14307            inherited_conditional_rendering: Bool32::default(),
14308        }
14309    }
14310}
14311
14312unsafe impl Send for PhysicalDeviceConditionalRenderingFeaturesEXT {}
14313unsafe impl Sync for PhysicalDeviceConditionalRenderingFeaturesEXT {}
14314
14315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html>
14316#[repr(C)]
14317#[derive(Copy, Clone, Debug, PartialEq)]
14318pub struct PhysicalDeviceConservativeRasterizationPropertiesEXT {
14319    pub s_type: StructureType,
14320    pub next: *mut c_void,
14321    pub primitive_overestimation_size: f32,
14322    pub max_extra_primitive_overestimation_size: f32,
14323    pub extra_primitive_overestimation_size_granularity: f32,
14324    pub primitive_underestimation: Bool32,
14325    pub conservative_point_and_line_rasterization: Bool32,
14326    pub degenerate_triangles_rasterized: Bool32,
14327    pub degenerate_lines_rasterized: Bool32,
14328    pub fully_covered_fragment_shader_input_variable: Bool32,
14329    pub conservative_rasterization_post_depth_coverage: Bool32,
14330}
14331
14332impl Default for PhysicalDeviceConservativeRasterizationPropertiesEXT {
14333    #[inline]
14334    fn default() -> Self {
14335        Self {
14336            s_type: StructureType::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
14337            next: ptr::null_mut(),
14338            primitive_overestimation_size: f32::default(),
14339            max_extra_primitive_overestimation_size: f32::default(),
14340            extra_primitive_overestimation_size_granularity: f32::default(),
14341            primitive_underestimation: Bool32::default(),
14342            conservative_point_and_line_rasterization: Bool32::default(),
14343            degenerate_triangles_rasterized: Bool32::default(),
14344            degenerate_lines_rasterized: Bool32::default(),
14345            fully_covered_fragment_shader_input_variable: Bool32::default(),
14346            conservative_rasterization_post_depth_coverage: Bool32::default(),
14347        }
14348    }
14349}
14350
14351unsafe impl Send for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
14352unsafe impl Sync for PhysicalDeviceConservativeRasterizationPropertiesEXT {}
14353
14354/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html>
14355#[repr(C)]
14356#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14357pub struct PhysicalDeviceCooperativeMatrix2FeaturesNV {
14358    pub s_type: StructureType,
14359    pub next: *mut c_void,
14360    pub cooperative_matrix_workgroup_scope: Bool32,
14361    pub cooperative_matrix_flexible_dimensions: Bool32,
14362    pub cooperative_matrix_reductions: Bool32,
14363    pub cooperative_matrix_conversions: Bool32,
14364    pub cooperative_matrix_per_element_operations: Bool32,
14365    pub cooperative_matrix_tensor_addressing: Bool32,
14366    pub cooperative_matrix_block_loads: Bool32,
14367}
14368
14369impl Default for PhysicalDeviceCooperativeMatrix2FeaturesNV {
14370    #[inline]
14371    fn default() -> Self {
14372        Self {
14373            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV,
14374            next: ptr::null_mut(),
14375            cooperative_matrix_workgroup_scope: Bool32::default(),
14376            cooperative_matrix_flexible_dimensions: Bool32::default(),
14377            cooperative_matrix_reductions: Bool32::default(),
14378            cooperative_matrix_conversions: Bool32::default(),
14379            cooperative_matrix_per_element_operations: Bool32::default(),
14380            cooperative_matrix_tensor_addressing: Bool32::default(),
14381            cooperative_matrix_block_loads: Bool32::default(),
14382        }
14383    }
14384}
14385
14386unsafe impl Send for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
14387unsafe impl Sync for PhysicalDeviceCooperativeMatrix2FeaturesNV {}
14388
14389/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html>
14390#[repr(C)]
14391#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14392pub struct PhysicalDeviceCooperativeMatrix2PropertiesNV {
14393    pub s_type: StructureType,
14394    pub next: *mut c_void,
14395    pub cooperative_matrix_workgroup_scope_max_workgroup_size: u32,
14396    pub cooperative_matrix_flexible_dimensions_max_dimension: u32,
14397    pub cooperative_matrix_workgroup_scope_reserved_shared_memory: u32,
14398}
14399
14400impl Default for PhysicalDeviceCooperativeMatrix2PropertiesNV {
14401    #[inline]
14402    fn default() -> Self {
14403        Self {
14404            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV,
14405            next: ptr::null_mut(),
14406            cooperative_matrix_workgroup_scope_max_workgroup_size: u32::default(),
14407            cooperative_matrix_flexible_dimensions_max_dimension: u32::default(),
14408            cooperative_matrix_workgroup_scope_reserved_shared_memory: u32::default(),
14409        }
14410    }
14411}
14412
14413unsafe impl Send for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
14414unsafe impl Sync for PhysicalDeviceCooperativeMatrix2PropertiesNV {}
14415
14416/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM.html>
14417#[repr(C)]
14418#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14419pub struct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM {
14420    pub s_type: StructureType,
14421    pub next: *mut c_void,
14422    pub cooperative_matrix_conversion: Bool32,
14423}
14424
14425impl Default for PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM {
14426    #[inline]
14427    fn default() -> Self {
14428        Self {
14429            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM,
14430            next: ptr::null_mut(),
14431            cooperative_matrix_conversion: Bool32::default(),
14432        }
14433    }
14434}
14435
14436unsafe impl Send for PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM {}
14437unsafe impl Sync for PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM {}
14438
14439/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html>
14440#[repr(C)]
14441#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14442pub struct PhysicalDeviceCooperativeMatrixFeaturesKHR {
14443    pub s_type: StructureType,
14444    pub next: *mut c_void,
14445    pub cooperative_matrix: Bool32,
14446    pub cooperative_matrix_robust_buffer_access: Bool32,
14447}
14448
14449impl Default for PhysicalDeviceCooperativeMatrixFeaturesKHR {
14450    #[inline]
14451    fn default() -> Self {
14452        Self {
14453            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR,
14454            next: ptr::null_mut(),
14455            cooperative_matrix: Bool32::default(),
14456            cooperative_matrix_robust_buffer_access: Bool32::default(),
14457        }
14458    }
14459}
14460
14461unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
14462unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesKHR {}
14463
14464/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html>
14465#[repr(C)]
14466#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14467pub struct PhysicalDeviceCooperativeMatrixFeaturesNV {
14468    pub s_type: StructureType,
14469    pub next: *mut c_void,
14470    pub cooperative_matrix: Bool32,
14471    pub cooperative_matrix_robust_buffer_access: Bool32,
14472}
14473
14474impl Default for PhysicalDeviceCooperativeMatrixFeaturesNV {
14475    #[inline]
14476    fn default() -> Self {
14477        Self {
14478            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
14479            next: ptr::null_mut(),
14480            cooperative_matrix: Bool32::default(),
14481            cooperative_matrix_robust_buffer_access: Bool32::default(),
14482        }
14483    }
14484}
14485
14486unsafe impl Send for PhysicalDeviceCooperativeMatrixFeaturesNV {}
14487unsafe impl Sync for PhysicalDeviceCooperativeMatrixFeaturesNV {}
14488
14489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html>
14490#[repr(C)]
14491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14492pub struct PhysicalDeviceCooperativeMatrixPropertiesKHR {
14493    pub s_type: StructureType,
14494    pub next: *mut c_void,
14495    pub cooperative_matrix_supported_stages: ShaderStageFlags,
14496}
14497
14498impl Default for PhysicalDeviceCooperativeMatrixPropertiesKHR {
14499    #[inline]
14500    fn default() -> Self {
14501        Self {
14502            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR,
14503            next: ptr::null_mut(),
14504            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
14505        }
14506    }
14507}
14508
14509unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
14510unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesKHR {}
14511
14512/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html>
14513#[repr(C)]
14514#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14515pub struct PhysicalDeviceCooperativeMatrixPropertiesNV {
14516    pub s_type: StructureType,
14517    pub next: *mut c_void,
14518    pub cooperative_matrix_supported_stages: ShaderStageFlags,
14519}
14520
14521impl Default for PhysicalDeviceCooperativeMatrixPropertiesNV {
14522    #[inline]
14523    fn default() -> Self {
14524        Self {
14525            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
14526            next: ptr::null_mut(),
14527            cooperative_matrix_supported_stages: ShaderStageFlags::default(),
14528        }
14529    }
14530}
14531
14532unsafe impl Send for PhysicalDeviceCooperativeMatrixPropertiesNV {}
14533unsafe impl Sync for PhysicalDeviceCooperativeMatrixPropertiesNV {}
14534
14535/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html>
14536#[repr(C)]
14537#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14538pub struct PhysicalDeviceCooperativeVectorFeaturesNV {
14539    pub s_type: StructureType,
14540    pub next: *mut c_void,
14541    pub cooperative_vector: Bool32,
14542    pub cooperative_vector_training: Bool32,
14543}
14544
14545impl Default for PhysicalDeviceCooperativeVectorFeaturesNV {
14546    #[inline]
14547    fn default() -> Self {
14548        Self {
14549            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV,
14550            next: ptr::null_mut(),
14551            cooperative_vector: Bool32::default(),
14552            cooperative_vector_training: Bool32::default(),
14553        }
14554    }
14555}
14556
14557unsafe impl Send for PhysicalDeviceCooperativeVectorFeaturesNV {}
14558unsafe impl Sync for PhysicalDeviceCooperativeVectorFeaturesNV {}
14559
14560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html>
14561#[repr(C)]
14562#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14563pub struct PhysicalDeviceCooperativeVectorPropertiesNV {
14564    pub s_type: StructureType,
14565    pub next: *mut c_void,
14566    pub cooperative_vector_supported_stages: ShaderStageFlags,
14567    pub cooperative_vector_training_float16_accumulation: Bool32,
14568    pub cooperative_vector_training_float32_accumulation: Bool32,
14569    pub max_cooperative_vector_components: u32,
14570}
14571
14572impl Default for PhysicalDeviceCooperativeVectorPropertiesNV {
14573    #[inline]
14574    fn default() -> Self {
14575        Self {
14576            s_type: StructureType::PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV,
14577            next: ptr::null_mut(),
14578            cooperative_vector_supported_stages: ShaderStageFlags::default(),
14579            cooperative_vector_training_float16_accumulation: Bool32::default(),
14580            cooperative_vector_training_float32_accumulation: Bool32::default(),
14581            max_cooperative_vector_components: u32::default(),
14582        }
14583    }
14584}
14585
14586unsafe impl Send for PhysicalDeviceCooperativeVectorPropertiesNV {}
14587unsafe impl Sync for PhysicalDeviceCooperativeVectorPropertiesNV {}
14588
14589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR.html>
14590#[repr(C)]
14591#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14592pub struct PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
14593    pub s_type: StructureType,
14594    pub next: *mut c_void,
14595    pub indirect_memory_copy: Bool32,
14596    pub indirect_memory_to_image_copy: Bool32,
14597}
14598
14599impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {
14600    #[inline]
14601    fn default() -> Self {
14602        Self {
14603            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR,
14604            next: ptr::null_mut(),
14605            indirect_memory_copy: Bool32::default(),
14606            indirect_memory_to_image_copy: Bool32::default(),
14607        }
14608    }
14609}
14610
14611unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
14612unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesKHR {}
14613
14614/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html>
14615#[repr(C)]
14616#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14617pub struct PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14618    pub s_type: StructureType,
14619    pub next: *mut c_void,
14620    pub indirect_copy: Bool32,
14621}
14622
14623impl Default for PhysicalDeviceCopyMemoryIndirectFeaturesNV {
14624    #[inline]
14625    fn default() -> Self {
14626        Self {
14627            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV,
14628            next: ptr::null_mut(),
14629            indirect_copy: Bool32::default(),
14630        }
14631    }
14632}
14633
14634unsafe impl Send for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14635unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectFeaturesNV {}
14636
14637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR.html>
14638#[repr(C)]
14639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14640pub struct PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14641    pub s_type: StructureType,
14642    pub next: *mut c_void,
14643    pub supported_queues: QueueFlags,
14644}
14645
14646impl Default for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {
14647    #[inline]
14648    fn default() -> Self {
14649        Self {
14650            s_type: StructureType::PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR,
14651            next: ptr::null_mut(),
14652            supported_queues: QueueFlags::default(),
14653        }
14654    }
14655}
14656
14657unsafe impl Send for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14658unsafe impl Sync for PhysicalDeviceCopyMemoryIndirectPropertiesKHR {}
14659
14660/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html>
14661#[repr(C)]
14662#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14663pub struct PhysicalDeviceCornerSampledImageFeaturesNV {
14664    pub s_type: StructureType,
14665    pub next: *mut c_void,
14666    pub corner_sampled_image: Bool32,
14667}
14668
14669impl Default for PhysicalDeviceCornerSampledImageFeaturesNV {
14670    #[inline]
14671    fn default() -> Self {
14672        Self {
14673            s_type: StructureType::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
14674            next: ptr::null_mut(),
14675            corner_sampled_image: Bool32::default(),
14676        }
14677    }
14678}
14679
14680unsafe impl Send for PhysicalDeviceCornerSampledImageFeaturesNV {}
14681unsafe impl Sync for PhysicalDeviceCornerSampledImageFeaturesNV {}
14682
14683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html>
14684#[repr(C)]
14685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14686pub struct PhysicalDeviceCoverageReductionModeFeaturesNV {
14687    pub s_type: StructureType,
14688    pub next: *mut c_void,
14689    pub coverage_reduction_mode: Bool32,
14690}
14691
14692impl Default for PhysicalDeviceCoverageReductionModeFeaturesNV {
14693    #[inline]
14694    fn default() -> Self {
14695        Self {
14696            s_type: StructureType::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
14697            next: ptr::null_mut(),
14698            coverage_reduction_mode: Bool32::default(),
14699        }
14700    }
14701}
14702
14703unsafe impl Send for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14704unsafe impl Sync for PhysicalDeviceCoverageReductionModeFeaturesNV {}
14705
14706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html>
14707#[repr(C)]
14708#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14709pub struct PhysicalDeviceCubicClampFeaturesQCOM {
14710    pub s_type: StructureType,
14711    pub next: *mut c_void,
14712    pub cubic_range_clamp: Bool32,
14713}
14714
14715impl Default for PhysicalDeviceCubicClampFeaturesQCOM {
14716    #[inline]
14717    fn default() -> Self {
14718        Self {
14719            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM,
14720            next: ptr::null_mut(),
14721            cubic_range_clamp: Bool32::default(),
14722        }
14723    }
14724}
14725
14726unsafe impl Send for PhysicalDeviceCubicClampFeaturesQCOM {}
14727unsafe impl Sync for PhysicalDeviceCubicClampFeaturesQCOM {}
14728
14729/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html>
14730#[repr(C)]
14731#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14732pub struct PhysicalDeviceCubicWeightsFeaturesQCOM {
14733    pub s_type: StructureType,
14734    pub next: *mut c_void,
14735    pub selectable_cubic_weights: Bool32,
14736}
14737
14738impl Default for PhysicalDeviceCubicWeightsFeaturesQCOM {
14739    #[inline]
14740    fn default() -> Self {
14741        Self {
14742            s_type: StructureType::PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM,
14743            next: ptr::null_mut(),
14744            selectable_cubic_weights: Bool32::default(),
14745        }
14746    }
14747}
14748
14749unsafe impl Send for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14750unsafe impl Sync for PhysicalDeviceCubicWeightsFeaturesQCOM {}
14751
14752/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html>
14753#[repr(C)]
14754#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14755pub struct PhysicalDeviceCudaKernelLaunchFeaturesNV {
14756    pub s_type: StructureType,
14757    pub next: *mut c_void,
14758    pub cuda_kernel_launch_features: Bool32,
14759}
14760
14761impl Default for PhysicalDeviceCudaKernelLaunchFeaturesNV {
14762    #[inline]
14763    fn default() -> Self {
14764        Self {
14765            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV,
14766            next: ptr::null_mut(),
14767            cuda_kernel_launch_features: Bool32::default(),
14768        }
14769    }
14770}
14771
14772unsafe impl Send for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14773unsafe impl Sync for PhysicalDeviceCudaKernelLaunchFeaturesNV {}
14774
14775/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html>
14776#[repr(C)]
14777#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14778pub struct PhysicalDeviceCudaKernelLaunchPropertiesNV {
14779    pub s_type: StructureType,
14780    pub next: *mut c_void,
14781    pub compute_capability_minor: u32,
14782    pub compute_capability_major: u32,
14783}
14784
14785impl Default for PhysicalDeviceCudaKernelLaunchPropertiesNV {
14786    #[inline]
14787    fn default() -> Self {
14788        Self {
14789            s_type: StructureType::PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV,
14790            next: ptr::null_mut(),
14791            compute_capability_minor: u32::default(),
14792            compute_capability_major: u32::default(),
14793        }
14794    }
14795}
14796
14797unsafe impl Send for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14798unsafe impl Sync for PhysicalDeviceCudaKernelLaunchPropertiesNV {}
14799
14800/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html>
14801#[repr(C)]
14802#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14803pub struct PhysicalDeviceCustomBorderColorFeaturesEXT {
14804    pub s_type: StructureType,
14805    pub next: *mut c_void,
14806    pub custom_border_colors: Bool32,
14807    pub custom_border_color_without_format: Bool32,
14808}
14809
14810impl Default for PhysicalDeviceCustomBorderColorFeaturesEXT {
14811    #[inline]
14812    fn default() -> Self {
14813        Self {
14814            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT,
14815            next: ptr::null_mut(),
14816            custom_border_colors: Bool32::default(),
14817            custom_border_color_without_format: Bool32::default(),
14818        }
14819    }
14820}
14821
14822unsafe impl Send for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14823unsafe impl Sync for PhysicalDeviceCustomBorderColorFeaturesEXT {}
14824
14825/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html>
14826#[repr(C)]
14827#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14828pub struct PhysicalDeviceCustomBorderColorPropertiesEXT {
14829    pub s_type: StructureType,
14830    pub next: *mut c_void,
14831    pub max_custom_border_color_samplers: u32,
14832}
14833
14834impl Default for PhysicalDeviceCustomBorderColorPropertiesEXT {
14835    #[inline]
14836    fn default() -> Self {
14837        Self {
14838            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT,
14839            next: ptr::null_mut(),
14840            max_custom_border_color_samplers: u32::default(),
14841        }
14842    }
14843}
14844
14845unsafe impl Send for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14846unsafe impl Sync for PhysicalDeviceCustomBorderColorPropertiesEXT {}
14847
14848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomResolveFeaturesEXT.html>
14849#[repr(C)]
14850#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14851pub struct PhysicalDeviceCustomResolveFeaturesEXT {
14852    pub s_type: StructureType,
14853    pub next: *mut c_void,
14854    pub custom_resolve: Bool32,
14855}
14856
14857impl Default for PhysicalDeviceCustomResolveFeaturesEXT {
14858    #[inline]
14859    fn default() -> Self {
14860        Self {
14861            s_type: StructureType::PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT,
14862            next: ptr::null_mut(),
14863            custom_resolve: Bool32::default(),
14864        }
14865    }
14866}
14867
14868unsafe impl Send for PhysicalDeviceCustomResolveFeaturesEXT {}
14869unsafe impl Sync for PhysicalDeviceCustomResolveFeaturesEXT {}
14870
14871/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphFeaturesARM.html>
14872#[repr(C)]
14873#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14874pub struct PhysicalDeviceDataGraphFeaturesARM {
14875    pub s_type: StructureType,
14876    pub next: *mut c_void,
14877    pub data_graph: Bool32,
14878    pub data_graph_update_after_bind: Bool32,
14879    pub data_graph_specialization_constants: Bool32,
14880    pub data_graph_descriptor_buffer: Bool32,
14881    pub data_graph_shader_module: Bool32,
14882}
14883
14884impl Default for PhysicalDeviceDataGraphFeaturesARM {
14885    #[inline]
14886    fn default() -> Self {
14887        Self {
14888            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM,
14889            next: ptr::null_mut(),
14890            data_graph: Bool32::default(),
14891            data_graph_update_after_bind: Bool32::default(),
14892            data_graph_specialization_constants: Bool32::default(),
14893            data_graph_descriptor_buffer: Bool32::default(),
14894            data_graph_shader_module: Bool32::default(),
14895        }
14896    }
14897}
14898
14899unsafe impl Send for PhysicalDeviceDataGraphFeaturesARM {}
14900unsafe impl Sync for PhysicalDeviceDataGraphFeaturesARM {}
14901
14902/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphModelFeaturesQCOM.html>
14903#[repr(C)]
14904#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14905pub struct PhysicalDeviceDataGraphModelFeaturesQCOM {
14906    pub s_type: StructureType,
14907    pub next: *mut c_void,
14908    pub data_graph_model: Bool32,
14909}
14910
14911impl Default for PhysicalDeviceDataGraphModelFeaturesQCOM {
14912    #[inline]
14913    fn default() -> Self {
14914        Self {
14915            s_type: StructureType::PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM,
14916            next: ptr::null_mut(),
14917            data_graph_model: Bool32::default(),
14918        }
14919    }
14920}
14921
14922unsafe impl Send for PhysicalDeviceDataGraphModelFeaturesQCOM {}
14923unsafe impl Sync for PhysicalDeviceDataGraphModelFeaturesQCOM {}
14924
14925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationSupportARM.html>
14926#[repr(C)]
14927#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14928pub struct PhysicalDeviceDataGraphOperationSupportARM {
14929    pub operation_type: PhysicalDeviceDataGraphOperationTypeARM,
14930    pub name: StringArray<MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM>,
14931    pub version: u32,
14932}
14933
14934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineARM.html>
14935#[repr(C)]
14936#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
14937pub struct PhysicalDeviceDataGraphProcessingEngineARM {
14938    pub type_: PhysicalDeviceDataGraphProcessingEngineTypeARM,
14939    pub is_foreign: Bool32,
14940}
14941
14942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html>
14943#[repr(C)]
14944#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14945pub struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14946    pub s_type: StructureType,
14947    pub next: *mut c_void,
14948    pub dedicated_allocation_image_aliasing: Bool32,
14949}
14950
14951impl Default for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14952    #[inline]
14953    fn default() -> Self {
14954        Self {
14955            s_type: StructureType::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
14956            next: ptr::null_mut(),
14957            dedicated_allocation_image_aliasing: Bool32::default(),
14958        }
14959    }
14960}
14961
14962unsafe impl Send for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14963unsafe impl Sync for PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {}
14964
14965/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX.html>
14966#[repr(C)]
14967#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14968pub struct PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14969    pub s_type: StructureType,
14970    pub next: *mut c_void,
14971    pub dense_geometry_format: Bool32,
14972}
14973
14974impl Default for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {
14975    #[inline]
14976    fn default() -> Self {
14977        Self {
14978            s_type: StructureType::PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX,
14979            next: ptr::null_mut(),
14980            dense_geometry_format: Bool32::default(),
14981        }
14982    }
14983}
14984
14985unsafe impl Send for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14986unsafe impl Sync for PhysicalDeviceDenseGeometryFormatFeaturesAMDX {}
14987
14988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html>
14989#[repr(C)]
14990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
14991pub struct PhysicalDeviceDepthBiasControlFeaturesEXT {
14992    pub s_type: StructureType,
14993    pub next: *mut c_void,
14994    pub depth_bias_control: Bool32,
14995    pub least_representable_value_force_unorm_representation: Bool32,
14996    pub float_representation: Bool32,
14997    pub depth_bias_exact: Bool32,
14998}
14999
15000impl Default for PhysicalDeviceDepthBiasControlFeaturesEXT {
15001    #[inline]
15002    fn default() -> Self {
15003        Self {
15004            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT,
15005            next: ptr::null_mut(),
15006            depth_bias_control: Bool32::default(),
15007            least_representable_value_force_unorm_representation: Bool32::default(),
15008            float_representation: Bool32::default(),
15009            depth_bias_exact: Bool32::default(),
15010        }
15011    }
15012}
15013
15014unsafe impl Send for PhysicalDeviceDepthBiasControlFeaturesEXT {}
15015unsafe impl Sync for PhysicalDeviceDepthBiasControlFeaturesEXT {}
15016
15017/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html>
15018#[repr(C)]
15019#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15020pub struct PhysicalDeviceDepthClampControlFeaturesEXT {
15021    pub s_type: StructureType,
15022    pub next: *mut c_void,
15023    pub depth_clamp_control: Bool32,
15024}
15025
15026impl Default for PhysicalDeviceDepthClampControlFeaturesEXT {
15027    #[inline]
15028    fn default() -> Self {
15029        Self {
15030            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT,
15031            next: ptr::null_mut(),
15032            depth_clamp_control: Bool32::default(),
15033        }
15034    }
15035}
15036
15037unsafe impl Send for PhysicalDeviceDepthClampControlFeaturesEXT {}
15038unsafe impl Sync for PhysicalDeviceDepthClampControlFeaturesEXT {}
15039
15040/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html>
15041#[repr(C)]
15042#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15043pub struct PhysicalDeviceDepthClampZeroOneFeaturesKHR {
15044    pub s_type: StructureType,
15045    pub next: *mut c_void,
15046    pub depth_clamp_zero_one: Bool32,
15047}
15048
15049impl Default for PhysicalDeviceDepthClampZeroOneFeaturesKHR {
15050    #[inline]
15051    fn default() -> Self {
15052        Self {
15053            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
15054            next: ptr::null_mut(),
15055            depth_clamp_zero_one: Bool32::default(),
15056        }
15057    }
15058}
15059
15060unsafe impl Send for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
15061unsafe impl Sync for PhysicalDeviceDepthClampZeroOneFeaturesKHR {}
15062
15063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html>
15064#[repr(C)]
15065#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15066pub struct PhysicalDeviceDepthClipControlFeaturesEXT {
15067    pub s_type: StructureType,
15068    pub next: *mut c_void,
15069    pub depth_clip_control: Bool32,
15070}
15071
15072impl Default for PhysicalDeviceDepthClipControlFeaturesEXT {
15073    #[inline]
15074    fn default() -> Self {
15075        Self {
15076            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
15077            next: ptr::null_mut(),
15078            depth_clip_control: Bool32::default(),
15079        }
15080    }
15081}
15082
15083unsafe impl Send for PhysicalDeviceDepthClipControlFeaturesEXT {}
15084unsafe impl Sync for PhysicalDeviceDepthClipControlFeaturesEXT {}
15085
15086/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html>
15087#[repr(C)]
15088#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15089pub struct PhysicalDeviceDepthClipEnableFeaturesEXT {
15090    pub s_type: StructureType,
15091    pub next: *mut c_void,
15092    pub depth_clip_enable: Bool32,
15093}
15094
15095impl Default for PhysicalDeviceDepthClipEnableFeaturesEXT {
15096    #[inline]
15097    fn default() -> Self {
15098        Self {
15099            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
15100            next: ptr::null_mut(),
15101            depth_clip_enable: Bool32::default(),
15102        }
15103    }
15104}
15105
15106unsafe impl Send for PhysicalDeviceDepthClipEnableFeaturesEXT {}
15107unsafe impl Sync for PhysicalDeviceDepthClipEnableFeaturesEXT {}
15108
15109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html>
15110#[repr(C)]
15111#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15112pub struct PhysicalDeviceDepthStencilResolveProperties {
15113    pub s_type: StructureType,
15114    pub next: *mut c_void,
15115    pub supported_depth_resolve_modes: ResolveModeFlags,
15116    pub supported_stencil_resolve_modes: ResolveModeFlags,
15117    pub independent_resolve_none: Bool32,
15118    pub independent_resolve: Bool32,
15119}
15120
15121impl Default for PhysicalDeviceDepthStencilResolveProperties {
15122    #[inline]
15123    fn default() -> Self {
15124        Self {
15125            s_type: StructureType::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
15126            next: ptr::null_mut(),
15127            supported_depth_resolve_modes: ResolveModeFlags::default(),
15128            supported_stencil_resolve_modes: ResolveModeFlags::default(),
15129            independent_resolve_none: Bool32::default(),
15130            independent_resolve: Bool32::default(),
15131        }
15132    }
15133}
15134
15135unsafe impl Send for PhysicalDeviceDepthStencilResolveProperties {}
15136unsafe impl Sync for PhysicalDeviceDepthStencilResolveProperties {}
15137
15138/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html>
15139#[repr(C)]
15140#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15141pub struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
15142    pub s_type: StructureType,
15143    pub next: *mut c_void,
15144    pub combined_image_sampler_density_map_descriptor_size: usize,
15145}
15146
15147impl Default for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
15148    #[inline]
15149    fn default() -> Self {
15150        Self {
15151            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT,
15152            next: ptr::null_mut(),
15153            combined_image_sampler_density_map_descriptor_size: usize::default(),
15154        }
15155    }
15156}
15157
15158unsafe impl Send for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
15159unsafe impl Sync for PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {}
15160
15161/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html>
15162#[repr(C)]
15163#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15164pub struct PhysicalDeviceDescriptorBufferFeaturesEXT {
15165    pub s_type: StructureType,
15166    pub next: *mut c_void,
15167    pub descriptor_buffer: Bool32,
15168    pub descriptor_buffer_capture_replay: Bool32,
15169    pub descriptor_buffer_image_layout_ignored: Bool32,
15170    pub descriptor_buffer_push_descriptors: Bool32,
15171}
15172
15173impl Default for PhysicalDeviceDescriptorBufferFeaturesEXT {
15174    #[inline]
15175    fn default() -> Self {
15176        Self {
15177            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT,
15178            next: ptr::null_mut(),
15179            descriptor_buffer: Bool32::default(),
15180            descriptor_buffer_capture_replay: Bool32::default(),
15181            descriptor_buffer_image_layout_ignored: Bool32::default(),
15182            descriptor_buffer_push_descriptors: Bool32::default(),
15183        }
15184    }
15185}
15186
15187unsafe impl Send for PhysicalDeviceDescriptorBufferFeaturesEXT {}
15188unsafe impl Sync for PhysicalDeviceDescriptorBufferFeaturesEXT {}
15189
15190/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html>
15191#[repr(C)]
15192#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15193pub struct PhysicalDeviceDescriptorBufferPropertiesEXT {
15194    pub s_type: StructureType,
15195    pub next: *mut c_void,
15196    pub combined_image_sampler_descriptor_single_array: Bool32,
15197    pub bufferless_push_descriptors: Bool32,
15198    pub allow_sampler_image_view_post_submit_creation: Bool32,
15199    pub descriptor_buffer_offset_alignment: DeviceSize,
15200    pub max_descriptor_buffer_bindings: u32,
15201    pub max_resource_descriptor_buffer_bindings: u32,
15202    pub max_sampler_descriptor_buffer_bindings: u32,
15203    pub max_embedded_immutable_sampler_bindings: u32,
15204    pub max_embedded_immutable_samplers: u32,
15205    pub buffer_capture_replay_descriptor_data_size: usize,
15206    pub image_capture_replay_descriptor_data_size: usize,
15207    pub image_view_capture_replay_descriptor_data_size: usize,
15208    pub sampler_capture_replay_descriptor_data_size: usize,
15209    pub acceleration_structure_capture_replay_descriptor_data_size: usize,
15210    pub sampler_descriptor_size: usize,
15211    pub combined_image_sampler_descriptor_size: usize,
15212    pub sampled_image_descriptor_size: usize,
15213    pub storage_image_descriptor_size: usize,
15214    pub uniform_texel_buffer_descriptor_size: usize,
15215    pub robust_uniform_texel_buffer_descriptor_size: usize,
15216    pub storage_texel_buffer_descriptor_size: usize,
15217    pub robust_storage_texel_buffer_descriptor_size: usize,
15218    pub uniform_buffer_descriptor_size: usize,
15219    pub robust_uniform_buffer_descriptor_size: usize,
15220    pub storage_buffer_descriptor_size: usize,
15221    pub robust_storage_buffer_descriptor_size: usize,
15222    pub input_attachment_descriptor_size: usize,
15223    pub acceleration_structure_descriptor_size: usize,
15224    pub max_sampler_descriptor_buffer_range: DeviceSize,
15225    pub max_resource_descriptor_buffer_range: DeviceSize,
15226    pub sampler_descriptor_buffer_address_space_size: DeviceSize,
15227    pub resource_descriptor_buffer_address_space_size: DeviceSize,
15228    pub descriptor_buffer_address_space_size: DeviceSize,
15229}
15230
15231impl Default for PhysicalDeviceDescriptorBufferPropertiesEXT {
15232    #[inline]
15233    fn default() -> Self {
15234        Self {
15235            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT,
15236            next: ptr::null_mut(),
15237            combined_image_sampler_descriptor_single_array: Bool32::default(),
15238            bufferless_push_descriptors: Bool32::default(),
15239            allow_sampler_image_view_post_submit_creation: Bool32::default(),
15240            descriptor_buffer_offset_alignment: DeviceSize::default(),
15241            max_descriptor_buffer_bindings: u32::default(),
15242            max_resource_descriptor_buffer_bindings: u32::default(),
15243            max_sampler_descriptor_buffer_bindings: u32::default(),
15244            max_embedded_immutable_sampler_bindings: u32::default(),
15245            max_embedded_immutable_samplers: u32::default(),
15246            buffer_capture_replay_descriptor_data_size: usize::default(),
15247            image_capture_replay_descriptor_data_size: usize::default(),
15248            image_view_capture_replay_descriptor_data_size: usize::default(),
15249            sampler_capture_replay_descriptor_data_size: usize::default(),
15250            acceleration_structure_capture_replay_descriptor_data_size: usize::default(),
15251            sampler_descriptor_size: usize::default(),
15252            combined_image_sampler_descriptor_size: usize::default(),
15253            sampled_image_descriptor_size: usize::default(),
15254            storage_image_descriptor_size: usize::default(),
15255            uniform_texel_buffer_descriptor_size: usize::default(),
15256            robust_uniform_texel_buffer_descriptor_size: usize::default(),
15257            storage_texel_buffer_descriptor_size: usize::default(),
15258            robust_storage_texel_buffer_descriptor_size: usize::default(),
15259            uniform_buffer_descriptor_size: usize::default(),
15260            robust_uniform_buffer_descriptor_size: usize::default(),
15261            storage_buffer_descriptor_size: usize::default(),
15262            robust_storage_buffer_descriptor_size: usize::default(),
15263            input_attachment_descriptor_size: usize::default(),
15264            acceleration_structure_descriptor_size: usize::default(),
15265            max_sampler_descriptor_buffer_range: DeviceSize::default(),
15266            max_resource_descriptor_buffer_range: DeviceSize::default(),
15267            sampler_descriptor_buffer_address_space_size: DeviceSize::default(),
15268            resource_descriptor_buffer_address_space_size: DeviceSize::default(),
15269            descriptor_buffer_address_space_size: DeviceSize::default(),
15270        }
15271    }
15272}
15273
15274unsafe impl Send for PhysicalDeviceDescriptorBufferPropertiesEXT {}
15275unsafe impl Sync for PhysicalDeviceDescriptorBufferPropertiesEXT {}
15276
15277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorFeaturesARM.html>
15278#[repr(C)]
15279#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15280pub struct PhysicalDeviceDescriptorBufferTensorFeaturesARM {
15281    pub s_type: StructureType,
15282    pub next: *mut c_void,
15283    pub descriptor_buffer_tensor_descriptors: Bool32,
15284}
15285
15286impl Default for PhysicalDeviceDescriptorBufferTensorFeaturesARM {
15287    #[inline]
15288    fn default() -> Self {
15289        Self {
15290            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM,
15291            next: ptr::null_mut(),
15292            descriptor_buffer_tensor_descriptors: Bool32::default(),
15293        }
15294    }
15295}
15296
15297unsafe impl Send for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
15298unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorFeaturesARM {}
15299
15300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorPropertiesARM.html>
15301#[repr(C)]
15302#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15303pub struct PhysicalDeviceDescriptorBufferTensorPropertiesARM {
15304    pub s_type: StructureType,
15305    pub next: *mut c_void,
15306    pub tensor_capture_replay_descriptor_data_size: usize,
15307    pub tensor_view_capture_replay_descriptor_data_size: usize,
15308    pub tensor_descriptor_size: usize,
15309}
15310
15311impl Default for PhysicalDeviceDescriptorBufferTensorPropertiesARM {
15312    #[inline]
15313    fn default() -> Self {
15314        Self {
15315            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM,
15316            next: ptr::null_mut(),
15317            tensor_capture_replay_descriptor_data_size: usize::default(),
15318            tensor_view_capture_replay_descriptor_data_size: usize::default(),
15319            tensor_descriptor_size: usize::default(),
15320        }
15321    }
15322}
15323
15324unsafe impl Send for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
15325unsafe impl Sync for PhysicalDeviceDescriptorBufferTensorPropertiesARM {}
15326
15327/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorHeapFeaturesEXT.html>
15328#[repr(C)]
15329#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15330pub struct PhysicalDeviceDescriptorHeapFeaturesEXT {
15331    pub s_type: StructureType,
15332    pub next: *mut c_void,
15333    pub descriptor_heap: Bool32,
15334    pub descriptor_heap_capture_replay: Bool32,
15335}
15336
15337impl Default for PhysicalDeviceDescriptorHeapFeaturesEXT {
15338    #[inline]
15339    fn default() -> Self {
15340        Self {
15341            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT,
15342            next: ptr::null_mut(),
15343            descriptor_heap: Bool32::default(),
15344            descriptor_heap_capture_replay: Bool32::default(),
15345        }
15346    }
15347}
15348
15349unsafe impl Send for PhysicalDeviceDescriptorHeapFeaturesEXT {}
15350unsafe impl Sync for PhysicalDeviceDescriptorHeapFeaturesEXT {}
15351
15352/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorHeapPropertiesEXT.html>
15353#[repr(C)]
15354#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15355pub struct PhysicalDeviceDescriptorHeapPropertiesEXT {
15356    pub s_type: StructureType,
15357    pub next: *mut c_void,
15358    pub sampler_heap_alignment: DeviceSize,
15359    pub resource_heap_alignment: DeviceSize,
15360    pub max_sampler_heap_size: DeviceSize,
15361    pub max_resource_heap_size: DeviceSize,
15362    pub min_sampler_heap_reserved_range: DeviceSize,
15363    pub min_sampler_heap_reserved_range_with_embedded: DeviceSize,
15364    pub min_resource_heap_reserved_range: DeviceSize,
15365    pub sampler_descriptor_size: DeviceSize,
15366    pub image_descriptor_size: DeviceSize,
15367    pub buffer_descriptor_size: DeviceSize,
15368    pub sampler_descriptor_alignment: DeviceSize,
15369    pub image_descriptor_alignment: DeviceSize,
15370    pub buffer_descriptor_alignment: DeviceSize,
15371    pub max_push_data_size: DeviceSize,
15372    pub image_capture_replay_opaque_data_size: usize,
15373    pub max_descriptor_heap_embedded_samplers: u32,
15374    pub sampler_ycbcr_conversion_count: u32,
15375    pub sparse_descriptor_heaps: Bool32,
15376    pub protected_descriptor_heaps: Bool32,
15377}
15378
15379impl Default for PhysicalDeviceDescriptorHeapPropertiesEXT {
15380    #[inline]
15381    fn default() -> Self {
15382        Self {
15383            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT,
15384            next: ptr::null_mut(),
15385            sampler_heap_alignment: DeviceSize::default(),
15386            resource_heap_alignment: DeviceSize::default(),
15387            max_sampler_heap_size: DeviceSize::default(),
15388            max_resource_heap_size: DeviceSize::default(),
15389            min_sampler_heap_reserved_range: DeviceSize::default(),
15390            min_sampler_heap_reserved_range_with_embedded: DeviceSize::default(),
15391            min_resource_heap_reserved_range: DeviceSize::default(),
15392            sampler_descriptor_size: DeviceSize::default(),
15393            image_descriptor_size: DeviceSize::default(),
15394            buffer_descriptor_size: DeviceSize::default(),
15395            sampler_descriptor_alignment: DeviceSize::default(),
15396            image_descriptor_alignment: DeviceSize::default(),
15397            buffer_descriptor_alignment: DeviceSize::default(),
15398            max_push_data_size: DeviceSize::default(),
15399            image_capture_replay_opaque_data_size: usize::default(),
15400            max_descriptor_heap_embedded_samplers: u32::default(),
15401            sampler_ycbcr_conversion_count: u32::default(),
15402            sparse_descriptor_heaps: Bool32::default(),
15403            protected_descriptor_heaps: Bool32::default(),
15404        }
15405    }
15406}
15407
15408unsafe impl Send for PhysicalDeviceDescriptorHeapPropertiesEXT {}
15409unsafe impl Sync for PhysicalDeviceDescriptorHeapPropertiesEXT {}
15410
15411/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorHeapTensorPropertiesARM.html>
15412#[repr(C)]
15413#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15414pub struct PhysicalDeviceDescriptorHeapTensorPropertiesARM {
15415    pub s_type: StructureType,
15416    pub next: *mut c_void,
15417    pub tensor_descriptor_size: DeviceSize,
15418    pub tensor_descriptor_alignment: DeviceSize,
15419    pub tensor_capture_replay_opaque_data_size: usize,
15420}
15421
15422impl Default for PhysicalDeviceDescriptorHeapTensorPropertiesARM {
15423    #[inline]
15424    fn default() -> Self {
15425        Self {
15426            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM,
15427            next: ptr::null_mut(),
15428            tensor_descriptor_size: DeviceSize::default(),
15429            tensor_descriptor_alignment: DeviceSize::default(),
15430            tensor_capture_replay_opaque_data_size: usize::default(),
15431        }
15432    }
15433}
15434
15435unsafe impl Send for PhysicalDeviceDescriptorHeapTensorPropertiesARM {}
15436unsafe impl Sync for PhysicalDeviceDescriptorHeapTensorPropertiesARM {}
15437
15438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html>
15439#[repr(C)]
15440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15441pub struct PhysicalDeviceDescriptorIndexingFeatures {
15442    pub s_type: StructureType,
15443    pub next: *mut c_void,
15444    pub shader_input_attachment_array_dynamic_indexing: Bool32,
15445    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
15446    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
15447    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
15448    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
15449    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
15450    pub shader_storage_image_array_non_uniform_indexing: Bool32,
15451    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
15452    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
15453    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
15454    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
15455    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
15456    pub descriptor_binding_storage_image_update_after_bind: Bool32,
15457    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
15458    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
15459    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
15460    pub descriptor_binding_update_unused_while_pending: Bool32,
15461    pub descriptor_binding_partially_bound: Bool32,
15462    pub descriptor_binding_variable_descriptor_count: Bool32,
15463    pub runtime_descriptor_array: Bool32,
15464}
15465
15466impl Default for PhysicalDeviceDescriptorIndexingFeatures {
15467    #[inline]
15468    fn default() -> Self {
15469        Self {
15470            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
15471            next: ptr::null_mut(),
15472            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
15473            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
15474            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
15475            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
15476            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
15477            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
15478            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
15479            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
15480            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
15481            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
15482            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
15483            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
15484            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
15485            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
15486            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
15487            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
15488            descriptor_binding_update_unused_while_pending: Bool32::default(),
15489            descriptor_binding_partially_bound: Bool32::default(),
15490            descriptor_binding_variable_descriptor_count: Bool32::default(),
15491            runtime_descriptor_array: Bool32::default(),
15492        }
15493    }
15494}
15495
15496unsafe impl Send for PhysicalDeviceDescriptorIndexingFeatures {}
15497unsafe impl Sync for PhysicalDeviceDescriptorIndexingFeatures {}
15498
15499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html>
15500#[repr(C)]
15501#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15502pub struct PhysicalDeviceDescriptorIndexingProperties {
15503    pub s_type: StructureType,
15504    pub next: *mut c_void,
15505    pub max_update_after_bind_descriptors_in_all_pools: u32,
15506    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
15507    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
15508    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
15509    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
15510    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
15511    pub robust_buffer_access_update_after_bind: Bool32,
15512    pub quad_divergent_implicit_lod: Bool32,
15513    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
15514    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
15515    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
15516    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
15517    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
15518    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
15519    pub max_per_stage_update_after_bind_resources: u32,
15520    pub max_descriptor_set_update_after_bind_samplers: u32,
15521    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
15522    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
15523    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
15524    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
15525    pub max_descriptor_set_update_after_bind_sampled_images: u32,
15526    pub max_descriptor_set_update_after_bind_storage_images: u32,
15527    pub max_descriptor_set_update_after_bind_input_attachments: u32,
15528}
15529
15530impl Default for PhysicalDeviceDescriptorIndexingProperties {
15531    #[inline]
15532    fn default() -> Self {
15533        Self {
15534            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
15535            next: ptr::null_mut(),
15536            max_update_after_bind_descriptors_in_all_pools: u32::default(),
15537            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
15538            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
15539            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
15540            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
15541            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
15542            robust_buffer_access_update_after_bind: Bool32::default(),
15543            quad_divergent_implicit_lod: Bool32::default(),
15544            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
15545            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
15546            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
15547            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
15548            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
15549            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
15550            max_per_stage_update_after_bind_resources: u32::default(),
15551            max_descriptor_set_update_after_bind_samplers: u32::default(),
15552            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
15553            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
15554            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
15555            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
15556            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
15557            max_descriptor_set_update_after_bind_storage_images: u32::default(),
15558            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
15559        }
15560    }
15561}
15562
15563unsafe impl Send for PhysicalDeviceDescriptorIndexingProperties {}
15564unsafe impl Sync for PhysicalDeviceDescriptorIndexingProperties {}
15565
15566/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html>
15567#[repr(C)]
15568#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15569pub struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
15570    pub s_type: StructureType,
15571    pub next: *mut c_void,
15572    pub descriptor_pool_overallocation: Bool32,
15573}
15574
15575impl Default for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
15576    #[inline]
15577    fn default() -> Self {
15578        Self {
15579            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV,
15580            next: ptr::null_mut(),
15581            descriptor_pool_overallocation: Bool32::default(),
15582        }
15583    }
15584}
15585
15586unsafe impl Send for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
15587unsafe impl Sync for PhysicalDeviceDescriptorPoolOverallocationFeaturesNV {}
15588
15589/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html>
15590#[repr(C)]
15591#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15592pub struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
15593    pub s_type: StructureType,
15594    pub next: *mut c_void,
15595    pub descriptor_set_host_mapping: Bool32,
15596}
15597
15598impl Default for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
15599    #[inline]
15600    fn default() -> Self {
15601        Self {
15602            s_type: StructureType::PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE,
15603            next: ptr::null_mut(),
15604            descriptor_set_host_mapping: Bool32::default(),
15605        }
15606    }
15607}
15608
15609unsafe impl Send for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
15610unsafe impl Sync for PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {}
15611
15612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html>
15613#[repr(C)]
15614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15615pub struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
15616    pub s_type: StructureType,
15617    pub next: *mut c_void,
15618    pub device_generated_compute: Bool32,
15619    pub device_generated_compute_pipelines: Bool32,
15620    pub device_generated_compute_capture_replay: Bool32,
15621}
15622
15623impl Default for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
15624    #[inline]
15625    fn default() -> Self {
15626        Self {
15627            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV,
15628            next: ptr::null_mut(),
15629            device_generated_compute: Bool32::default(),
15630            device_generated_compute_pipelines: Bool32::default(),
15631            device_generated_compute_capture_replay: Bool32::default(),
15632        }
15633    }
15634}
15635
15636unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
15637unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {}
15638
15639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html>
15640#[repr(C)]
15641#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15642pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
15643    pub s_type: StructureType,
15644    pub next: *mut c_void,
15645    pub device_generated_commands: Bool32,
15646    pub dynamic_generated_pipeline_layout: Bool32,
15647}
15648
15649impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {
15650    #[inline]
15651    fn default() -> Self {
15652        Self {
15653            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT,
15654            next: ptr::null_mut(),
15655            device_generated_commands: Bool32::default(),
15656            dynamic_generated_pipeline_layout: Bool32::default(),
15657        }
15658    }
15659}
15660
15661unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
15662unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT {}
15663
15664/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html>
15665#[repr(C)]
15666#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15667pub struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
15668    pub s_type: StructureType,
15669    pub next: *mut c_void,
15670    pub device_generated_commands: Bool32,
15671}
15672
15673impl Default for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
15674    #[inline]
15675    fn default() -> Self {
15676        Self {
15677            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
15678            next: ptr::null_mut(),
15679            device_generated_commands: Bool32::default(),
15680        }
15681    }
15682}
15683
15684unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
15685unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsFeaturesNV {}
15686
15687/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html>
15688#[repr(C)]
15689#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15690pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
15691    pub s_type: StructureType,
15692    pub next: *mut c_void,
15693    pub max_indirect_pipeline_count: u32,
15694    pub max_indirect_shader_object_count: u32,
15695    pub max_indirect_sequence_count: u32,
15696    pub max_indirect_commands_token_count: u32,
15697    pub max_indirect_commands_token_offset: u32,
15698    pub max_indirect_commands_indirect_stride: u32,
15699    pub supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT,
15700    pub supported_indirect_commands_shader_stages: ShaderStageFlags,
15701    pub supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags,
15702    pub supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags,
15703    pub device_generated_commands_transform_feedback: Bool32,
15704    pub device_generated_commands_multi_draw_indirect_count: Bool32,
15705}
15706
15707impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {
15708    #[inline]
15709    fn default() -> Self {
15710        Self {
15711            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT,
15712            next: ptr::null_mut(),
15713            max_indirect_pipeline_count: u32::default(),
15714            max_indirect_shader_object_count: u32::default(),
15715            max_indirect_sequence_count: u32::default(),
15716            max_indirect_commands_token_count: u32::default(),
15717            max_indirect_commands_token_offset: u32::default(),
15718            max_indirect_commands_indirect_stride: u32::default(),
15719            supported_indirect_commands_input_modes: IndirectCommandsInputModeFlagsEXT::default(),
15720            supported_indirect_commands_shader_stages: ShaderStageFlags::default(),
15721            supported_indirect_commands_shader_stages_pipeline_binding: ShaderStageFlags::default(),
15722            supported_indirect_commands_shader_stages_shader_binding: ShaderStageFlags::default(),
15723            device_generated_commands_transform_feedback: Bool32::default(),
15724            device_generated_commands_multi_draw_indirect_count: Bool32::default(),
15725        }
15726    }
15727}
15728
15729unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
15730unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT {}
15731
15732/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html>
15733#[repr(C)]
15734#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15735pub struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
15736    pub s_type: StructureType,
15737    pub next: *mut c_void,
15738    pub max_graphics_shader_group_count: u32,
15739    pub max_indirect_sequence_count: u32,
15740    pub max_indirect_commands_token_count: u32,
15741    pub max_indirect_commands_stream_count: u32,
15742    pub max_indirect_commands_token_offset: u32,
15743    pub max_indirect_commands_stream_stride: u32,
15744    pub min_sequences_count_buffer_offset_alignment: u32,
15745    pub min_sequences_index_buffer_offset_alignment: u32,
15746    pub min_indirect_commands_buffer_offset_alignment: u32,
15747}
15748
15749impl Default for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
15750    #[inline]
15751    fn default() -> Self {
15752        Self {
15753            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
15754            next: ptr::null_mut(),
15755            max_graphics_shader_group_count: u32::default(),
15756            max_indirect_sequence_count: u32::default(),
15757            max_indirect_commands_token_count: u32::default(),
15758            max_indirect_commands_stream_count: u32::default(),
15759            max_indirect_commands_token_offset: u32::default(),
15760            max_indirect_commands_stream_stride: u32::default(),
15761            min_sequences_count_buffer_offset_alignment: u32::default(),
15762            min_sequences_index_buffer_offset_alignment: u32::default(),
15763            min_indirect_commands_buffer_offset_alignment: u32::default(),
15764        }
15765    }
15766}
15767
15768unsafe impl Send for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
15769unsafe impl Sync for PhysicalDeviceDeviceGeneratedCommandsPropertiesNV {}
15770
15771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html>
15772#[repr(C)]
15773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15774pub struct PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15775    pub s_type: StructureType,
15776    pub next: *mut c_void,
15777    pub device_memory_report: Bool32,
15778}
15779
15780impl Default for PhysicalDeviceDeviceMemoryReportFeaturesEXT {
15781    #[inline]
15782    fn default() -> Self {
15783        Self {
15784            s_type: StructureType::PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
15785            next: ptr::null_mut(),
15786            device_memory_report: Bool32::default(),
15787        }
15788    }
15789}
15790
15791unsafe impl Send for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15792unsafe impl Sync for PhysicalDeviceDeviceMemoryReportFeaturesEXT {}
15793
15794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html>
15795#[repr(C)]
15796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15797pub struct PhysicalDeviceDiagnosticsConfigFeaturesNV {
15798    pub s_type: StructureType,
15799    pub next: *mut c_void,
15800    pub diagnostics_config: Bool32,
15801}
15802
15803impl Default for PhysicalDeviceDiagnosticsConfigFeaturesNV {
15804    #[inline]
15805    fn default() -> Self {
15806        Self {
15807            s_type: StructureType::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
15808            next: ptr::null_mut(),
15809            diagnostics_config: Bool32::default(),
15810        }
15811    }
15812}
15813
15814unsafe impl Send for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15815unsafe impl Sync for PhysicalDeviceDiagnosticsConfigFeaturesNV {}
15816
15817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html>
15818#[repr(C)]
15819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15820pub struct PhysicalDeviceDiscardRectanglePropertiesEXT {
15821    pub s_type: StructureType,
15822    pub next: *mut c_void,
15823    pub max_discard_rectangles: u32,
15824}
15825
15826impl Default for PhysicalDeviceDiscardRectanglePropertiesEXT {
15827    #[inline]
15828    fn default() -> Self {
15829        Self {
15830            s_type: StructureType::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
15831            next: ptr::null_mut(),
15832            max_discard_rectangles: u32::default(),
15833        }
15834    }
15835}
15836
15837unsafe impl Send for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15838unsafe impl Sync for PhysicalDeviceDiscardRectanglePropertiesEXT {}
15839
15840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html>
15841#[repr(C)]
15842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15843pub struct PhysicalDeviceDisplacementMicromapFeaturesNV {
15844    pub s_type: StructureType,
15845    pub next: *mut c_void,
15846    pub displacement_micromap: Bool32,
15847}
15848
15849impl Default for PhysicalDeviceDisplacementMicromapFeaturesNV {
15850    #[inline]
15851    fn default() -> Self {
15852        Self {
15853            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV,
15854            next: ptr::null_mut(),
15855            displacement_micromap: Bool32::default(),
15856        }
15857    }
15858}
15859
15860unsafe impl Send for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15861unsafe impl Sync for PhysicalDeviceDisplacementMicromapFeaturesNV {}
15862
15863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html>
15864#[repr(C)]
15865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15866pub struct PhysicalDeviceDisplacementMicromapPropertiesNV {
15867    pub s_type: StructureType,
15868    pub next: *mut c_void,
15869    pub max_displacement_micromap_subdivision_level: u32,
15870}
15871
15872impl Default for PhysicalDeviceDisplacementMicromapPropertiesNV {
15873    #[inline]
15874    fn default() -> Self {
15875        Self {
15876            s_type: StructureType::PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV,
15877            next: ptr::null_mut(),
15878            max_displacement_micromap_subdivision_level: u32::default(),
15879        }
15880    }
15881}
15882
15883unsafe impl Send for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15884unsafe impl Sync for PhysicalDeviceDisplacementMicromapPropertiesNV {}
15885
15886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html>
15887#[repr(C)]
15888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15889pub struct PhysicalDeviceDriverProperties {
15890    pub s_type: StructureType,
15891    pub next: *mut c_void,
15892    pub driver_id: DriverId,
15893    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
15894    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
15895    pub conformance_version: ConformanceVersion,
15896}
15897
15898impl Default for PhysicalDeviceDriverProperties {
15899    #[inline]
15900    fn default() -> Self {
15901        Self {
15902            s_type: StructureType::PHYSICAL_DEVICE_DRIVER_PROPERTIES,
15903            next: ptr::null_mut(),
15904            driver_id: DriverId::default(),
15905            driver_name: StringArray::default(),
15906            driver_info: StringArray::default(),
15907            conformance_version: ConformanceVersion::default(),
15908        }
15909    }
15910}
15911
15912unsafe impl Send for PhysicalDeviceDriverProperties {}
15913unsafe impl Sync for PhysicalDeviceDriverProperties {}
15914
15915/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html>
15916#[repr(C)]
15917#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15918pub struct PhysicalDeviceDrmPropertiesEXT {
15919    pub s_type: StructureType,
15920    pub next: *mut c_void,
15921    pub has_primary: Bool32,
15922    pub has_render: Bool32,
15923    pub primary_major: i64,
15924    pub primary_minor: i64,
15925    pub render_major: i64,
15926    pub render_minor: i64,
15927}
15928
15929impl Default for PhysicalDeviceDrmPropertiesEXT {
15930    #[inline]
15931    fn default() -> Self {
15932        Self {
15933            s_type: StructureType::PHYSICAL_DEVICE_DRM_PROPERTIES_EXT,
15934            next: ptr::null_mut(),
15935            has_primary: Bool32::default(),
15936            has_render: Bool32::default(),
15937            primary_major: i64::default(),
15938            primary_minor: i64::default(),
15939            render_major: i64::default(),
15940            render_minor: i64::default(),
15941        }
15942    }
15943}
15944
15945unsafe impl Send for PhysicalDeviceDrmPropertiesEXT {}
15946unsafe impl Sync for PhysicalDeviceDrmPropertiesEXT {}
15947
15948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html>
15949#[repr(C)]
15950#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15951pub struct PhysicalDeviceDynamicRenderingFeatures {
15952    pub s_type: StructureType,
15953    pub next: *mut c_void,
15954    pub dynamic_rendering: Bool32,
15955}
15956
15957impl Default for PhysicalDeviceDynamicRenderingFeatures {
15958    #[inline]
15959    fn default() -> Self {
15960        Self {
15961            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
15962            next: ptr::null_mut(),
15963            dynamic_rendering: Bool32::default(),
15964        }
15965    }
15966}
15967
15968unsafe impl Send for PhysicalDeviceDynamicRenderingFeatures {}
15969unsafe impl Sync for PhysicalDeviceDynamicRenderingFeatures {}
15970
15971/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html>
15972#[repr(C)]
15973#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15974pub struct PhysicalDeviceDynamicRenderingLocalReadFeatures {
15975    pub s_type: StructureType,
15976    pub next: *mut c_void,
15977    pub dynamic_rendering_local_read: Bool32,
15978}
15979
15980impl Default for PhysicalDeviceDynamicRenderingLocalReadFeatures {
15981    #[inline]
15982    fn default() -> Self {
15983        Self {
15984            s_type: StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES,
15985            next: ptr::null_mut(),
15986            dynamic_rendering_local_read: Bool32::default(),
15987        }
15988    }
15989}
15990
15991unsafe impl Send for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15992unsafe impl Sync for PhysicalDeviceDynamicRenderingLocalReadFeatures {}
15993
15994/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html>
15995#[repr(C)]
15996#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
15997pub struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
15998    pub s_type: StructureType,
15999    pub next: *mut c_void,
16000    pub dynamic_rendering_unused_attachments: Bool32,
16001}
16002
16003impl Default for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
16004    #[inline]
16005    fn default() -> Self {
16006        Self {
16007            s_type:
16008                StructureType::PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT,
16009            next: ptr::null_mut(),
16010            dynamic_rendering_unused_attachments: Bool32::default(),
16011        }
16012    }
16013}
16014
16015unsafe impl Send for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
16016unsafe impl Sync for PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {}
16017
16018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html>
16019#[repr(C)]
16020#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16021pub struct PhysicalDeviceExclusiveScissorFeaturesNV {
16022    pub s_type: StructureType,
16023    pub next: *mut c_void,
16024    pub exclusive_scissor: Bool32,
16025}
16026
16027impl Default for PhysicalDeviceExclusiveScissorFeaturesNV {
16028    #[inline]
16029    fn default() -> Self {
16030        Self {
16031            s_type: StructureType::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
16032            next: ptr::null_mut(),
16033            exclusive_scissor: Bool32::default(),
16034        }
16035    }
16036}
16037
16038unsafe impl Send for PhysicalDeviceExclusiveScissorFeaturesNV {}
16039unsafe impl Sync for PhysicalDeviceExclusiveScissorFeaturesNV {}
16040
16041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html>
16042#[repr(C)]
16043#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16044pub struct PhysicalDeviceExtendedDynamicState2FeaturesEXT {
16045    pub s_type: StructureType,
16046    pub next: *mut c_void,
16047    pub extended_dynamic_state2: Bool32,
16048    pub extended_dynamic_state2_logic_op: Bool32,
16049    pub extended_dynamic_state2_patch_control_points: Bool32,
16050}
16051
16052impl Default for PhysicalDeviceExtendedDynamicState2FeaturesEXT {
16053    #[inline]
16054    fn default() -> Self {
16055        Self {
16056            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
16057            next: ptr::null_mut(),
16058            extended_dynamic_state2: Bool32::default(),
16059            extended_dynamic_state2_logic_op: Bool32::default(),
16060            extended_dynamic_state2_patch_control_points: Bool32::default(),
16061        }
16062    }
16063}
16064
16065unsafe impl Send for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
16066unsafe impl Sync for PhysicalDeviceExtendedDynamicState2FeaturesEXT {}
16067
16068/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html>
16069#[repr(C)]
16070#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16071pub struct PhysicalDeviceExtendedDynamicState3FeaturesEXT {
16072    pub s_type: StructureType,
16073    pub next: *mut c_void,
16074    pub extended_dynamic_state3_tessellation_domain_origin: Bool32,
16075    pub extended_dynamic_state_3depth_clamp_enable: Bool32,
16076    pub extended_dynamic_state3_polygon_mode: Bool32,
16077    pub extended_dynamic_state3_rasterization_samples: Bool32,
16078    pub extended_dynamic_state3_sample_mask: Bool32,
16079    pub extended_dynamic_state3_alpha_to_coverage_enable: Bool32,
16080    pub extended_dynamic_state3_alpha_to_one_enable: Bool32,
16081    pub extended_dynamic_state3_logic_op_enable: Bool32,
16082    pub extended_dynamic_state3_color_blend_enable: Bool32,
16083    pub extended_dynamic_state3_color_blend_equation: Bool32,
16084    pub extended_dynamic_state3_color_write_mask: Bool32,
16085    pub extended_dynamic_state3_rasterization_stream: Bool32,
16086    pub extended_dynamic_state3_conservative_rasterization_mode: Bool32,
16087    pub extended_dynamic_state3_extra_primitive_overestimation_size: Bool32,
16088    pub extended_dynamic_state_3depth_clip_enable: Bool32,
16089    pub extended_dynamic_state3_sample_locations_enable: Bool32,
16090    pub extended_dynamic_state3_color_blend_advanced: Bool32,
16091    pub extended_dynamic_state3_provoking_vertex_mode: Bool32,
16092    pub extended_dynamic_state3_line_rasterization_mode: Bool32,
16093    pub extended_dynamic_state3_line_stipple_enable: Bool32,
16094    pub extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32,
16095    pub extended_dynamic_state3_viewport_w_scaling_enable: Bool32,
16096    pub extended_dynamic_state3_viewport_swizzle: Bool32,
16097    pub extended_dynamic_state3_coverage_to_color_enable: Bool32,
16098    pub extended_dynamic_state3_coverage_to_color_location: Bool32,
16099    pub extended_dynamic_state3_coverage_modulation_mode: Bool32,
16100    pub extended_dynamic_state3_coverage_modulation_table_enable: Bool32,
16101    pub extended_dynamic_state3_coverage_modulation_table: Bool32,
16102    pub extended_dynamic_state3_coverage_reduction_mode: Bool32,
16103    pub extended_dynamic_state3_representative_fragment_test_enable: Bool32,
16104    pub extended_dynamic_state3_shading_rate_image_enable: Bool32,
16105}
16106
16107impl Default for PhysicalDeviceExtendedDynamicState3FeaturesEXT {
16108    #[inline]
16109    fn default() -> Self {
16110        Self {
16111            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT,
16112            next: ptr::null_mut(),
16113            extended_dynamic_state3_tessellation_domain_origin: Bool32::default(),
16114            extended_dynamic_state_3depth_clamp_enable: Bool32::default(),
16115            extended_dynamic_state3_polygon_mode: Bool32::default(),
16116            extended_dynamic_state3_rasterization_samples: Bool32::default(),
16117            extended_dynamic_state3_sample_mask: Bool32::default(),
16118            extended_dynamic_state3_alpha_to_coverage_enable: Bool32::default(),
16119            extended_dynamic_state3_alpha_to_one_enable: Bool32::default(),
16120            extended_dynamic_state3_logic_op_enable: Bool32::default(),
16121            extended_dynamic_state3_color_blend_enable: Bool32::default(),
16122            extended_dynamic_state3_color_blend_equation: Bool32::default(),
16123            extended_dynamic_state3_color_write_mask: Bool32::default(),
16124            extended_dynamic_state3_rasterization_stream: Bool32::default(),
16125            extended_dynamic_state3_conservative_rasterization_mode: Bool32::default(),
16126            extended_dynamic_state3_extra_primitive_overestimation_size: Bool32::default(),
16127            extended_dynamic_state_3depth_clip_enable: Bool32::default(),
16128            extended_dynamic_state3_sample_locations_enable: Bool32::default(),
16129            extended_dynamic_state3_color_blend_advanced: Bool32::default(),
16130            extended_dynamic_state3_provoking_vertex_mode: Bool32::default(),
16131            extended_dynamic_state3_line_rasterization_mode: Bool32::default(),
16132            extended_dynamic_state3_line_stipple_enable: Bool32::default(),
16133            extended_dynamic_state_3depth_clip_negative_one_to_one: Bool32::default(),
16134            extended_dynamic_state3_viewport_w_scaling_enable: Bool32::default(),
16135            extended_dynamic_state3_viewport_swizzle: Bool32::default(),
16136            extended_dynamic_state3_coverage_to_color_enable: Bool32::default(),
16137            extended_dynamic_state3_coverage_to_color_location: Bool32::default(),
16138            extended_dynamic_state3_coverage_modulation_mode: Bool32::default(),
16139            extended_dynamic_state3_coverage_modulation_table_enable: Bool32::default(),
16140            extended_dynamic_state3_coverage_modulation_table: Bool32::default(),
16141            extended_dynamic_state3_coverage_reduction_mode: Bool32::default(),
16142            extended_dynamic_state3_representative_fragment_test_enable: Bool32::default(),
16143            extended_dynamic_state3_shading_rate_image_enable: Bool32::default(),
16144        }
16145    }
16146}
16147
16148unsafe impl Send for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
16149unsafe impl Sync for PhysicalDeviceExtendedDynamicState3FeaturesEXT {}
16150
16151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html>
16152#[repr(C)]
16153#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16154pub struct PhysicalDeviceExtendedDynamicState3PropertiesEXT {
16155    pub s_type: StructureType,
16156    pub next: *mut c_void,
16157    pub dynamic_primitive_topology_unrestricted: Bool32,
16158}
16159
16160impl Default for PhysicalDeviceExtendedDynamicState3PropertiesEXT {
16161    #[inline]
16162    fn default() -> Self {
16163        Self {
16164            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT,
16165            next: ptr::null_mut(),
16166            dynamic_primitive_topology_unrestricted: Bool32::default(),
16167        }
16168    }
16169}
16170
16171unsafe impl Send for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
16172unsafe impl Sync for PhysicalDeviceExtendedDynamicState3PropertiesEXT {}
16173
16174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html>
16175#[repr(C)]
16176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16177pub struct PhysicalDeviceExtendedDynamicStateFeaturesEXT {
16178    pub s_type: StructureType,
16179    pub next: *mut c_void,
16180    pub extended_dynamic_state: Bool32,
16181}
16182
16183impl Default for PhysicalDeviceExtendedDynamicStateFeaturesEXT {
16184    #[inline]
16185    fn default() -> Self {
16186        Self {
16187            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
16188            next: ptr::null_mut(),
16189            extended_dynamic_state: Bool32::default(),
16190        }
16191    }
16192}
16193
16194unsafe impl Send for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
16195unsafe impl Sync for PhysicalDeviceExtendedDynamicStateFeaturesEXT {}
16196
16197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html>
16198#[repr(C)]
16199#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16200pub struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
16201    pub s_type: StructureType,
16202    pub next: *mut c_void,
16203    pub extended_sparse_address_space: Bool32,
16204}
16205
16206impl Default for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
16207    #[inline]
16208    fn default() -> Self {
16209        Self {
16210            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV,
16211            next: ptr::null_mut(),
16212            extended_sparse_address_space: Bool32::default(),
16213        }
16214    }
16215}
16216
16217unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
16218unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {}
16219
16220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html>
16221#[repr(C)]
16222#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16223pub struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
16224    pub s_type: StructureType,
16225    pub next: *mut c_void,
16226    pub extended_sparse_address_space_size: DeviceSize,
16227    pub extended_sparse_image_usage_flags: ImageUsageFlags,
16228    pub extended_sparse_buffer_usage_flags: BufferUsageFlags,
16229}
16230
16231impl Default for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
16232    #[inline]
16233    fn default() -> Self {
16234        Self {
16235            s_type: StructureType::PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
16236            next: ptr::null_mut(),
16237            extended_sparse_address_space_size: DeviceSize::default(),
16238            extended_sparse_image_usage_flags: ImageUsageFlags::default(),
16239            extended_sparse_buffer_usage_flags: BufferUsageFlags::default(),
16240        }
16241    }
16242}
16243
16244unsafe impl Send for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
16245unsafe impl Sync for PhysicalDeviceExtendedSparseAddressSpacePropertiesNV {}
16246
16247/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html>
16248#[repr(C)]
16249#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16250pub struct PhysicalDeviceExternalBufferInfo {
16251    pub s_type: StructureType,
16252    pub next: *const c_void,
16253    pub flags: BufferCreateFlags,
16254    pub usage: BufferUsageFlags,
16255    pub handle_type: ExternalMemoryHandleTypeFlags,
16256}
16257
16258impl Default for PhysicalDeviceExternalBufferInfo {
16259    #[inline]
16260    fn default() -> Self {
16261        Self {
16262            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
16263            next: ptr::null(),
16264            flags: BufferCreateFlags::default(),
16265            usage: BufferUsageFlags::default(),
16266            handle_type: ExternalMemoryHandleTypeFlags::default(),
16267        }
16268    }
16269}
16270
16271unsafe impl Send for PhysicalDeviceExternalBufferInfo {}
16272unsafe impl Sync for PhysicalDeviceExternalBufferInfo {}
16273
16274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalComputeQueuePropertiesNV.html>
16275#[repr(C)]
16276#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16277pub struct PhysicalDeviceExternalComputeQueuePropertiesNV {
16278    pub s_type: StructureType,
16279    pub next: *mut c_void,
16280    pub external_data_size: u32,
16281    pub max_external_queues: u32,
16282}
16283
16284impl Default for PhysicalDeviceExternalComputeQueuePropertiesNV {
16285    #[inline]
16286    fn default() -> Self {
16287        Self {
16288            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV,
16289            next: ptr::null_mut(),
16290            external_data_size: u32::default(),
16291            max_external_queues: u32::default(),
16292        }
16293    }
16294}
16295
16296unsafe impl Send for PhysicalDeviceExternalComputeQueuePropertiesNV {}
16297unsafe impl Sync for PhysicalDeviceExternalComputeQueuePropertiesNV {}
16298
16299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html>
16300#[repr(C)]
16301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16302pub struct PhysicalDeviceExternalFenceInfo {
16303    pub s_type: StructureType,
16304    pub next: *const c_void,
16305    pub handle_type: ExternalFenceHandleTypeFlags,
16306}
16307
16308impl Default for PhysicalDeviceExternalFenceInfo {
16309    #[inline]
16310    fn default() -> Self {
16311        Self {
16312            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
16313            next: ptr::null(),
16314            handle_type: ExternalFenceHandleTypeFlags::default(),
16315        }
16316    }
16317}
16318
16319unsafe impl Send for PhysicalDeviceExternalFenceInfo {}
16320unsafe impl Sync for PhysicalDeviceExternalFenceInfo {}
16321
16322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html>
16323#[repr(C)]
16324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16325pub struct PhysicalDeviceExternalFormatResolveFeaturesANDROID {
16326    pub s_type: StructureType,
16327    pub next: *mut c_void,
16328    pub external_format_resolve: Bool32,
16329}
16330
16331impl Default for PhysicalDeviceExternalFormatResolveFeaturesANDROID {
16332    #[inline]
16333    fn default() -> Self {
16334        Self {
16335            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID,
16336            next: ptr::null_mut(),
16337            external_format_resolve: Bool32::default(),
16338        }
16339    }
16340}
16341
16342unsafe impl Send for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
16343unsafe impl Sync for PhysicalDeviceExternalFormatResolveFeaturesANDROID {}
16344
16345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html>
16346#[repr(C)]
16347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16348pub struct PhysicalDeviceExternalFormatResolvePropertiesANDROID {
16349    pub s_type: StructureType,
16350    pub next: *mut c_void,
16351    pub null_color_attachment_with_external_format_resolve: Bool32,
16352    pub external_format_resolve_chroma_offset_x: ChromaLocation,
16353    pub external_format_resolve_chroma_offset_y: ChromaLocation,
16354}
16355
16356impl Default for PhysicalDeviceExternalFormatResolvePropertiesANDROID {
16357    #[inline]
16358    fn default() -> Self {
16359        Self {
16360            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID,
16361            next: ptr::null_mut(),
16362            null_color_attachment_with_external_format_resolve: Bool32::default(),
16363            external_format_resolve_chroma_offset_x: ChromaLocation::default(),
16364            external_format_resolve_chroma_offset_y: ChromaLocation::default(),
16365        }
16366    }
16367}
16368
16369unsafe impl Send for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
16370unsafe impl Sync for PhysicalDeviceExternalFormatResolvePropertiesANDROID {}
16371
16372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html>
16373#[repr(C)]
16374#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16375pub struct PhysicalDeviceExternalImageFormatInfo {
16376    pub s_type: StructureType,
16377    pub next: *const c_void,
16378    pub handle_type: ExternalMemoryHandleTypeFlags,
16379}
16380
16381impl Default for PhysicalDeviceExternalImageFormatInfo {
16382    #[inline]
16383    fn default() -> Self {
16384        Self {
16385            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
16386            next: ptr::null(),
16387            handle_type: ExternalMemoryHandleTypeFlags::default(),
16388        }
16389    }
16390}
16391
16392unsafe impl Send for PhysicalDeviceExternalImageFormatInfo {}
16393unsafe impl Sync for PhysicalDeviceExternalImageFormatInfo {}
16394
16395/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html>
16396#[repr(C)]
16397#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16398pub struct PhysicalDeviceExternalMemoryHostPropertiesEXT {
16399    pub s_type: StructureType,
16400    pub next: *mut c_void,
16401    pub min_imported_host_pointer_alignment: DeviceSize,
16402}
16403
16404impl Default for PhysicalDeviceExternalMemoryHostPropertiesEXT {
16405    #[inline]
16406    fn default() -> Self {
16407        Self {
16408            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
16409            next: ptr::null_mut(),
16410            min_imported_host_pointer_alignment: DeviceSize::default(),
16411        }
16412    }
16413}
16414
16415unsafe impl Send for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
16416unsafe impl Sync for PhysicalDeviceExternalMemoryHostPropertiesEXT {}
16417
16418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html>
16419#[repr(C)]
16420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16421pub struct PhysicalDeviceExternalMemoryRDMAFeaturesNV {
16422    pub s_type: StructureType,
16423    pub next: *mut c_void,
16424    pub external_memory_rdma: Bool32,
16425}
16426
16427impl Default for PhysicalDeviceExternalMemoryRDMAFeaturesNV {
16428    #[inline]
16429    fn default() -> Self {
16430        Self {
16431            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,
16432            next: ptr::null_mut(),
16433            external_memory_rdma: Bool32::default(),
16434        }
16435    }
16436}
16437
16438unsafe impl Send for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
16439unsafe impl Sync for PhysicalDeviceExternalMemoryRDMAFeaturesNV {}
16440
16441/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.html>
16442#[repr(C)]
16443#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16444pub struct PhysicalDeviceExternalMemorySciBufFeaturesNV {
16445    pub s_type: StructureType,
16446    pub next: *mut c_void,
16447    pub sci_buf_import: Bool32,
16448    pub sci_buf_export: Bool32,
16449}
16450
16451impl Default for PhysicalDeviceExternalMemorySciBufFeaturesNV {
16452    #[inline]
16453    fn default() -> Self {
16454        Self {
16455            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV,
16456            next: ptr::null_mut(),
16457            sci_buf_import: Bool32::default(),
16458            sci_buf_export: Bool32::default(),
16459        }
16460    }
16461}
16462
16463unsafe impl Send for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
16464unsafe impl Sync for PhysicalDeviceExternalMemorySciBufFeaturesNV {}
16465
16466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html>
16467#[repr(C)]
16468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16469pub struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
16470    pub s_type: StructureType,
16471    pub next: *mut c_void,
16472    pub screen_buffer_import: Bool32,
16473}
16474
16475impl Default for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
16476    #[inline]
16477    fn default() -> Self {
16478        Self {
16479            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX,
16480            next: ptr::null_mut(),
16481            screen_buffer_import: Bool32::default(),
16482        }
16483    }
16484}
16485
16486unsafe impl Send for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
16487unsafe impl Sync for PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {}
16488
16489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSync2FeaturesNV.html>
16490#[repr(C)]
16491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16492pub struct PhysicalDeviceExternalSciSync2FeaturesNV {
16493    pub s_type: StructureType,
16494    pub next: *mut c_void,
16495    pub sci_sync_fence: Bool32,
16496    pub sci_sync_semaphore2: Bool32,
16497    pub sci_sync_import: Bool32,
16498    pub sci_sync_export: Bool32,
16499}
16500
16501impl Default for PhysicalDeviceExternalSciSync2FeaturesNV {
16502    #[inline]
16503    fn default() -> Self {
16504        Self {
16505            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV,
16506            next: ptr::null_mut(),
16507            sci_sync_fence: Bool32::default(),
16508            sci_sync_semaphore2: Bool32::default(),
16509            sci_sync_import: Bool32::default(),
16510            sci_sync_export: Bool32::default(),
16511        }
16512    }
16513}
16514
16515unsafe impl Send for PhysicalDeviceExternalSciSync2FeaturesNV {}
16516unsafe impl Sync for PhysicalDeviceExternalSciSync2FeaturesNV {}
16517
16518/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciSyncFeaturesNV.html>
16519#[repr(C)]
16520#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16521pub struct PhysicalDeviceExternalSciSyncFeaturesNV {
16522    pub s_type: StructureType,
16523    pub next: *mut c_void,
16524    pub sci_sync_fence: Bool32,
16525    pub sci_sync_semaphore: Bool32,
16526    pub sci_sync_import: Bool32,
16527    pub sci_sync_export: Bool32,
16528}
16529
16530impl Default for PhysicalDeviceExternalSciSyncFeaturesNV {
16531    #[inline]
16532    fn default() -> Self {
16533        Self {
16534            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV,
16535            next: ptr::null_mut(),
16536            sci_sync_fence: Bool32::default(),
16537            sci_sync_semaphore: Bool32::default(),
16538            sci_sync_import: Bool32::default(),
16539            sci_sync_export: Bool32::default(),
16540        }
16541    }
16542}
16543
16544unsafe impl Send for PhysicalDeviceExternalSciSyncFeaturesNV {}
16545unsafe impl Sync for PhysicalDeviceExternalSciSyncFeaturesNV {}
16546
16547/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html>
16548#[repr(C)]
16549#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16550pub struct PhysicalDeviceExternalSemaphoreInfo {
16551    pub s_type: StructureType,
16552    pub next: *const c_void,
16553    pub handle_type: ExternalSemaphoreHandleTypeFlags,
16554}
16555
16556impl Default for PhysicalDeviceExternalSemaphoreInfo {
16557    #[inline]
16558    fn default() -> Self {
16559        Self {
16560            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
16561            next: ptr::null(),
16562            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
16563        }
16564    }
16565}
16566
16567unsafe impl Send for PhysicalDeviceExternalSemaphoreInfo {}
16568unsafe impl Sync for PhysicalDeviceExternalSemaphoreInfo {}
16569
16570/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalTensorInfoARM.html>
16571#[repr(C)]
16572#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16573pub struct PhysicalDeviceExternalTensorInfoARM {
16574    pub s_type: StructureType,
16575    pub next: *const c_void,
16576    pub flags: TensorCreateFlagsARM,
16577    pub description: *const TensorDescriptionARM,
16578    pub handle_type: ExternalMemoryHandleTypeFlags,
16579}
16580
16581impl Default for PhysicalDeviceExternalTensorInfoARM {
16582    #[inline]
16583    fn default() -> Self {
16584        Self {
16585            s_type: StructureType::PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM,
16586            next: ptr::null(),
16587            flags: TensorCreateFlagsARM::default(),
16588            description: ptr::null(),
16589            handle_type: ExternalMemoryHandleTypeFlags::default(),
16590        }
16591    }
16592}
16593
16594unsafe impl Send for PhysicalDeviceExternalTensorInfoARM {}
16595unsafe impl Sync for PhysicalDeviceExternalTensorInfoARM {}
16596
16597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html>
16598#[repr(C)]
16599#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16600pub struct PhysicalDeviceFaultFeaturesEXT {
16601    pub s_type: StructureType,
16602    pub next: *mut c_void,
16603    pub device_fault: Bool32,
16604    pub device_fault_vendor_binary: Bool32,
16605}
16606
16607impl Default for PhysicalDeviceFaultFeaturesEXT {
16608    #[inline]
16609    fn default() -> Self {
16610        Self {
16611            s_type: StructureType::PHYSICAL_DEVICE_FAULT_FEATURES_EXT,
16612            next: ptr::null_mut(),
16613            device_fault: Bool32::default(),
16614            device_fault_vendor_binary: Bool32::default(),
16615        }
16616    }
16617}
16618
16619unsafe impl Send for PhysicalDeviceFaultFeaturesEXT {}
16620unsafe impl Sync for PhysicalDeviceFaultFeaturesEXT {}
16621
16622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html>
16623#[repr(C)]
16624#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
16625pub struct PhysicalDeviceFeatures {
16626    pub robust_buffer_access: Bool32,
16627    pub full_draw_index_uint32: Bool32,
16628    pub image_cube_array: Bool32,
16629    pub independent_blend: Bool32,
16630    pub geometry_shader: Bool32,
16631    pub tessellation_shader: Bool32,
16632    pub sample_rate_shading: Bool32,
16633    pub dual_src_blend: Bool32,
16634    pub logic_op: Bool32,
16635    pub multi_draw_indirect: Bool32,
16636    pub draw_indirect_first_instance: Bool32,
16637    pub depth_clamp: Bool32,
16638    pub depth_bias_clamp: Bool32,
16639    pub fill_mode_non_solid: Bool32,
16640    pub depth_bounds: Bool32,
16641    pub wide_lines: Bool32,
16642    pub large_points: Bool32,
16643    pub alpha_to_one: Bool32,
16644    pub multi_viewport: Bool32,
16645    pub sampler_anisotropy: Bool32,
16646    pub texture_compression_etc2: Bool32,
16647    pub texture_compression_astc_ldr: Bool32,
16648    pub texture_compression_bc: Bool32,
16649    pub occlusion_query_precise: Bool32,
16650    pub pipeline_statistics_query: Bool32,
16651    pub vertex_pipeline_stores_and_atomics: Bool32,
16652    pub fragment_stores_and_atomics: Bool32,
16653    pub shader_tessellation_and_geometry_point_size: Bool32,
16654    pub shader_image_gather_extended: Bool32,
16655    pub shader_storage_image_extended_formats: Bool32,
16656    pub shader_storage_image_multisample: Bool32,
16657    pub shader_storage_image_read_without_format: Bool32,
16658    pub shader_storage_image_write_without_format: Bool32,
16659    pub shader_uniform_buffer_array_dynamic_indexing: Bool32,
16660    pub shader_sampled_image_array_dynamic_indexing: Bool32,
16661    pub shader_storage_buffer_array_dynamic_indexing: Bool32,
16662    pub shader_storage_image_array_dynamic_indexing: Bool32,
16663    pub shader_clip_distance: Bool32,
16664    pub shader_cull_distance: Bool32,
16665    pub shader_float64: Bool32,
16666    pub shader_int64: Bool32,
16667    pub shader_int16: Bool32,
16668    pub shader_resource_residency: Bool32,
16669    pub shader_resource_min_lod: Bool32,
16670    pub sparse_binding: Bool32,
16671    pub sparse_residency_buffer: Bool32,
16672    pub sparse_residency_image_2d: Bool32,
16673    pub sparse_residency_image_3d: Bool32,
16674    pub sparse_residency2_samples: Bool32,
16675    pub sparse_residency4_samples: Bool32,
16676    pub sparse_residency8_samples: Bool32,
16677    pub sparse_residency16_samples: Bool32,
16678    pub sparse_residency_aliased: Bool32,
16679    pub variable_multisample_rate: Bool32,
16680    pub inherited_queries: Bool32,
16681}
16682
16683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html>
16684#[repr(C)]
16685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16686pub struct PhysicalDeviceFeatures2 {
16687    pub s_type: StructureType,
16688    pub next: *mut c_void,
16689    pub features: PhysicalDeviceFeatures,
16690}
16691
16692impl Default for PhysicalDeviceFeatures2 {
16693    #[inline]
16694    fn default() -> Self {
16695        Self {
16696            s_type: StructureType::PHYSICAL_DEVICE_FEATURES_2,
16697            next: ptr::null_mut(),
16698            features: PhysicalDeviceFeatures::default(),
16699        }
16700    }
16701}
16702
16703unsafe impl Send for PhysicalDeviceFeatures2 {}
16704unsafe impl Sync for PhysicalDeviceFeatures2 {}
16705
16706/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html>
16707#[repr(C)]
16708#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16709pub struct PhysicalDeviceFloatControlsProperties {
16710    pub s_type: StructureType,
16711    pub next: *mut c_void,
16712    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
16713    pub rounding_mode_independence: ShaderFloatControlsIndependence,
16714    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
16715    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
16716    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
16717    pub shader_denorm_preserve_float16: Bool32,
16718    pub shader_denorm_preserve_float32: Bool32,
16719    pub shader_denorm_preserve_float64: Bool32,
16720    pub shader_denorm_flush_to_zero_float16: Bool32,
16721    pub shader_denorm_flush_to_zero_float32: Bool32,
16722    pub shader_denorm_flush_to_zero_float64: Bool32,
16723    pub shader_rounding_mode_rte_float16: Bool32,
16724    pub shader_rounding_mode_rte_float32: Bool32,
16725    pub shader_rounding_mode_rte_float64: Bool32,
16726    pub shader_rounding_mode_rtz_float16: Bool32,
16727    pub shader_rounding_mode_rtz_float32: Bool32,
16728    pub shader_rounding_mode_rtz_float64: Bool32,
16729}
16730
16731impl Default for PhysicalDeviceFloatControlsProperties {
16732    #[inline]
16733    fn default() -> Self {
16734        Self {
16735            s_type: StructureType::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
16736            next: ptr::null_mut(),
16737            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
16738            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
16739            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
16740            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
16741            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
16742            shader_denorm_preserve_float16: Bool32::default(),
16743            shader_denorm_preserve_float32: Bool32::default(),
16744            shader_denorm_preserve_float64: Bool32::default(),
16745            shader_denorm_flush_to_zero_float16: Bool32::default(),
16746            shader_denorm_flush_to_zero_float32: Bool32::default(),
16747            shader_denorm_flush_to_zero_float64: Bool32::default(),
16748            shader_rounding_mode_rte_float16: Bool32::default(),
16749            shader_rounding_mode_rte_float32: Bool32::default(),
16750            shader_rounding_mode_rte_float64: Bool32::default(),
16751            shader_rounding_mode_rtz_float16: Bool32::default(),
16752            shader_rounding_mode_rtz_float32: Bool32::default(),
16753            shader_rounding_mode_rtz_float64: Bool32::default(),
16754        }
16755    }
16756}
16757
16758unsafe impl Send for PhysicalDeviceFloatControlsProperties {}
16759unsafe impl Sync for PhysicalDeviceFloatControlsProperties {}
16760
16761/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFormatPackFeaturesARM.html>
16762#[repr(C)]
16763#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16764pub struct PhysicalDeviceFormatPackFeaturesARM {
16765    pub s_type: StructureType,
16766    pub next: *mut c_void,
16767    pub format_pack: Bool32,
16768}
16769
16770impl Default for PhysicalDeviceFormatPackFeaturesARM {
16771    #[inline]
16772    fn default() -> Self {
16773        Self {
16774            s_type: StructureType::PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM,
16775            next: ptr::null_mut(),
16776            format_pack: Bool32::default(),
16777        }
16778    }
16779}
16780
16781unsafe impl Send for PhysicalDeviceFormatPackFeaturesARM {}
16782unsafe impl Sync for PhysicalDeviceFormatPackFeaturesARM {}
16783
16784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html>
16785#[repr(C)]
16786#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16787pub struct PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16788    pub s_type: StructureType,
16789    pub next: *mut c_void,
16790    pub fragment_density_map_deferred: Bool32,
16791}
16792
16793impl Default for PhysicalDeviceFragmentDensityMap2FeaturesEXT {
16794    #[inline]
16795    fn default() -> Self {
16796        Self {
16797            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
16798            next: ptr::null_mut(),
16799            fragment_density_map_deferred: Bool32::default(),
16800        }
16801    }
16802}
16803
16804unsafe impl Send for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16805unsafe impl Sync for PhysicalDeviceFragmentDensityMap2FeaturesEXT {}
16806
16807/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html>
16808#[repr(C)]
16809#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16810pub struct PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16811    pub s_type: StructureType,
16812    pub next: *mut c_void,
16813    pub subsampled_loads: Bool32,
16814    pub subsampled_coarse_reconstruction_early_access: Bool32,
16815    pub max_subsampled_array_layers: u32,
16816    pub max_descriptor_set_subsampled_samplers: u32,
16817}
16818
16819impl Default for PhysicalDeviceFragmentDensityMap2PropertiesEXT {
16820    #[inline]
16821    fn default() -> Self {
16822        Self {
16823            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
16824            next: ptr::null_mut(),
16825            subsampled_loads: Bool32::default(),
16826            subsampled_coarse_reconstruction_early_access: Bool32::default(),
16827            max_subsampled_array_layers: u32::default(),
16828            max_descriptor_set_subsampled_samplers: u32::default(),
16829        }
16830    }
16831}
16832
16833unsafe impl Send for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16834unsafe impl Sync for PhysicalDeviceFragmentDensityMap2PropertiesEXT {}
16835
16836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html>
16837#[repr(C)]
16838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16839pub struct PhysicalDeviceFragmentDensityMapFeaturesEXT {
16840    pub s_type: StructureType,
16841    pub next: *mut c_void,
16842    pub fragment_density_map: Bool32,
16843    pub fragment_density_map_dynamic: Bool32,
16844    pub fragment_density_map_non_subsampled_images: Bool32,
16845}
16846
16847impl Default for PhysicalDeviceFragmentDensityMapFeaturesEXT {
16848    #[inline]
16849    fn default() -> Self {
16850        Self {
16851            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
16852            next: ptr::null_mut(),
16853            fragment_density_map: Bool32::default(),
16854            fragment_density_map_dynamic: Bool32::default(),
16855            fragment_density_map_non_subsampled_images: Bool32::default(),
16856        }
16857    }
16858}
16859
16860unsafe impl Send for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16861unsafe impl Sync for PhysicalDeviceFragmentDensityMapFeaturesEXT {}
16862
16863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE.html>
16864#[repr(C)]
16865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16866pub struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16867    pub s_type: StructureType,
16868    pub next: *mut c_void,
16869    pub fragment_density_map_layered: Bool32,
16870}
16871
16872impl Default for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {
16873    #[inline]
16874    fn default() -> Self {
16875        Self {
16876            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE,
16877            next: ptr::null_mut(),
16878            fragment_density_map_layered: Bool32::default(),
16879        }
16880    }
16881}
16882
16883unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16884unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE {}
16885
16886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.html>
16887#[repr(C)]
16888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16889pub struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16890    pub s_type: StructureType,
16891    pub next: *mut c_void,
16892    pub max_fragment_density_map_layers: u32,
16893}
16894
16895impl Default for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {
16896    #[inline]
16897    fn default() -> Self {
16898        Self {
16899            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE,
16900            next: ptr::null_mut(),
16901            max_fragment_density_map_layers: u32::default(),
16902        }
16903    }
16904}
16905
16906unsafe impl Send for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16907unsafe impl Sync for PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE {}
16908
16909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.html>
16910#[repr(C)]
16911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16912pub struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16913    pub s_type: StructureType,
16914    pub next: *mut c_void,
16915    pub fragment_density_map_offset: Bool32,
16916}
16917
16918impl Default for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
16919    #[inline]
16920    fn default() -> Self {
16921        Self {
16922            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,
16923            next: ptr::null_mut(),
16924            fragment_density_map_offset: Bool32::default(),
16925        }
16926    }
16927}
16928
16929unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16930unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {}
16931
16932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.html>
16933#[repr(C)]
16934#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16935pub struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16936    pub s_type: StructureType,
16937    pub next: *mut c_void,
16938    pub fragment_density_offset_granularity: Extent2D,
16939}
16940
16941impl Default for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
16942    #[inline]
16943    fn default() -> Self {
16944        Self {
16945            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,
16946            next: ptr::null_mut(),
16947            fragment_density_offset_granularity: Extent2D::default(),
16948        }
16949    }
16950}
16951
16952unsafe impl Send for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16953unsafe impl Sync for PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {}
16954
16955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html>
16956#[repr(C)]
16957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16958pub struct PhysicalDeviceFragmentDensityMapPropertiesEXT {
16959    pub s_type: StructureType,
16960    pub next: *mut c_void,
16961    pub min_fragment_density_texel_size: Extent2D,
16962    pub max_fragment_density_texel_size: Extent2D,
16963    pub fragment_density_invocations: Bool32,
16964}
16965
16966impl Default for PhysicalDeviceFragmentDensityMapPropertiesEXT {
16967    #[inline]
16968    fn default() -> Self {
16969        Self {
16970            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
16971            next: ptr::null_mut(),
16972            min_fragment_density_texel_size: Extent2D::default(),
16973            max_fragment_density_texel_size: Extent2D::default(),
16974            fragment_density_invocations: Bool32::default(),
16975        }
16976    }
16977}
16978
16979unsafe impl Send for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16980unsafe impl Sync for PhysicalDeviceFragmentDensityMapPropertiesEXT {}
16981
16982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html>
16983#[repr(C)]
16984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
16985pub struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16986    pub s_type: StructureType,
16987    pub next: *mut c_void,
16988    pub fragment_shader_barycentric: Bool32,
16989}
16990
16991impl Default for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
16992    #[inline]
16993    fn default() -> Self {
16994        Self {
16995            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
16996            next: ptr::null_mut(),
16997            fragment_shader_barycentric: Bool32::default(),
16998        }
16999    }
17000}
17001
17002unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
17003unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricFeaturesKHR {}
17004
17005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html>
17006#[repr(C)]
17007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17008pub struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
17009    pub s_type: StructureType,
17010    pub next: *mut c_void,
17011    pub tri_strip_vertex_order_independent_of_provoking_vertex: Bool32,
17012}
17013
17014impl Default for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
17015    #[inline]
17016    fn default() -> Self {
17017        Self {
17018            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR,
17019            next: ptr::null_mut(),
17020            tri_strip_vertex_order_independent_of_provoking_vertex: Bool32::default(),
17021        }
17022    }
17023}
17024
17025unsafe impl Send for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
17026unsafe impl Sync for PhysicalDeviceFragmentShaderBarycentricPropertiesKHR {}
17027
17028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html>
17029#[repr(C)]
17030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17031pub struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
17032    pub s_type: StructureType,
17033    pub next: *mut c_void,
17034    pub fragment_shader_sample_interlock: Bool32,
17035    pub fragment_shader_pixel_interlock: Bool32,
17036    pub fragment_shader_shading_rate_interlock: Bool32,
17037}
17038
17039impl Default for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {
17040    #[inline]
17041    fn default() -> Self {
17042        Self {
17043            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
17044            next: ptr::null_mut(),
17045            fragment_shader_sample_interlock: Bool32::default(),
17046            fragment_shader_pixel_interlock: Bool32::default(),
17047            fragment_shader_shading_rate_interlock: Bool32::default(),
17048        }
17049    }
17050}
17051
17052unsafe impl Send for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
17053unsafe impl Sync for PhysicalDeviceFragmentShaderInterlockFeaturesEXT {}
17054
17055/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html>
17056#[repr(C)]
17057#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17058pub struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
17059    pub s_type: StructureType,
17060    pub next: *mut c_void,
17061    pub fragment_shading_rate_enums: Bool32,
17062    pub supersample_fragment_shading_rates: Bool32,
17063    pub no_invocation_fragment_shading_rates: Bool32,
17064}
17065
17066impl Default for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
17067    #[inline]
17068    fn default() -> Self {
17069        Self {
17070            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
17071            next: ptr::null_mut(),
17072            fragment_shading_rate_enums: Bool32::default(),
17073            supersample_fragment_shading_rates: Bool32::default(),
17074            no_invocation_fragment_shading_rates: Bool32::default(),
17075        }
17076    }
17077}
17078
17079unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
17080unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsFeaturesNV {}
17081
17082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html>
17083#[repr(C)]
17084#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17085pub struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
17086    pub s_type: StructureType,
17087    pub next: *mut c_void,
17088    pub max_fragment_shading_rate_invocation_count: SampleCountFlags,
17089}
17090
17091impl Default for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
17092    #[inline]
17093    fn default() -> Self {
17094        Self {
17095            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
17096            next: ptr::null_mut(),
17097            max_fragment_shading_rate_invocation_count: SampleCountFlags::default(),
17098        }
17099    }
17100}
17101
17102unsafe impl Send for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
17103unsafe impl Sync for PhysicalDeviceFragmentShadingRateEnumsPropertiesNV {}
17104
17105/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html>
17106#[repr(C)]
17107#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17108pub struct PhysicalDeviceFragmentShadingRateFeaturesKHR {
17109    pub s_type: StructureType,
17110    pub next: *mut c_void,
17111    pub pipeline_fragment_shading_rate: Bool32,
17112    pub primitive_fragment_shading_rate: Bool32,
17113    pub attachment_fragment_shading_rate: Bool32,
17114}
17115
17116impl Default for PhysicalDeviceFragmentShadingRateFeaturesKHR {
17117    #[inline]
17118    fn default() -> Self {
17119        Self {
17120            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR,
17121            next: ptr::null_mut(),
17122            pipeline_fragment_shading_rate: Bool32::default(),
17123            primitive_fragment_shading_rate: Bool32::default(),
17124            attachment_fragment_shading_rate: Bool32::default(),
17125        }
17126    }
17127}
17128
17129unsafe impl Send for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
17130unsafe impl Sync for PhysicalDeviceFragmentShadingRateFeaturesKHR {}
17131
17132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html>
17133#[repr(C)]
17134#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17135pub struct PhysicalDeviceFragmentShadingRateKHR {
17136    pub s_type: StructureType,
17137    pub next: *mut c_void,
17138    pub sample_counts: SampleCountFlags,
17139    pub fragment_size: Extent2D,
17140}
17141
17142impl Default for PhysicalDeviceFragmentShadingRateKHR {
17143    #[inline]
17144    fn default() -> Self {
17145        Self {
17146            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR,
17147            next: ptr::null_mut(),
17148            sample_counts: SampleCountFlags::default(),
17149            fragment_size: Extent2D::default(),
17150        }
17151    }
17152}
17153
17154unsafe impl Send for PhysicalDeviceFragmentShadingRateKHR {}
17155unsafe impl Sync for PhysicalDeviceFragmentShadingRateKHR {}
17156
17157/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html>
17158#[repr(C)]
17159#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17160pub struct PhysicalDeviceFragmentShadingRatePropertiesKHR {
17161    pub s_type: StructureType,
17162    pub next: *mut c_void,
17163    pub min_fragment_shading_rate_attachment_texel_size: Extent2D,
17164    pub max_fragment_shading_rate_attachment_texel_size: Extent2D,
17165    pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32,
17166    pub primitive_fragment_shading_rate_with_multiple_viewports: Bool32,
17167    pub layered_shading_rate_attachments: Bool32,
17168    pub fragment_shading_rate_non_trivial_combiner_ops: Bool32,
17169    pub max_fragment_size: Extent2D,
17170    pub max_fragment_size_aspect_ratio: u32,
17171    pub max_fragment_shading_rate_coverage_samples: u32,
17172    pub max_fragment_shading_rate_rasterization_samples: SampleCountFlags,
17173    pub fragment_shading_rate_with_shader_depth_stencil_writes: Bool32,
17174    pub fragment_shading_rate_with_sample_mask: Bool32,
17175    pub fragment_shading_rate_with_shader_sample_mask: Bool32,
17176    pub fragment_shading_rate_with_conservative_rasterization: Bool32,
17177    pub fragment_shading_rate_with_fragment_shader_interlock: Bool32,
17178    pub fragment_shading_rate_with_custom_sample_locations: Bool32,
17179    pub fragment_shading_rate_strict_multiply_combiner: Bool32,
17180}
17181
17182impl Default for PhysicalDeviceFragmentShadingRatePropertiesKHR {
17183    #[inline]
17184    fn default() -> Self {
17185        Self {
17186            s_type: StructureType::PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
17187            next: ptr::null_mut(),
17188            min_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
17189            max_fragment_shading_rate_attachment_texel_size: Extent2D::default(),
17190            max_fragment_shading_rate_attachment_texel_size_aspect_ratio: u32::default(),
17191            primitive_fragment_shading_rate_with_multiple_viewports: Bool32::default(),
17192            layered_shading_rate_attachments: Bool32::default(),
17193            fragment_shading_rate_non_trivial_combiner_ops: Bool32::default(),
17194            max_fragment_size: Extent2D::default(),
17195            max_fragment_size_aspect_ratio: u32::default(),
17196            max_fragment_shading_rate_coverage_samples: u32::default(),
17197            max_fragment_shading_rate_rasterization_samples: SampleCountFlags::default(),
17198            fragment_shading_rate_with_shader_depth_stencil_writes: Bool32::default(),
17199            fragment_shading_rate_with_sample_mask: Bool32::default(),
17200            fragment_shading_rate_with_shader_sample_mask: Bool32::default(),
17201            fragment_shading_rate_with_conservative_rasterization: Bool32::default(),
17202            fragment_shading_rate_with_fragment_shader_interlock: Bool32::default(),
17203            fragment_shading_rate_with_custom_sample_locations: Bool32::default(),
17204            fragment_shading_rate_strict_multiply_combiner: Bool32::default(),
17205        }
17206    }
17207}
17208
17209unsafe impl Send for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
17210unsafe impl Sync for PhysicalDeviceFragmentShadingRatePropertiesKHR {}
17211
17212/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html>
17213#[repr(C)]
17214#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17215pub struct PhysicalDeviceFrameBoundaryFeaturesEXT {
17216    pub s_type: StructureType,
17217    pub next: *mut c_void,
17218    pub frame_boundary: Bool32,
17219}
17220
17221impl Default for PhysicalDeviceFrameBoundaryFeaturesEXT {
17222    #[inline]
17223    fn default() -> Self {
17224        Self {
17225            s_type: StructureType::PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT,
17226            next: ptr::null_mut(),
17227            frame_boundary: Bool32::default(),
17228        }
17229    }
17230}
17231
17232unsafe impl Send for PhysicalDeviceFrameBoundaryFeaturesEXT {}
17233unsafe impl Sync for PhysicalDeviceFrameBoundaryFeaturesEXT {}
17234
17235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html>
17236#[repr(C)]
17237#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17238pub struct PhysicalDeviceGlobalPriorityQueryFeatures {
17239    pub s_type: StructureType,
17240    pub next: *mut c_void,
17241    pub global_priority_query: Bool32,
17242}
17243
17244impl Default for PhysicalDeviceGlobalPriorityQueryFeatures {
17245    #[inline]
17246    fn default() -> Self {
17247        Self {
17248            s_type: StructureType::PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES,
17249            next: ptr::null_mut(),
17250            global_priority_query: Bool32::default(),
17251        }
17252    }
17253}
17254
17255unsafe impl Send for PhysicalDeviceGlobalPriorityQueryFeatures {}
17256unsafe impl Sync for PhysicalDeviceGlobalPriorityQueryFeatures {}
17257
17258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html>
17259#[repr(C)]
17260#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17261pub struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
17262    pub s_type: StructureType,
17263    pub next: *mut c_void,
17264    pub graphics_pipeline_library: Bool32,
17265}
17266
17267impl Default for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
17268    #[inline]
17269    fn default() -> Self {
17270        Self {
17271            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT,
17272            next: ptr::null_mut(),
17273            graphics_pipeline_library: Bool32::default(),
17274        }
17275    }
17276}
17277
17278unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
17279unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {}
17280
17281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html>
17282#[repr(C)]
17283#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17284pub struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
17285    pub s_type: StructureType,
17286    pub next: *mut c_void,
17287    pub graphics_pipeline_library_fast_linking: Bool32,
17288    pub graphics_pipeline_library_independent_interpolation_decoration: Bool32,
17289}
17290
17291impl Default for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
17292    #[inline]
17293    fn default() -> Self {
17294        Self {
17295            s_type: StructureType::PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT,
17296            next: ptr::null_mut(),
17297            graphics_pipeline_library_fast_linking: Bool32::default(),
17298            graphics_pipeline_library_independent_interpolation_decoration: Bool32::default(),
17299        }
17300    }
17301}
17302
17303unsafe impl Send for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
17304unsafe impl Sync for PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {}
17305
17306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html>
17307#[repr(C)]
17308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17309pub struct PhysicalDeviceGroupProperties {
17310    pub s_type: StructureType,
17311    pub next: *mut c_void,
17312    pub physical_device_count: u32,
17313    pub physical_devices: [PhysicalDevice; MAX_DEVICE_GROUP_SIZE as usize],
17314    pub subset_allocation: Bool32,
17315}
17316
17317impl Default for PhysicalDeviceGroupProperties {
17318    #[inline]
17319    fn default() -> Self {
17320        Self {
17321            s_type: StructureType::PHYSICAL_DEVICE_GROUP_PROPERTIES,
17322            next: ptr::null_mut(),
17323            physical_device_count: u32::default(),
17324            physical_devices: [PhysicalDevice::default(); MAX_DEVICE_GROUP_SIZE],
17325            subset_allocation: Bool32::default(),
17326        }
17327    }
17328}
17329
17330unsafe impl Send for PhysicalDeviceGroupProperties {}
17331unsafe impl Sync for PhysicalDeviceGroupProperties {}
17332
17333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html>
17334#[repr(C)]
17335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17336pub struct PhysicalDeviceHdrVividFeaturesHUAWEI {
17337    pub s_type: StructureType,
17338    pub next: *mut c_void,
17339    pub hdr_vivid: Bool32,
17340}
17341
17342impl Default for PhysicalDeviceHdrVividFeaturesHUAWEI {
17343    #[inline]
17344    fn default() -> Self {
17345        Self {
17346            s_type: StructureType::PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI,
17347            next: ptr::null_mut(),
17348            hdr_vivid: Bool32::default(),
17349        }
17350    }
17351}
17352
17353unsafe impl Send for PhysicalDeviceHdrVividFeaturesHUAWEI {}
17354unsafe impl Sync for PhysicalDeviceHdrVividFeaturesHUAWEI {}
17355
17356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html>
17357#[repr(C)]
17358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17359pub struct PhysicalDeviceHostImageCopyFeatures {
17360    pub s_type: StructureType,
17361    pub next: *mut c_void,
17362    pub host_image_copy: Bool32,
17363}
17364
17365impl Default for PhysicalDeviceHostImageCopyFeatures {
17366    #[inline]
17367    fn default() -> Self {
17368        Self {
17369            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES,
17370            next: ptr::null_mut(),
17371            host_image_copy: Bool32::default(),
17372        }
17373    }
17374}
17375
17376unsafe impl Send for PhysicalDeviceHostImageCopyFeatures {}
17377unsafe impl Sync for PhysicalDeviceHostImageCopyFeatures {}
17378
17379/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html>
17380#[repr(C)]
17381#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17382pub struct PhysicalDeviceHostImageCopyProperties {
17383    pub s_type: StructureType,
17384    pub next: *mut c_void,
17385    pub copy_src_layout_count: u32,
17386    pub copy_src_layouts: *mut ImageLayout,
17387    pub copy_dst_layout_count: u32,
17388    pub copy_dst_layouts: *mut ImageLayout,
17389    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
17390    pub identical_memory_type_requirements: Bool32,
17391}
17392
17393impl Default for PhysicalDeviceHostImageCopyProperties {
17394    #[inline]
17395    fn default() -> Self {
17396        Self {
17397            s_type: StructureType::PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES,
17398            next: ptr::null_mut(),
17399            copy_src_layout_count: u32::default(),
17400            copy_src_layouts: ptr::null_mut(),
17401            copy_dst_layout_count: u32::default(),
17402            copy_dst_layouts: ptr::null_mut(),
17403            optimal_tiling_layout_uuid: ByteArray::default(),
17404            identical_memory_type_requirements: Bool32::default(),
17405        }
17406    }
17407}
17408
17409unsafe impl Send for PhysicalDeviceHostImageCopyProperties {}
17410unsafe impl Sync for PhysicalDeviceHostImageCopyProperties {}
17411
17412/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html>
17413#[repr(C)]
17414#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17415pub struct PhysicalDeviceHostQueryResetFeatures {
17416    pub s_type: StructureType,
17417    pub next: *mut c_void,
17418    pub host_query_reset: Bool32,
17419}
17420
17421impl Default for PhysicalDeviceHostQueryResetFeatures {
17422    #[inline]
17423    fn default() -> Self {
17424        Self {
17425            s_type: StructureType::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
17426            next: ptr::null_mut(),
17427            host_query_reset: Bool32::default(),
17428        }
17429    }
17430}
17431
17432unsafe impl Send for PhysicalDeviceHostQueryResetFeatures {}
17433unsafe impl Sync for PhysicalDeviceHostQueryResetFeatures {}
17434
17435/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html>
17436#[repr(C)]
17437#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17438pub struct PhysicalDeviceIDProperties {
17439    pub s_type: StructureType,
17440    pub next: *mut c_void,
17441    pub device_uuid: ByteArray<UUID_SIZE>,
17442    pub driver_uuid: ByteArray<UUID_SIZE>,
17443    pub device_luid: ByteArray<LUID_SIZE>,
17444    pub device_node_mask: u32,
17445    pub device_luid_valid: Bool32,
17446}
17447
17448impl Default for PhysicalDeviceIDProperties {
17449    #[inline]
17450    fn default() -> Self {
17451        Self {
17452            s_type: StructureType::PHYSICAL_DEVICE_ID_PROPERTIES,
17453            next: ptr::null_mut(),
17454            device_uuid: ByteArray::default(),
17455            driver_uuid: ByteArray::default(),
17456            device_luid: ByteArray::default(),
17457            device_node_mask: u32::default(),
17458            device_luid_valid: Bool32::default(),
17459        }
17460    }
17461}
17462
17463unsafe impl Send for PhysicalDeviceIDProperties {}
17464unsafe impl Sync for PhysicalDeviceIDProperties {}
17465
17466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html>
17467#[repr(C)]
17468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17469pub struct PhysicalDeviceImage2DViewOf3DFeaturesEXT {
17470    pub s_type: StructureType,
17471    pub next: *mut c_void,
17472    pub image_2d_view_of_3d: Bool32,
17473    pub sampler_2d_view_of_3d: Bool32,
17474}
17475
17476impl Default for PhysicalDeviceImage2DViewOf3DFeaturesEXT {
17477    #[inline]
17478    fn default() -> Self {
17479        Self {
17480            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT,
17481            next: ptr::null_mut(),
17482            image_2d_view_of_3d: Bool32::default(),
17483            sampler_2d_view_of_3d: Bool32::default(),
17484        }
17485    }
17486}
17487
17488unsafe impl Send for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
17489unsafe impl Sync for PhysicalDeviceImage2DViewOf3DFeaturesEXT {}
17490
17491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html>
17492#[repr(C)]
17493#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17494pub struct PhysicalDeviceImageAlignmentControlFeaturesMESA {
17495    pub s_type: StructureType,
17496    pub next: *mut c_void,
17497    pub image_alignment_control: Bool32,
17498}
17499
17500impl Default for PhysicalDeviceImageAlignmentControlFeaturesMESA {
17501    #[inline]
17502    fn default() -> Self {
17503        Self {
17504            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA,
17505            next: ptr::null_mut(),
17506            image_alignment_control: Bool32::default(),
17507        }
17508    }
17509}
17510
17511unsafe impl Send for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
17512unsafe impl Sync for PhysicalDeviceImageAlignmentControlFeaturesMESA {}
17513
17514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html>
17515#[repr(C)]
17516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17517pub struct PhysicalDeviceImageAlignmentControlPropertiesMESA {
17518    pub s_type: StructureType,
17519    pub next: *mut c_void,
17520    pub supported_image_alignment_mask: u32,
17521}
17522
17523impl Default for PhysicalDeviceImageAlignmentControlPropertiesMESA {
17524    #[inline]
17525    fn default() -> Self {
17526        Self {
17527            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA,
17528            next: ptr::null_mut(),
17529            supported_image_alignment_mask: u32::default(),
17530        }
17531    }
17532}
17533
17534unsafe impl Send for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
17535unsafe impl Sync for PhysicalDeviceImageAlignmentControlPropertiesMESA {}
17536
17537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html>
17538#[repr(C)]
17539#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17540pub struct PhysicalDeviceImageCompressionControlFeaturesEXT {
17541    pub s_type: StructureType,
17542    pub next: *mut c_void,
17543    pub image_compression_control: Bool32,
17544}
17545
17546impl Default for PhysicalDeviceImageCompressionControlFeaturesEXT {
17547    #[inline]
17548    fn default() -> Self {
17549        Self {
17550            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT,
17551            next: ptr::null_mut(),
17552            image_compression_control: Bool32::default(),
17553        }
17554    }
17555}
17556
17557unsafe impl Send for PhysicalDeviceImageCompressionControlFeaturesEXT {}
17558unsafe impl Sync for PhysicalDeviceImageCompressionControlFeaturesEXT {}
17559
17560/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html>
17561#[repr(C)]
17562#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17563pub struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
17564    pub s_type: StructureType,
17565    pub next: *mut c_void,
17566    pub image_compression_control_swapchain: Bool32,
17567}
17568
17569impl Default for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
17570    #[inline]
17571    fn default() -> Self {
17572        Self {
17573            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT,
17574            next: ptr::null_mut(),
17575            image_compression_control_swapchain: Bool32::default(),
17576        }
17577    }
17578}
17579
17580unsafe impl Send for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
17581unsafe impl Sync for PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {}
17582
17583/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html>
17584#[repr(C)]
17585#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17586pub struct PhysicalDeviceImageDrmFormatModifierInfoEXT {
17587    pub s_type: StructureType,
17588    pub next: *const c_void,
17589    pub drm_format_modifier: u64,
17590    pub sharing_mode: SharingMode,
17591    pub queue_family_index_count: u32,
17592    pub queue_family_indices: *const u32,
17593}
17594
17595impl Default for PhysicalDeviceImageDrmFormatModifierInfoEXT {
17596    #[inline]
17597    fn default() -> Self {
17598        Self {
17599            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
17600            next: ptr::null(),
17601            drm_format_modifier: u64::default(),
17602            sharing_mode: SharingMode::default(),
17603            queue_family_index_count: u32::default(),
17604            queue_family_indices: ptr::null(),
17605        }
17606    }
17607}
17608
17609unsafe impl Send for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
17610unsafe impl Sync for PhysicalDeviceImageDrmFormatModifierInfoEXT {}
17611
17612/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html>
17613#[repr(C)]
17614#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17615pub struct PhysicalDeviceImageFormatInfo2 {
17616    pub s_type: StructureType,
17617    pub next: *const c_void,
17618    pub format: Format,
17619    pub type_: ImageType,
17620    pub tiling: ImageTiling,
17621    pub usage: ImageUsageFlags,
17622    pub flags: ImageCreateFlags,
17623}
17624
17625impl Default for PhysicalDeviceImageFormatInfo2 {
17626    #[inline]
17627    fn default() -> Self {
17628        Self {
17629            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
17630            next: ptr::null(),
17631            format: Format::default(),
17632            type_: ImageType::default(),
17633            tiling: ImageTiling::default(),
17634            usage: ImageUsageFlags::default(),
17635            flags: ImageCreateFlags::default(),
17636        }
17637    }
17638}
17639
17640unsafe impl Send for PhysicalDeviceImageFormatInfo2 {}
17641unsafe impl Sync for PhysicalDeviceImageFormatInfo2 {}
17642
17643/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html>
17644#[repr(C)]
17645#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17646pub struct PhysicalDeviceImageProcessing2FeaturesQCOM {
17647    pub s_type: StructureType,
17648    pub next: *mut c_void,
17649    pub texture_block_match2: Bool32,
17650}
17651
17652impl Default for PhysicalDeviceImageProcessing2FeaturesQCOM {
17653    #[inline]
17654    fn default() -> Self {
17655        Self {
17656            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM,
17657            next: ptr::null_mut(),
17658            texture_block_match2: Bool32::default(),
17659        }
17660    }
17661}
17662
17663unsafe impl Send for PhysicalDeviceImageProcessing2FeaturesQCOM {}
17664unsafe impl Sync for PhysicalDeviceImageProcessing2FeaturesQCOM {}
17665
17666/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html>
17667#[repr(C)]
17668#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17669pub struct PhysicalDeviceImageProcessing2PropertiesQCOM {
17670    pub s_type: StructureType,
17671    pub next: *mut c_void,
17672    pub max_block_match_window: Extent2D,
17673}
17674
17675impl Default for PhysicalDeviceImageProcessing2PropertiesQCOM {
17676    #[inline]
17677    fn default() -> Self {
17678        Self {
17679            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM,
17680            next: ptr::null_mut(),
17681            max_block_match_window: Extent2D::default(),
17682        }
17683    }
17684}
17685
17686unsafe impl Send for PhysicalDeviceImageProcessing2PropertiesQCOM {}
17687unsafe impl Sync for PhysicalDeviceImageProcessing2PropertiesQCOM {}
17688
17689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html>
17690#[repr(C)]
17691#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17692pub struct PhysicalDeviceImageProcessingFeaturesQCOM {
17693    pub s_type: StructureType,
17694    pub next: *mut c_void,
17695    pub texture_sample_weighted: Bool32,
17696    pub texture_box_filter: Bool32,
17697    pub texture_block_match: Bool32,
17698}
17699
17700impl Default for PhysicalDeviceImageProcessingFeaturesQCOM {
17701    #[inline]
17702    fn default() -> Self {
17703        Self {
17704            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM,
17705            next: ptr::null_mut(),
17706            texture_sample_weighted: Bool32::default(),
17707            texture_box_filter: Bool32::default(),
17708            texture_block_match: Bool32::default(),
17709        }
17710    }
17711}
17712
17713unsafe impl Send for PhysicalDeviceImageProcessingFeaturesQCOM {}
17714unsafe impl Sync for PhysicalDeviceImageProcessingFeaturesQCOM {}
17715
17716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html>
17717#[repr(C)]
17718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17719pub struct PhysicalDeviceImageProcessingPropertiesQCOM {
17720    pub s_type: StructureType,
17721    pub next: *mut c_void,
17722    pub max_weight_filter_phases: u32,
17723    pub max_weight_filter_dimension: Extent2D,
17724    pub max_block_match_region: Extent2D,
17725    pub max_box_filter_block_size: Extent2D,
17726}
17727
17728impl Default for PhysicalDeviceImageProcessingPropertiesQCOM {
17729    #[inline]
17730    fn default() -> Self {
17731        Self {
17732            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM,
17733            next: ptr::null_mut(),
17734            max_weight_filter_phases: u32::default(),
17735            max_weight_filter_dimension: Extent2D::default(),
17736            max_block_match_region: Extent2D::default(),
17737            max_box_filter_block_size: Extent2D::default(),
17738        }
17739    }
17740}
17741
17742unsafe impl Send for PhysicalDeviceImageProcessingPropertiesQCOM {}
17743unsafe impl Sync for PhysicalDeviceImageProcessingPropertiesQCOM {}
17744
17745/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html>
17746#[repr(C)]
17747#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17748pub struct PhysicalDeviceImageRobustnessFeatures {
17749    pub s_type: StructureType,
17750    pub next: *mut c_void,
17751    pub robust_image_access: Bool32,
17752}
17753
17754impl Default for PhysicalDeviceImageRobustnessFeatures {
17755    #[inline]
17756    fn default() -> Self {
17757        Self {
17758            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
17759            next: ptr::null_mut(),
17760            robust_image_access: Bool32::default(),
17761        }
17762    }
17763}
17764
17765unsafe impl Send for PhysicalDeviceImageRobustnessFeatures {}
17766unsafe impl Sync for PhysicalDeviceImageRobustnessFeatures {}
17767
17768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html>
17769#[repr(C)]
17770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17771pub struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17772    pub s_type: StructureType,
17773    pub next: *mut c_void,
17774    pub image_sliced_view_of_3d: Bool32,
17775}
17776
17777impl Default for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17778    #[inline]
17779    fn default() -> Self {
17780        Self {
17781            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT,
17782            next: ptr::null_mut(),
17783            image_sliced_view_of_3d: Bool32::default(),
17784        }
17785    }
17786}
17787
17788unsafe impl Send for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17789unsafe impl Sync for PhysicalDeviceImageSlicedViewOf3DFeaturesEXT {}
17790
17791/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html>
17792#[repr(C)]
17793#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17794pub struct PhysicalDeviceImageViewImageFormatInfoEXT {
17795    pub s_type: StructureType,
17796    pub next: *mut c_void,
17797    pub image_view_type: ImageViewType,
17798}
17799
17800impl Default for PhysicalDeviceImageViewImageFormatInfoEXT {
17801    #[inline]
17802    fn default() -> Self {
17803        Self {
17804            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
17805            next: ptr::null_mut(),
17806            image_view_type: ImageViewType::default(),
17807        }
17808    }
17809}
17810
17811unsafe impl Send for PhysicalDeviceImageViewImageFormatInfoEXT {}
17812unsafe impl Sync for PhysicalDeviceImageViewImageFormatInfoEXT {}
17813
17814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html>
17815#[repr(C)]
17816#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17817pub struct PhysicalDeviceImageViewMinLodFeaturesEXT {
17818    pub s_type: StructureType,
17819    pub next: *mut c_void,
17820    pub min_lod: Bool32,
17821}
17822
17823impl Default for PhysicalDeviceImageViewMinLodFeaturesEXT {
17824    #[inline]
17825    fn default() -> Self {
17826        Self {
17827            s_type: StructureType::PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
17828            next: ptr::null_mut(),
17829            min_lod: Bool32::default(),
17830        }
17831    }
17832}
17833
17834unsafe impl Send for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17835unsafe impl Sync for PhysicalDeviceImageViewMinLodFeaturesEXT {}
17836
17837/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html>
17838#[repr(C)]
17839#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17840pub struct PhysicalDeviceImagelessFramebufferFeatures {
17841    pub s_type: StructureType,
17842    pub next: *mut c_void,
17843    pub imageless_framebuffer: Bool32,
17844}
17845
17846impl Default for PhysicalDeviceImagelessFramebufferFeatures {
17847    #[inline]
17848    fn default() -> Self {
17849        Self {
17850            s_type: StructureType::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
17851            next: ptr::null_mut(),
17852            imageless_framebuffer: Bool32::default(),
17853        }
17854    }
17855}
17856
17857unsafe impl Send for PhysicalDeviceImagelessFramebufferFeatures {}
17858unsafe impl Sync for PhysicalDeviceImagelessFramebufferFeatures {}
17859
17860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html>
17861#[repr(C)]
17862#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17863pub struct PhysicalDeviceIndexTypeUint8Features {
17864    pub s_type: StructureType,
17865    pub next: *mut c_void,
17866    pub index_type_uint8: Bool32,
17867}
17868
17869impl Default for PhysicalDeviceIndexTypeUint8Features {
17870    #[inline]
17871    fn default() -> Self {
17872        Self {
17873            s_type: StructureType::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES,
17874            next: ptr::null_mut(),
17875            index_type_uint8: Bool32::default(),
17876        }
17877    }
17878}
17879
17880unsafe impl Send for PhysicalDeviceIndexTypeUint8Features {}
17881unsafe impl Sync for PhysicalDeviceIndexTypeUint8Features {}
17882
17883/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html>
17884#[repr(C)]
17885#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17886pub struct PhysicalDeviceInheritedViewportScissorFeaturesNV {
17887    pub s_type: StructureType,
17888    pub next: *mut c_void,
17889    pub inherited_viewport_scissor_2d: Bool32,
17890}
17891
17892impl Default for PhysicalDeviceInheritedViewportScissorFeaturesNV {
17893    #[inline]
17894    fn default() -> Self {
17895        Self {
17896            s_type: StructureType::PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
17897            next: ptr::null_mut(),
17898            inherited_viewport_scissor_2d: Bool32::default(),
17899        }
17900    }
17901}
17902
17903unsafe impl Send for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17904unsafe impl Sync for PhysicalDeviceInheritedViewportScissorFeaturesNV {}
17905
17906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html>
17907#[repr(C)]
17908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17909pub struct PhysicalDeviceInlineUniformBlockFeatures {
17910    pub s_type: StructureType,
17911    pub next: *mut c_void,
17912    pub inline_uniform_block: Bool32,
17913    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
17914}
17915
17916impl Default for PhysicalDeviceInlineUniformBlockFeatures {
17917    #[inline]
17918    fn default() -> Self {
17919        Self {
17920            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
17921            next: ptr::null_mut(),
17922            inline_uniform_block: Bool32::default(),
17923            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
17924        }
17925    }
17926}
17927
17928unsafe impl Send for PhysicalDeviceInlineUniformBlockFeatures {}
17929unsafe impl Sync for PhysicalDeviceInlineUniformBlockFeatures {}
17930
17931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html>
17932#[repr(C)]
17933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17934pub struct PhysicalDeviceInlineUniformBlockProperties {
17935    pub s_type: StructureType,
17936    pub next: *mut c_void,
17937    pub max_inline_uniform_block_size: u32,
17938    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
17939    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
17940    pub max_descriptor_set_inline_uniform_blocks: u32,
17941    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
17942}
17943
17944impl Default for PhysicalDeviceInlineUniformBlockProperties {
17945    #[inline]
17946    fn default() -> Self {
17947        Self {
17948            s_type: StructureType::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
17949            next: ptr::null_mut(),
17950            max_inline_uniform_block_size: u32::default(),
17951            max_per_stage_descriptor_inline_uniform_blocks: u32::default(),
17952            max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32::default(),
17953            max_descriptor_set_inline_uniform_blocks: u32::default(),
17954            max_descriptor_set_update_after_bind_inline_uniform_blocks: u32::default(),
17955        }
17956    }
17957}
17958
17959unsafe impl Send for PhysicalDeviceInlineUniformBlockProperties {}
17960unsafe impl Sync for PhysicalDeviceInlineUniformBlockProperties {}
17961
17962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR.html>
17963#[repr(C)]
17964#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17965pub struct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR {
17966    pub s_type: StructureType,
17967    pub next: *mut c_void,
17968    pub internally_synchronized_queues: Bool32,
17969}
17970
17971impl Default for PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR {
17972    #[inline]
17973    fn default() -> Self {
17974        Self {
17975            s_type: StructureType::PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR,
17976            next: ptr::null_mut(),
17977            internally_synchronized_queues: Bool32::default(),
17978        }
17979    }
17980}
17981
17982unsafe impl Send for PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR {}
17983unsafe impl Sync for PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR {}
17984
17985/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html>
17986#[repr(C)]
17987#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
17988pub struct PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17989    pub s_type: StructureType,
17990    pub next: *mut c_void,
17991    pub invocation_mask: Bool32,
17992}
17993
17994impl Default for PhysicalDeviceInvocationMaskFeaturesHUAWEI {
17995    #[inline]
17996    fn default() -> Self {
17997        Self {
17998            s_type: StructureType::PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI,
17999            next: ptr::null_mut(),
18000            invocation_mask: Bool32::default(),
18001        }
18002    }
18003}
18004
18005unsafe impl Send for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
18006unsafe impl Sync for PhysicalDeviceInvocationMaskFeaturesHUAWEI {}
18007
18008/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html>
18009#[repr(C)]
18010#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18011pub struct PhysicalDeviceLayeredApiPropertiesKHR {
18012    pub s_type: StructureType,
18013    pub next: *mut c_void,
18014    pub vendor_id: u32,
18015    pub device_id: u32,
18016    pub layered_api: PhysicalDeviceLayeredApiKHR,
18017    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
18018}
18019
18020impl Default for PhysicalDeviceLayeredApiPropertiesKHR {
18021    #[inline]
18022    fn default() -> Self {
18023        Self {
18024            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR,
18025            next: ptr::null_mut(),
18026            vendor_id: u32::default(),
18027            device_id: u32::default(),
18028            layered_api: PhysicalDeviceLayeredApiKHR::default(),
18029            device_name: StringArray::default(),
18030        }
18031    }
18032}
18033
18034unsafe impl Send for PhysicalDeviceLayeredApiPropertiesKHR {}
18035unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesKHR {}
18036
18037/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html>
18038#[repr(C)]
18039#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18040pub struct PhysicalDeviceLayeredApiPropertiesListKHR {
18041    pub s_type: StructureType,
18042    pub next: *mut c_void,
18043    pub layered_api_count: u32,
18044    pub layered_apis: *mut PhysicalDeviceLayeredApiPropertiesKHR,
18045}
18046
18047impl Default for PhysicalDeviceLayeredApiPropertiesListKHR {
18048    #[inline]
18049    fn default() -> Self {
18050        Self {
18051            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR,
18052            next: ptr::null_mut(),
18053            layered_api_count: u32::default(),
18054            layered_apis: ptr::null_mut(),
18055        }
18056    }
18057}
18058
18059unsafe impl Send for PhysicalDeviceLayeredApiPropertiesListKHR {}
18060unsafe impl Sync for PhysicalDeviceLayeredApiPropertiesListKHR {}
18061
18062/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html>
18063#[repr(C)]
18064#[derive(Copy, Clone, Debug, PartialEq)]
18065pub struct PhysicalDeviceLayeredApiVulkanPropertiesKHR {
18066    pub s_type: StructureType,
18067    pub next: *mut c_void,
18068    pub properties: PhysicalDeviceProperties2,
18069}
18070
18071impl Default for PhysicalDeviceLayeredApiVulkanPropertiesKHR {
18072    #[inline]
18073    fn default() -> Self {
18074        Self {
18075            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR,
18076            next: ptr::null_mut(),
18077            properties: PhysicalDeviceProperties2::default(),
18078        }
18079    }
18080}
18081
18082unsafe impl Send for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
18083unsafe impl Sync for PhysicalDeviceLayeredApiVulkanPropertiesKHR {}
18084
18085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html>
18086#[repr(C)]
18087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18088pub struct PhysicalDeviceLayeredDriverPropertiesMSFT {
18089    pub s_type: StructureType,
18090    pub next: *mut c_void,
18091    pub underlying_api: LayeredDriverUnderlyingApiMSFT,
18092}
18093
18094impl Default for PhysicalDeviceLayeredDriverPropertiesMSFT {
18095    #[inline]
18096    fn default() -> Self {
18097        Self {
18098            s_type: StructureType::PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT,
18099            next: ptr::null_mut(),
18100            underlying_api: LayeredDriverUnderlyingApiMSFT::default(),
18101        }
18102    }
18103}
18104
18105unsafe impl Send for PhysicalDeviceLayeredDriverPropertiesMSFT {}
18106unsafe impl Sync for PhysicalDeviceLayeredDriverPropertiesMSFT {}
18107
18108/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html>
18109#[repr(C)]
18110#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18111pub struct PhysicalDeviceLegacyDitheringFeaturesEXT {
18112    pub s_type: StructureType,
18113    pub next: *mut c_void,
18114    pub legacy_dithering: Bool32,
18115}
18116
18117impl Default for PhysicalDeviceLegacyDitheringFeaturesEXT {
18118    #[inline]
18119    fn default() -> Self {
18120        Self {
18121            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT,
18122            next: ptr::null_mut(),
18123            legacy_dithering: Bool32::default(),
18124        }
18125    }
18126}
18127
18128unsafe impl Send for PhysicalDeviceLegacyDitheringFeaturesEXT {}
18129unsafe impl Sync for PhysicalDeviceLegacyDitheringFeaturesEXT {}
18130
18131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html>
18132#[repr(C)]
18133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18134pub struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
18135    pub s_type: StructureType,
18136    pub next: *mut c_void,
18137    pub legacy_vertex_attributes: Bool32,
18138}
18139
18140impl Default for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {
18141    #[inline]
18142    fn default() -> Self {
18143        Self {
18144            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT,
18145            next: ptr::null_mut(),
18146            legacy_vertex_attributes: Bool32::default(),
18147        }
18148    }
18149}
18150
18151unsafe impl Send for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
18152unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesFeaturesEXT {}
18153
18154/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html>
18155#[repr(C)]
18156#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18157pub struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
18158    pub s_type: StructureType,
18159    pub next: *mut c_void,
18160    pub native_unaligned_performance: Bool32,
18161}
18162
18163impl Default for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {
18164    #[inline]
18165    fn default() -> Self {
18166        Self {
18167            s_type: StructureType::PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT,
18168            next: ptr::null_mut(),
18169            native_unaligned_performance: Bool32::default(),
18170        }
18171    }
18172}
18173
18174unsafe impl Send for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
18175unsafe impl Sync for PhysicalDeviceLegacyVertexAttributesPropertiesEXT {}
18176
18177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html>
18178#[repr(C)]
18179#[derive(Copy, Clone, Default, Debug, PartialEq)]
18180pub struct PhysicalDeviceLimits {
18181    pub max_image_dimension_1d: u32,
18182    pub max_image_dimension_2d: u32,
18183    pub max_image_dimension_3d: u32,
18184    pub max_image_dimension_cube: u32,
18185    pub max_image_array_layers: u32,
18186    pub max_texel_buffer_elements: u32,
18187    pub max_uniform_buffer_range: u32,
18188    pub max_storage_buffer_range: u32,
18189    pub max_push_constants_size: u32,
18190    pub max_memory_allocation_count: u32,
18191    pub max_sampler_allocation_count: u32,
18192    pub buffer_image_granularity: DeviceSize,
18193    pub sparse_address_space_size: DeviceSize,
18194    pub max_bound_descriptor_sets: u32,
18195    pub max_per_stage_descriptor_samplers: u32,
18196    pub max_per_stage_descriptor_uniform_buffers: u32,
18197    pub max_per_stage_descriptor_storage_buffers: u32,
18198    pub max_per_stage_descriptor_sampled_images: u32,
18199    pub max_per_stage_descriptor_storage_images: u32,
18200    pub max_per_stage_descriptor_input_attachments: u32,
18201    pub max_per_stage_resources: u32,
18202    pub max_descriptor_set_samplers: u32,
18203    pub max_descriptor_set_uniform_buffers: u32,
18204    pub max_descriptor_set_uniform_buffers_dynamic: u32,
18205    pub max_descriptor_set_storage_buffers: u32,
18206    pub max_descriptor_set_storage_buffers_dynamic: u32,
18207    pub max_descriptor_set_sampled_images: u32,
18208    pub max_descriptor_set_storage_images: u32,
18209    pub max_descriptor_set_input_attachments: u32,
18210    pub max_vertex_input_attributes: u32,
18211    pub max_vertex_input_bindings: u32,
18212    pub max_vertex_input_attribute_offset: u32,
18213    pub max_vertex_input_binding_stride: u32,
18214    pub max_vertex_output_components: u32,
18215    pub max_tessellation_generation_level: u32,
18216    pub max_tessellation_patch_size: u32,
18217    pub max_tessellation_control_per_vertex_input_components: u32,
18218    pub max_tessellation_control_per_vertex_output_components: u32,
18219    pub max_tessellation_control_per_patch_output_components: u32,
18220    pub max_tessellation_control_total_output_components: u32,
18221    pub max_tessellation_evaluation_input_components: u32,
18222    pub max_tessellation_evaluation_output_components: u32,
18223    pub max_geometry_shader_invocations: u32,
18224    pub max_geometry_input_components: u32,
18225    pub max_geometry_output_components: u32,
18226    pub max_geometry_output_vertices: u32,
18227    pub max_geometry_total_output_components: u32,
18228    pub max_fragment_input_components: u32,
18229    pub max_fragment_output_attachments: u32,
18230    pub max_fragment_dual_src_attachments: u32,
18231    pub max_fragment_combined_output_resources: u32,
18232    pub max_compute_shared_memory_size: u32,
18233    pub max_compute_work_group_count: [u32; 3],
18234    pub max_compute_work_group_invocations: u32,
18235    pub max_compute_work_group_size: [u32; 3],
18236    pub sub_pixel_precision_bits: u32,
18237    pub sub_texel_precision_bits: u32,
18238    pub mipmap_precision_bits: u32,
18239    pub max_draw_indexed_index_value: u32,
18240    pub max_draw_indirect_count: u32,
18241    pub max_sampler_lod_bias: f32,
18242    pub max_sampler_anisotropy: f32,
18243    pub max_viewports: u32,
18244    pub max_viewport_dimensions: [u32; 2],
18245    pub viewport_bounds_range: [f32; 2],
18246    pub viewport_sub_pixel_bits: u32,
18247    pub min_memory_map_alignment: usize,
18248    pub min_texel_buffer_offset_alignment: DeviceSize,
18249    pub min_uniform_buffer_offset_alignment: DeviceSize,
18250    pub min_storage_buffer_offset_alignment: DeviceSize,
18251    pub min_texel_offset: i32,
18252    pub max_texel_offset: u32,
18253    pub min_texel_gather_offset: i32,
18254    pub max_texel_gather_offset: u32,
18255    pub min_interpolation_offset: f32,
18256    pub max_interpolation_offset: f32,
18257    pub sub_pixel_interpolation_offset_bits: u32,
18258    pub max_framebuffer_width: u32,
18259    pub max_framebuffer_height: u32,
18260    pub max_framebuffer_layers: u32,
18261    pub framebuffer_color_sample_counts: SampleCountFlags,
18262    pub framebuffer_depth_sample_counts: SampleCountFlags,
18263    pub framebuffer_stencil_sample_counts: SampleCountFlags,
18264    pub framebuffer_no_attachments_sample_counts: SampleCountFlags,
18265    pub max_color_attachments: u32,
18266    pub sampled_image_color_sample_counts: SampleCountFlags,
18267    pub sampled_image_integer_sample_counts: SampleCountFlags,
18268    pub sampled_image_depth_sample_counts: SampleCountFlags,
18269    pub sampled_image_stencil_sample_counts: SampleCountFlags,
18270    pub storage_image_sample_counts: SampleCountFlags,
18271    pub max_sample_mask_words: u32,
18272    pub timestamp_compute_and_graphics: Bool32,
18273    pub timestamp_period: f32,
18274    pub max_clip_distances: u32,
18275    pub max_cull_distances: u32,
18276    pub max_combined_clip_and_cull_distances: u32,
18277    pub discrete_queue_priorities: u32,
18278    pub point_size_range: [f32; 2],
18279    pub line_width_range: [f32; 2],
18280    pub point_size_granularity: f32,
18281    pub line_width_granularity: f32,
18282    pub strict_lines: Bool32,
18283    pub standard_sample_locations: Bool32,
18284    pub optimal_buffer_copy_offset_alignment: DeviceSize,
18285    pub optimal_buffer_copy_row_pitch_alignment: DeviceSize,
18286    pub non_coherent_atom_size: DeviceSize,
18287}
18288
18289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html>
18290#[repr(C)]
18291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18292pub struct PhysicalDeviceLineRasterizationFeatures {
18293    pub s_type: StructureType,
18294    pub next: *mut c_void,
18295    pub rectangular_lines: Bool32,
18296    pub bresenham_lines: Bool32,
18297    pub smooth_lines: Bool32,
18298    pub stippled_rectangular_lines: Bool32,
18299    pub stippled_bresenham_lines: Bool32,
18300    pub stippled_smooth_lines: Bool32,
18301}
18302
18303impl Default for PhysicalDeviceLineRasterizationFeatures {
18304    #[inline]
18305    fn default() -> Self {
18306        Self {
18307            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES,
18308            next: ptr::null_mut(),
18309            rectangular_lines: Bool32::default(),
18310            bresenham_lines: Bool32::default(),
18311            smooth_lines: Bool32::default(),
18312            stippled_rectangular_lines: Bool32::default(),
18313            stippled_bresenham_lines: Bool32::default(),
18314            stippled_smooth_lines: Bool32::default(),
18315        }
18316    }
18317}
18318
18319unsafe impl Send for PhysicalDeviceLineRasterizationFeatures {}
18320unsafe impl Sync for PhysicalDeviceLineRasterizationFeatures {}
18321
18322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html>
18323#[repr(C)]
18324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18325pub struct PhysicalDeviceLineRasterizationProperties {
18326    pub s_type: StructureType,
18327    pub next: *mut c_void,
18328    pub line_sub_pixel_precision_bits: u32,
18329}
18330
18331impl Default for PhysicalDeviceLineRasterizationProperties {
18332    #[inline]
18333    fn default() -> Self {
18334        Self {
18335            s_type: StructureType::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES,
18336            next: ptr::null_mut(),
18337            line_sub_pixel_precision_bits: u32::default(),
18338        }
18339    }
18340}
18341
18342unsafe impl Send for PhysicalDeviceLineRasterizationProperties {}
18343unsafe impl Sync for PhysicalDeviceLineRasterizationProperties {}
18344
18345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html>
18346#[repr(C)]
18347#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18348pub struct PhysicalDeviceLinearColorAttachmentFeaturesNV {
18349    pub s_type: StructureType,
18350    pub next: *mut c_void,
18351    pub linear_color_attachment: Bool32,
18352}
18353
18354impl Default for PhysicalDeviceLinearColorAttachmentFeaturesNV {
18355    #[inline]
18356    fn default() -> Self {
18357        Self {
18358            s_type: StructureType::PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV,
18359            next: ptr::null_mut(),
18360            linear_color_attachment: Bool32::default(),
18361        }
18362    }
18363}
18364
18365unsafe impl Send for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
18366unsafe impl Sync for PhysicalDeviceLinearColorAttachmentFeaturesNV {}
18367
18368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10FeaturesKHR.html>
18369#[repr(C)]
18370#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18371pub struct PhysicalDeviceMaintenance10FeaturesKHR {
18372    pub s_type: StructureType,
18373    pub next: *mut c_void,
18374    pub maintenance10: Bool32,
18375}
18376
18377impl Default for PhysicalDeviceMaintenance10FeaturesKHR {
18378    #[inline]
18379    fn default() -> Self {
18380        Self {
18381            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR,
18382            next: ptr::null_mut(),
18383            maintenance10: Bool32::default(),
18384        }
18385    }
18386}
18387
18388unsafe impl Send for PhysicalDeviceMaintenance10FeaturesKHR {}
18389unsafe impl Sync for PhysicalDeviceMaintenance10FeaturesKHR {}
18390
18391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10PropertiesKHR.html>
18392#[repr(C)]
18393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18394pub struct PhysicalDeviceMaintenance10PropertiesKHR {
18395    pub s_type: StructureType,
18396    pub next: *mut c_void,
18397    pub rgba4_opaque_black_swizzled: Bool32,
18398    pub resolve_srgb_format_applies_transfer_function: Bool32,
18399    pub resolve_srgb_format_supports_transfer_function_control: Bool32,
18400}
18401
18402impl Default for PhysicalDeviceMaintenance10PropertiesKHR {
18403    #[inline]
18404    fn default() -> Self {
18405        Self {
18406            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR,
18407            next: ptr::null_mut(),
18408            rgba4_opaque_black_swizzled: Bool32::default(),
18409            resolve_srgb_format_applies_transfer_function: Bool32::default(),
18410            resolve_srgb_format_supports_transfer_function_control: Bool32::default(),
18411        }
18412    }
18413}
18414
18415unsafe impl Send for PhysicalDeviceMaintenance10PropertiesKHR {}
18416unsafe impl Sync for PhysicalDeviceMaintenance10PropertiesKHR {}
18417
18418/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html>
18419#[repr(C)]
18420#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18421pub struct PhysicalDeviceMaintenance3Properties {
18422    pub s_type: StructureType,
18423    pub next: *mut c_void,
18424    pub max_per_set_descriptors: u32,
18425    pub max_memory_allocation_size: DeviceSize,
18426}
18427
18428impl Default for PhysicalDeviceMaintenance3Properties {
18429    #[inline]
18430    fn default() -> Self {
18431        Self {
18432            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
18433            next: ptr::null_mut(),
18434            max_per_set_descriptors: u32::default(),
18435            max_memory_allocation_size: DeviceSize::default(),
18436        }
18437    }
18438}
18439
18440unsafe impl Send for PhysicalDeviceMaintenance3Properties {}
18441unsafe impl Sync for PhysicalDeviceMaintenance3Properties {}
18442
18443/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html>
18444#[repr(C)]
18445#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18446pub struct PhysicalDeviceMaintenance4Features {
18447    pub s_type: StructureType,
18448    pub next: *mut c_void,
18449    pub maintenance4: Bool32,
18450}
18451
18452impl Default for PhysicalDeviceMaintenance4Features {
18453    #[inline]
18454    fn default() -> Self {
18455        Self {
18456            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
18457            next: ptr::null_mut(),
18458            maintenance4: Bool32::default(),
18459        }
18460    }
18461}
18462
18463unsafe impl Send for PhysicalDeviceMaintenance4Features {}
18464unsafe impl Sync for PhysicalDeviceMaintenance4Features {}
18465
18466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html>
18467#[repr(C)]
18468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18469pub struct PhysicalDeviceMaintenance4Properties {
18470    pub s_type: StructureType,
18471    pub next: *mut c_void,
18472    pub max_buffer_size: DeviceSize,
18473}
18474
18475impl Default for PhysicalDeviceMaintenance4Properties {
18476    #[inline]
18477    fn default() -> Self {
18478        Self {
18479            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
18480            next: ptr::null_mut(),
18481            max_buffer_size: DeviceSize::default(),
18482        }
18483    }
18484}
18485
18486unsafe impl Send for PhysicalDeviceMaintenance4Properties {}
18487unsafe impl Sync for PhysicalDeviceMaintenance4Properties {}
18488
18489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html>
18490#[repr(C)]
18491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18492pub struct PhysicalDeviceMaintenance5Features {
18493    pub s_type: StructureType,
18494    pub next: *mut c_void,
18495    pub maintenance5: Bool32,
18496}
18497
18498impl Default for PhysicalDeviceMaintenance5Features {
18499    #[inline]
18500    fn default() -> Self {
18501        Self {
18502            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
18503            next: ptr::null_mut(),
18504            maintenance5: Bool32::default(),
18505        }
18506    }
18507}
18508
18509unsafe impl Send for PhysicalDeviceMaintenance5Features {}
18510unsafe impl Sync for PhysicalDeviceMaintenance5Features {}
18511
18512/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html>
18513#[repr(C)]
18514#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18515pub struct PhysicalDeviceMaintenance5Properties {
18516    pub s_type: StructureType,
18517    pub next: *mut c_void,
18518    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
18519    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
18520    pub depth_stencil_swizzle_one_support: Bool32,
18521    pub polygon_mode_point_size: Bool32,
18522    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
18523    pub non_strict_wide_lines_use_parallelogram: Bool32,
18524}
18525
18526impl Default for PhysicalDeviceMaintenance5Properties {
18527    #[inline]
18528    fn default() -> Self {
18529        Self {
18530            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
18531            next: ptr::null_mut(),
18532            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
18533            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
18534            depth_stencil_swizzle_one_support: Bool32::default(),
18535            polygon_mode_point_size: Bool32::default(),
18536            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
18537            non_strict_wide_lines_use_parallelogram: Bool32::default(),
18538        }
18539    }
18540}
18541
18542unsafe impl Send for PhysicalDeviceMaintenance5Properties {}
18543unsafe impl Sync for PhysicalDeviceMaintenance5Properties {}
18544
18545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html>
18546#[repr(C)]
18547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18548pub struct PhysicalDeviceMaintenance6Features {
18549    pub s_type: StructureType,
18550    pub next: *mut c_void,
18551    pub maintenance6: Bool32,
18552}
18553
18554impl Default for PhysicalDeviceMaintenance6Features {
18555    #[inline]
18556    fn default() -> Self {
18557        Self {
18558            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES,
18559            next: ptr::null_mut(),
18560            maintenance6: Bool32::default(),
18561        }
18562    }
18563}
18564
18565unsafe impl Send for PhysicalDeviceMaintenance6Features {}
18566unsafe impl Sync for PhysicalDeviceMaintenance6Features {}
18567
18568/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html>
18569#[repr(C)]
18570#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18571pub struct PhysicalDeviceMaintenance6Properties {
18572    pub s_type: StructureType,
18573    pub next: *mut c_void,
18574    pub block_texel_view_compatible_multiple_layers: Bool32,
18575    pub max_combined_image_sampler_descriptor_count: u32,
18576    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
18577}
18578
18579impl Default for PhysicalDeviceMaintenance6Properties {
18580    #[inline]
18581    fn default() -> Self {
18582        Self {
18583            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES,
18584            next: ptr::null_mut(),
18585            block_texel_view_compatible_multiple_layers: Bool32::default(),
18586            max_combined_image_sampler_descriptor_count: u32::default(),
18587            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
18588        }
18589    }
18590}
18591
18592unsafe impl Send for PhysicalDeviceMaintenance6Properties {}
18593unsafe impl Sync for PhysicalDeviceMaintenance6Properties {}
18594
18595/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html>
18596#[repr(C)]
18597#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18598pub struct PhysicalDeviceMaintenance7FeaturesKHR {
18599    pub s_type: StructureType,
18600    pub next: *mut c_void,
18601    pub maintenance7: Bool32,
18602}
18603
18604impl Default for PhysicalDeviceMaintenance7FeaturesKHR {
18605    #[inline]
18606    fn default() -> Self {
18607        Self {
18608            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR,
18609            next: ptr::null_mut(),
18610            maintenance7: Bool32::default(),
18611        }
18612    }
18613}
18614
18615unsafe impl Send for PhysicalDeviceMaintenance7FeaturesKHR {}
18616unsafe impl Sync for PhysicalDeviceMaintenance7FeaturesKHR {}
18617
18618/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html>
18619#[repr(C)]
18620#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18621pub struct PhysicalDeviceMaintenance7PropertiesKHR {
18622    pub s_type: StructureType,
18623    pub next: *mut c_void,
18624    pub robust_fragment_shading_rate_attachment_access: Bool32,
18625    pub separate_depth_stencil_attachment_access: Bool32,
18626    pub max_descriptor_set_total_uniform_buffers_dynamic: u32,
18627    pub max_descriptor_set_total_storage_buffers_dynamic: u32,
18628    pub max_descriptor_set_total_buffers_dynamic: u32,
18629    pub max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32,
18630    pub max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32,
18631    pub max_descriptor_set_update_after_bind_total_buffers_dynamic: u32,
18632}
18633
18634impl Default for PhysicalDeviceMaintenance7PropertiesKHR {
18635    #[inline]
18636    fn default() -> Self {
18637        Self {
18638            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR,
18639            next: ptr::null_mut(),
18640            robust_fragment_shading_rate_attachment_access: Bool32::default(),
18641            separate_depth_stencil_attachment_access: Bool32::default(),
18642            max_descriptor_set_total_uniform_buffers_dynamic: u32::default(),
18643            max_descriptor_set_total_storage_buffers_dynamic: u32::default(),
18644            max_descriptor_set_total_buffers_dynamic: u32::default(),
18645            max_descriptor_set_update_after_bind_total_uniform_buffers_dynamic: u32::default(),
18646            max_descriptor_set_update_after_bind_total_storage_buffers_dynamic: u32::default(),
18647            max_descriptor_set_update_after_bind_total_buffers_dynamic: u32::default(),
18648        }
18649    }
18650}
18651
18652unsafe impl Send for PhysicalDeviceMaintenance7PropertiesKHR {}
18653unsafe impl Sync for PhysicalDeviceMaintenance7PropertiesKHR {}
18654
18655/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html>
18656#[repr(C)]
18657#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18658pub struct PhysicalDeviceMaintenance8FeaturesKHR {
18659    pub s_type: StructureType,
18660    pub next: *mut c_void,
18661    pub maintenance8: Bool32,
18662}
18663
18664impl Default for PhysicalDeviceMaintenance8FeaturesKHR {
18665    #[inline]
18666    fn default() -> Self {
18667        Self {
18668            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR,
18669            next: ptr::null_mut(),
18670            maintenance8: Bool32::default(),
18671        }
18672    }
18673}
18674
18675unsafe impl Send for PhysicalDeviceMaintenance8FeaturesKHR {}
18676unsafe impl Sync for PhysicalDeviceMaintenance8FeaturesKHR {}
18677
18678/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9FeaturesKHR.html>
18679#[repr(C)]
18680#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18681pub struct PhysicalDeviceMaintenance9FeaturesKHR {
18682    pub s_type: StructureType,
18683    pub next: *mut c_void,
18684    pub maintenance9: Bool32,
18685}
18686
18687impl Default for PhysicalDeviceMaintenance9FeaturesKHR {
18688    #[inline]
18689    fn default() -> Self {
18690        Self {
18691            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR,
18692            next: ptr::null_mut(),
18693            maintenance9: Bool32::default(),
18694        }
18695    }
18696}
18697
18698unsafe impl Send for PhysicalDeviceMaintenance9FeaturesKHR {}
18699unsafe impl Sync for PhysicalDeviceMaintenance9FeaturesKHR {}
18700
18701/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9PropertiesKHR.html>
18702#[repr(C)]
18703#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18704pub struct PhysicalDeviceMaintenance9PropertiesKHR {
18705    pub s_type: StructureType,
18706    pub next: *mut c_void,
18707    pub image_2d_view_of_3d_sparse: Bool32,
18708    pub default_vertex_attribute_value: DefaultVertexAttributeValueKHR,
18709}
18710
18711impl Default for PhysicalDeviceMaintenance9PropertiesKHR {
18712    #[inline]
18713    fn default() -> Self {
18714        Self {
18715            s_type: StructureType::PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR,
18716            next: ptr::null_mut(),
18717            image_2d_view_of_3d_sparse: Bool32::default(),
18718            default_vertex_attribute_value: DefaultVertexAttributeValueKHR::default(),
18719        }
18720    }
18721}
18722
18723unsafe impl Send for PhysicalDeviceMaintenance9PropertiesKHR {}
18724unsafe impl Sync for PhysicalDeviceMaintenance9PropertiesKHR {}
18725
18726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html>
18727#[repr(C)]
18728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18729pub struct PhysicalDeviceMapMemoryPlacedFeaturesEXT {
18730    pub s_type: StructureType,
18731    pub next: *mut c_void,
18732    pub memory_map_placed: Bool32,
18733    pub memory_map_range_placed: Bool32,
18734    pub memory_unmap_reserve: Bool32,
18735}
18736
18737impl Default for PhysicalDeviceMapMemoryPlacedFeaturesEXT {
18738    #[inline]
18739    fn default() -> Self {
18740        Self {
18741            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT,
18742            next: ptr::null_mut(),
18743            memory_map_placed: Bool32::default(),
18744            memory_map_range_placed: Bool32::default(),
18745            memory_unmap_reserve: Bool32::default(),
18746        }
18747    }
18748}
18749
18750unsafe impl Send for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
18751unsafe impl Sync for PhysicalDeviceMapMemoryPlacedFeaturesEXT {}
18752
18753/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html>
18754#[repr(C)]
18755#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18756pub struct PhysicalDeviceMapMemoryPlacedPropertiesEXT {
18757    pub s_type: StructureType,
18758    pub next: *mut c_void,
18759    pub min_placed_memory_map_alignment: DeviceSize,
18760}
18761
18762impl Default for PhysicalDeviceMapMemoryPlacedPropertiesEXT {
18763    #[inline]
18764    fn default() -> Self {
18765        Self {
18766            s_type: StructureType::PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT,
18767            next: ptr::null_mut(),
18768            min_placed_memory_map_alignment: DeviceSize::default(),
18769        }
18770    }
18771}
18772
18773unsafe impl Send for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
18774unsafe impl Sync for PhysicalDeviceMapMemoryPlacedPropertiesEXT {}
18775
18776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html>
18777#[repr(C)]
18778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18779pub struct PhysicalDeviceMemoryBudgetPropertiesEXT {
18780    pub s_type: StructureType,
18781    pub next: *mut c_void,
18782    pub heap_budget: [DeviceSize; MAX_MEMORY_HEAPS as usize],
18783    pub heap_usage: [DeviceSize; MAX_MEMORY_HEAPS as usize],
18784}
18785
18786impl Default for PhysicalDeviceMemoryBudgetPropertiesEXT {
18787    #[inline]
18788    fn default() -> Self {
18789        Self {
18790            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
18791            next: ptr::null_mut(),
18792            heap_budget: [DeviceSize::default(); MAX_MEMORY_HEAPS],
18793            heap_usage: [DeviceSize::default(); MAX_MEMORY_HEAPS],
18794        }
18795    }
18796}
18797
18798unsafe impl Send for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18799unsafe impl Sync for PhysicalDeviceMemoryBudgetPropertiesEXT {}
18800
18801/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesEXT.html>
18802#[repr(C)]
18803#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18804pub struct PhysicalDeviceMemoryDecompressionFeaturesEXT {
18805    pub s_type: StructureType,
18806    pub next: *mut c_void,
18807    pub memory_decompression: Bool32,
18808}
18809
18810impl Default for PhysicalDeviceMemoryDecompressionFeaturesEXT {
18811    #[inline]
18812    fn default() -> Self {
18813        Self {
18814            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT,
18815            next: ptr::null_mut(),
18816            memory_decompression: Bool32::default(),
18817        }
18818    }
18819}
18820
18821unsafe impl Send for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18822unsafe impl Sync for PhysicalDeviceMemoryDecompressionFeaturesEXT {}
18823
18824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesEXT.html>
18825#[repr(C)]
18826#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18827pub struct PhysicalDeviceMemoryDecompressionPropertiesEXT {
18828    pub s_type: StructureType,
18829    pub next: *mut c_void,
18830    pub decompression_methods: MemoryDecompressionMethodFlagsEXT,
18831    pub max_decompression_indirect_count: u64,
18832}
18833
18834impl Default for PhysicalDeviceMemoryDecompressionPropertiesEXT {
18835    #[inline]
18836    fn default() -> Self {
18837        Self {
18838            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT,
18839            next: ptr::null_mut(),
18840            decompression_methods: MemoryDecompressionMethodFlagsEXT::default(),
18841            max_decompression_indirect_count: u64::default(),
18842        }
18843    }
18844}
18845
18846unsafe impl Send for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18847unsafe impl Sync for PhysicalDeviceMemoryDecompressionPropertiesEXT {}
18848
18849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html>
18850#[repr(C)]
18851#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18852pub struct PhysicalDeviceMemoryPriorityFeaturesEXT {
18853    pub s_type: StructureType,
18854    pub next: *mut c_void,
18855    pub memory_priority: Bool32,
18856}
18857
18858impl Default for PhysicalDeviceMemoryPriorityFeaturesEXT {
18859    #[inline]
18860    fn default() -> Self {
18861        Self {
18862            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
18863            next: ptr::null_mut(),
18864            memory_priority: Bool32::default(),
18865        }
18866    }
18867}
18868
18869unsafe impl Send for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18870unsafe impl Sync for PhysicalDeviceMemoryPriorityFeaturesEXT {}
18871
18872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html>
18873#[repr(C)]
18874#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
18875pub struct PhysicalDeviceMemoryProperties {
18876    pub memory_type_count: u32,
18877    pub memory_types: [MemoryType; MAX_MEMORY_TYPES as usize],
18878    pub memory_heap_count: u32,
18879    pub memory_heaps: [MemoryHeap; MAX_MEMORY_HEAPS as usize],
18880}
18881
18882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html>
18883#[repr(C)]
18884#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18885pub struct PhysicalDeviceMemoryProperties2 {
18886    pub s_type: StructureType,
18887    pub next: *mut c_void,
18888    pub memory_properties: PhysicalDeviceMemoryProperties,
18889}
18890
18891impl Default for PhysicalDeviceMemoryProperties2 {
18892    #[inline]
18893    fn default() -> Self {
18894        Self {
18895            s_type: StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
18896            next: ptr::null_mut(),
18897            memory_properties: PhysicalDeviceMemoryProperties::default(),
18898        }
18899    }
18900}
18901
18902unsafe impl Send for PhysicalDeviceMemoryProperties2 {}
18903unsafe impl Sync for PhysicalDeviceMemoryProperties2 {}
18904
18905/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html>
18906#[repr(C)]
18907#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18908pub struct PhysicalDeviceMeshShaderFeaturesEXT {
18909    pub s_type: StructureType,
18910    pub next: *mut c_void,
18911    pub task_shader: Bool32,
18912    pub mesh_shader: Bool32,
18913    pub multiview_mesh_shader: Bool32,
18914    pub primitive_fragment_shading_rate_mesh_shader: Bool32,
18915    pub mesh_shader_queries: Bool32,
18916}
18917
18918impl Default for PhysicalDeviceMeshShaderFeaturesEXT {
18919    #[inline]
18920    fn default() -> Self {
18921        Self {
18922            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT,
18923            next: ptr::null_mut(),
18924            task_shader: Bool32::default(),
18925            mesh_shader: Bool32::default(),
18926            multiview_mesh_shader: Bool32::default(),
18927            primitive_fragment_shading_rate_mesh_shader: Bool32::default(),
18928            mesh_shader_queries: Bool32::default(),
18929        }
18930    }
18931}
18932
18933unsafe impl Send for PhysicalDeviceMeshShaderFeaturesEXT {}
18934unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesEXT {}
18935
18936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html>
18937#[repr(C)]
18938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18939pub struct PhysicalDeviceMeshShaderFeaturesNV {
18940    pub s_type: StructureType,
18941    pub next: *mut c_void,
18942    pub task_shader: Bool32,
18943    pub mesh_shader: Bool32,
18944}
18945
18946impl Default for PhysicalDeviceMeshShaderFeaturesNV {
18947    #[inline]
18948    fn default() -> Self {
18949        Self {
18950            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
18951            next: ptr::null_mut(),
18952            task_shader: Bool32::default(),
18953            mesh_shader: Bool32::default(),
18954        }
18955    }
18956}
18957
18958unsafe impl Send for PhysicalDeviceMeshShaderFeaturesNV {}
18959unsafe impl Sync for PhysicalDeviceMeshShaderFeaturesNV {}
18960
18961/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html>
18962#[repr(C)]
18963#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
18964pub struct PhysicalDeviceMeshShaderPropertiesEXT {
18965    pub s_type: StructureType,
18966    pub next: *mut c_void,
18967    pub max_task_work_group_total_count: u32,
18968    pub max_task_work_group_count: [u32; 3],
18969    pub max_task_work_group_invocations: u32,
18970    pub max_task_work_group_size: [u32; 3],
18971    pub max_task_payload_size: u32,
18972    pub max_task_shared_memory_size: u32,
18973    pub max_task_payload_and_shared_memory_size: u32,
18974    pub max_mesh_work_group_total_count: u32,
18975    pub max_mesh_work_group_count: [u32; 3],
18976    pub max_mesh_work_group_invocations: u32,
18977    pub max_mesh_work_group_size: [u32; 3],
18978    pub max_mesh_shared_memory_size: u32,
18979    pub max_mesh_payload_and_shared_memory_size: u32,
18980    pub max_mesh_output_memory_size: u32,
18981    pub max_mesh_payload_and_output_memory_size: u32,
18982    pub max_mesh_output_components: u32,
18983    pub max_mesh_output_vertices: u32,
18984    pub max_mesh_output_primitives: u32,
18985    pub max_mesh_output_layers: u32,
18986    pub max_mesh_multiview_view_count: u32,
18987    pub mesh_output_per_vertex_granularity: u32,
18988    pub mesh_output_per_primitive_granularity: u32,
18989    pub max_preferred_task_work_group_invocations: u32,
18990    pub max_preferred_mesh_work_group_invocations: u32,
18991    pub prefers_local_invocation_vertex_output: Bool32,
18992    pub prefers_local_invocation_primitive_output: Bool32,
18993    pub prefers_compact_vertex_output: Bool32,
18994    pub prefers_compact_primitive_output: Bool32,
18995}
18996
18997impl Default for PhysicalDeviceMeshShaderPropertiesEXT {
18998    #[inline]
18999    fn default() -> Self {
19000        Self {
19001            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT,
19002            next: ptr::null_mut(),
19003            max_task_work_group_total_count: u32::default(),
19004            max_task_work_group_count: [u32::default(); 3],
19005            max_task_work_group_invocations: u32::default(),
19006            max_task_work_group_size: [u32::default(); 3],
19007            max_task_payload_size: u32::default(),
19008            max_task_shared_memory_size: u32::default(),
19009            max_task_payload_and_shared_memory_size: u32::default(),
19010            max_mesh_work_group_total_count: u32::default(),
19011            max_mesh_work_group_count: [u32::default(); 3],
19012            max_mesh_work_group_invocations: u32::default(),
19013            max_mesh_work_group_size: [u32::default(); 3],
19014            max_mesh_shared_memory_size: u32::default(),
19015            max_mesh_payload_and_shared_memory_size: u32::default(),
19016            max_mesh_output_memory_size: u32::default(),
19017            max_mesh_payload_and_output_memory_size: u32::default(),
19018            max_mesh_output_components: u32::default(),
19019            max_mesh_output_vertices: u32::default(),
19020            max_mesh_output_primitives: u32::default(),
19021            max_mesh_output_layers: u32::default(),
19022            max_mesh_multiview_view_count: u32::default(),
19023            mesh_output_per_vertex_granularity: u32::default(),
19024            mesh_output_per_primitive_granularity: u32::default(),
19025            max_preferred_task_work_group_invocations: u32::default(),
19026            max_preferred_mesh_work_group_invocations: u32::default(),
19027            prefers_local_invocation_vertex_output: Bool32::default(),
19028            prefers_local_invocation_primitive_output: Bool32::default(),
19029            prefers_compact_vertex_output: Bool32::default(),
19030            prefers_compact_primitive_output: Bool32::default(),
19031        }
19032    }
19033}
19034
19035unsafe impl Send for PhysicalDeviceMeshShaderPropertiesEXT {}
19036unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesEXT {}
19037
19038/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html>
19039#[repr(C)]
19040#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19041pub struct PhysicalDeviceMeshShaderPropertiesNV {
19042    pub s_type: StructureType,
19043    pub next: *mut c_void,
19044    pub max_draw_mesh_tasks_count: u32,
19045    pub max_task_work_group_invocations: u32,
19046    pub max_task_work_group_size: [u32; 3],
19047    pub max_task_total_memory_size: u32,
19048    pub max_task_output_count: u32,
19049    pub max_mesh_work_group_invocations: u32,
19050    pub max_mesh_work_group_size: [u32; 3],
19051    pub max_mesh_total_memory_size: u32,
19052    pub max_mesh_output_vertices: u32,
19053    pub max_mesh_output_primitives: u32,
19054    pub max_mesh_multiview_view_count: u32,
19055    pub mesh_output_per_vertex_granularity: u32,
19056    pub mesh_output_per_primitive_granularity: u32,
19057}
19058
19059impl Default for PhysicalDeviceMeshShaderPropertiesNV {
19060    #[inline]
19061    fn default() -> Self {
19062        Self {
19063            s_type: StructureType::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
19064            next: ptr::null_mut(),
19065            max_draw_mesh_tasks_count: u32::default(),
19066            max_task_work_group_invocations: u32::default(),
19067            max_task_work_group_size: [u32::default(); 3],
19068            max_task_total_memory_size: u32::default(),
19069            max_task_output_count: u32::default(),
19070            max_mesh_work_group_invocations: u32::default(),
19071            max_mesh_work_group_size: [u32::default(); 3],
19072            max_mesh_total_memory_size: u32::default(),
19073            max_mesh_output_vertices: u32::default(),
19074            max_mesh_output_primitives: u32::default(),
19075            max_mesh_multiview_view_count: u32::default(),
19076            mesh_output_per_vertex_granularity: u32::default(),
19077            mesh_output_per_primitive_granularity: u32::default(),
19078        }
19079    }
19080}
19081
19082unsafe impl Send for PhysicalDeviceMeshShaderPropertiesNV {}
19083unsafe impl Sync for PhysicalDeviceMeshShaderPropertiesNV {}
19084
19085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html>
19086#[repr(C)]
19087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19088pub struct PhysicalDeviceMultiDrawFeaturesEXT {
19089    pub s_type: StructureType,
19090    pub next: *mut c_void,
19091    pub multi_draw: Bool32,
19092}
19093
19094impl Default for PhysicalDeviceMultiDrawFeaturesEXT {
19095    #[inline]
19096    fn default() -> Self {
19097        Self {
19098            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
19099            next: ptr::null_mut(),
19100            multi_draw: Bool32::default(),
19101        }
19102    }
19103}
19104
19105unsafe impl Send for PhysicalDeviceMultiDrawFeaturesEXT {}
19106unsafe impl Sync for PhysicalDeviceMultiDrawFeaturesEXT {}
19107
19108/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html>
19109#[repr(C)]
19110#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19111pub struct PhysicalDeviceMultiDrawPropertiesEXT {
19112    pub s_type: StructureType,
19113    pub next: *mut c_void,
19114    pub max_multi_draw_count: u32,
19115}
19116
19117impl Default for PhysicalDeviceMultiDrawPropertiesEXT {
19118    #[inline]
19119    fn default() -> Self {
19120        Self {
19121            s_type: StructureType::PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT,
19122            next: ptr::null_mut(),
19123            max_multi_draw_count: u32::default(),
19124        }
19125    }
19126}
19127
19128unsafe impl Send for PhysicalDeviceMultiDrawPropertiesEXT {}
19129unsafe impl Sync for PhysicalDeviceMultiDrawPropertiesEXT {}
19130
19131/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html>
19132#[repr(C)]
19133#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19134pub struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
19135    pub s_type: StructureType,
19136    pub next: *mut c_void,
19137    pub multisampled_render_to_single_sampled: Bool32,
19138}
19139
19140impl Default for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
19141    #[inline]
19142    fn default() -> Self {
19143        Self {
19144            s_type:
19145                StructureType::PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT,
19146            next: ptr::null_mut(),
19147            multisampled_render_to_single_sampled: Bool32::default(),
19148        }
19149    }
19150}
19151
19152unsafe impl Send for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
19153unsafe impl Sync for PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {}
19154
19155/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html>
19156#[repr(C)]
19157#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19158pub struct PhysicalDeviceMultiviewFeatures {
19159    pub s_type: StructureType,
19160    pub next: *mut c_void,
19161    pub multiview: Bool32,
19162    pub multiview_geometry_shader: Bool32,
19163    pub multiview_tessellation_shader: Bool32,
19164}
19165
19166impl Default for PhysicalDeviceMultiviewFeatures {
19167    #[inline]
19168    fn default() -> Self {
19169        Self {
19170            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
19171            next: ptr::null_mut(),
19172            multiview: Bool32::default(),
19173            multiview_geometry_shader: Bool32::default(),
19174            multiview_tessellation_shader: Bool32::default(),
19175        }
19176    }
19177}
19178
19179unsafe impl Send for PhysicalDeviceMultiviewFeatures {}
19180unsafe impl Sync for PhysicalDeviceMultiviewFeatures {}
19181
19182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html>
19183#[repr(C)]
19184#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19185pub struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
19186    pub s_type: StructureType,
19187    pub next: *mut c_void,
19188    pub per_view_position_all_components: Bool32,
19189}
19190
19191impl Default for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
19192    #[inline]
19193    fn default() -> Self {
19194        Self {
19195            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
19196            next: ptr::null_mut(),
19197            per_view_position_all_components: Bool32::default(),
19198        }
19199    }
19200}
19201
19202unsafe impl Send for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
19203unsafe impl Sync for PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
19204
19205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html>
19206#[repr(C)]
19207#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19208pub struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
19209    pub s_type: StructureType,
19210    pub next: *mut c_void,
19211    pub multiview_per_view_render_areas: Bool32,
19212}
19213
19214impl Default for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
19215    #[inline]
19216    fn default() -> Self {
19217        Self {
19218            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM,
19219            next: ptr::null_mut(),
19220            multiview_per_view_render_areas: Bool32::default(),
19221        }
19222    }
19223}
19224
19225unsafe impl Send for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
19226unsafe impl Sync for PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {}
19227
19228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html>
19229#[repr(C)]
19230#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19231pub struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
19232    pub s_type: StructureType,
19233    pub next: *mut c_void,
19234    pub multiview_per_view_viewports: Bool32,
19235}
19236
19237impl Default for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
19238    #[inline]
19239    fn default() -> Self {
19240        Self {
19241            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM,
19242            next: ptr::null_mut(),
19243            multiview_per_view_viewports: Bool32::default(),
19244        }
19245    }
19246}
19247
19248unsafe impl Send for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
19249unsafe impl Sync for PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {}
19250
19251/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html>
19252#[repr(C)]
19253#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19254pub struct PhysicalDeviceMultiviewProperties {
19255    pub s_type: StructureType,
19256    pub next: *mut c_void,
19257    pub max_multiview_view_count: u32,
19258    pub max_multiview_instance_index: u32,
19259}
19260
19261impl Default for PhysicalDeviceMultiviewProperties {
19262    #[inline]
19263    fn default() -> Self {
19264        Self {
19265            s_type: StructureType::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
19266            next: ptr::null_mut(),
19267            max_multiview_view_count: u32::default(),
19268            max_multiview_instance_index: u32::default(),
19269        }
19270    }
19271}
19272
19273unsafe impl Send for PhysicalDeviceMultiviewProperties {}
19274unsafe impl Sync for PhysicalDeviceMultiviewProperties {}
19275
19276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html>
19277#[repr(C)]
19278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19279pub struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
19280    pub s_type: StructureType,
19281    pub next: *mut c_void,
19282    pub mutable_descriptor_type: Bool32,
19283}
19284
19285impl Default for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {
19286    #[inline]
19287    fn default() -> Self {
19288        Self {
19289            s_type: StructureType::PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
19290            next: ptr::null_mut(),
19291            mutable_descriptor_type: Bool32::default(),
19292        }
19293    }
19294}
19295
19296unsafe impl Send for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
19297unsafe impl Sync for PhysicalDeviceMutableDescriptorTypeFeaturesEXT {}
19298
19299/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html>
19300#[repr(C)]
19301#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19302pub struct PhysicalDeviceNestedCommandBufferFeaturesEXT {
19303    pub s_type: StructureType,
19304    pub next: *mut c_void,
19305    pub nested_command_buffer: Bool32,
19306    pub nested_command_buffer_rendering: Bool32,
19307    pub nested_command_buffer_simultaneous_use: Bool32,
19308}
19309
19310impl Default for PhysicalDeviceNestedCommandBufferFeaturesEXT {
19311    #[inline]
19312    fn default() -> Self {
19313        Self {
19314            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT,
19315            next: ptr::null_mut(),
19316            nested_command_buffer: Bool32::default(),
19317            nested_command_buffer_rendering: Bool32::default(),
19318            nested_command_buffer_simultaneous_use: Bool32::default(),
19319        }
19320    }
19321}
19322
19323unsafe impl Send for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
19324unsafe impl Sync for PhysicalDeviceNestedCommandBufferFeaturesEXT {}
19325
19326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html>
19327#[repr(C)]
19328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19329pub struct PhysicalDeviceNestedCommandBufferPropertiesEXT {
19330    pub s_type: StructureType,
19331    pub next: *mut c_void,
19332    pub max_command_buffer_nesting_level: u32,
19333}
19334
19335impl Default for PhysicalDeviceNestedCommandBufferPropertiesEXT {
19336    #[inline]
19337    fn default() -> Self {
19338        Self {
19339            s_type: StructureType::PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT,
19340            next: ptr::null_mut(),
19341            max_command_buffer_nesting_level: u32::default(),
19342        }
19343    }
19344}
19345
19346unsafe impl Send for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
19347unsafe impl Sync for PhysicalDeviceNestedCommandBufferPropertiesEXT {}
19348
19349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html>
19350#[repr(C)]
19351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19352pub struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
19353    pub s_type: StructureType,
19354    pub next: *mut c_void,
19355    pub non_seamless_cube_map: Bool32,
19356}
19357
19358impl Default for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
19359    #[inline]
19360    fn default() -> Self {
19361        Self {
19362            s_type: StructureType::PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
19363            next: ptr::null_mut(),
19364            non_seamless_cube_map: Bool32::default(),
19365        }
19366    }
19367}
19368
19369unsafe impl Send for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
19370unsafe impl Sync for PhysicalDeviceNonSeamlessCubeMapFeaturesEXT {}
19371
19372/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html>
19373#[repr(C)]
19374#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19375pub struct PhysicalDeviceOpacityMicromapFeaturesEXT {
19376    pub s_type: StructureType,
19377    pub next: *mut c_void,
19378    pub micromap: Bool32,
19379    pub micromap_capture_replay: Bool32,
19380    pub micromap_host_commands: Bool32,
19381}
19382
19383impl Default for PhysicalDeviceOpacityMicromapFeaturesEXT {
19384    #[inline]
19385    fn default() -> Self {
19386        Self {
19387            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT,
19388            next: ptr::null_mut(),
19389            micromap: Bool32::default(),
19390            micromap_capture_replay: Bool32::default(),
19391            micromap_host_commands: Bool32::default(),
19392        }
19393    }
19394}
19395
19396unsafe impl Send for PhysicalDeviceOpacityMicromapFeaturesEXT {}
19397unsafe impl Sync for PhysicalDeviceOpacityMicromapFeaturesEXT {}
19398
19399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html>
19400#[repr(C)]
19401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19402pub struct PhysicalDeviceOpacityMicromapPropertiesEXT {
19403    pub s_type: StructureType,
19404    pub next: *mut c_void,
19405    pub max_opacity2_state_subdivision_level: u32,
19406    pub max_opacity4_state_subdivision_level: u32,
19407}
19408
19409impl Default for PhysicalDeviceOpacityMicromapPropertiesEXT {
19410    #[inline]
19411    fn default() -> Self {
19412        Self {
19413            s_type: StructureType::PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT,
19414            next: ptr::null_mut(),
19415            max_opacity2_state_subdivision_level: u32::default(),
19416            max_opacity4_state_subdivision_level: u32::default(),
19417        }
19418    }
19419}
19420
19421unsafe impl Send for PhysicalDeviceOpacityMicromapPropertiesEXT {}
19422unsafe impl Sync for PhysicalDeviceOpacityMicromapPropertiesEXT {}
19423
19424/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html>
19425#[repr(C)]
19426#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19427pub struct PhysicalDeviceOpticalFlowFeaturesNV {
19428    pub s_type: StructureType,
19429    pub next: *mut c_void,
19430    pub optical_flow: Bool32,
19431}
19432
19433impl Default for PhysicalDeviceOpticalFlowFeaturesNV {
19434    #[inline]
19435    fn default() -> Self {
19436        Self {
19437            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV,
19438            next: ptr::null_mut(),
19439            optical_flow: Bool32::default(),
19440        }
19441    }
19442}
19443
19444unsafe impl Send for PhysicalDeviceOpticalFlowFeaturesNV {}
19445unsafe impl Sync for PhysicalDeviceOpticalFlowFeaturesNV {}
19446
19447/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html>
19448#[repr(C)]
19449#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19450pub struct PhysicalDeviceOpticalFlowPropertiesNV {
19451    pub s_type: StructureType,
19452    pub next: *mut c_void,
19453    pub supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV,
19454    pub supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV,
19455    pub hint_supported: Bool32,
19456    pub cost_supported: Bool32,
19457    pub bidirectional_flow_supported: Bool32,
19458    pub global_flow_supported: Bool32,
19459    pub min_width: u32,
19460    pub min_height: u32,
19461    pub max_width: u32,
19462    pub max_height: u32,
19463    pub max_num_regions_of_interest: u32,
19464}
19465
19466impl Default for PhysicalDeviceOpticalFlowPropertiesNV {
19467    #[inline]
19468    fn default() -> Self {
19469        Self {
19470            s_type: StructureType::PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV,
19471            next: ptr::null_mut(),
19472            supported_output_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
19473            supported_hint_grid_sizes: OpticalFlowGridSizeFlagsNV::default(),
19474            hint_supported: Bool32::default(),
19475            cost_supported: Bool32::default(),
19476            bidirectional_flow_supported: Bool32::default(),
19477            global_flow_supported: Bool32::default(),
19478            min_width: u32::default(),
19479            min_height: u32::default(),
19480            max_width: u32::default(),
19481            max_height: u32::default(),
19482            max_num_regions_of_interest: u32::default(),
19483        }
19484    }
19485}
19486
19487unsafe impl Send for PhysicalDeviceOpticalFlowPropertiesNV {}
19488unsafe impl Sync for PhysicalDeviceOpticalFlowPropertiesNV {}
19489
19490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html>
19491#[repr(C)]
19492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19493pub struct PhysicalDevicePCIBusInfoPropertiesEXT {
19494    pub s_type: StructureType,
19495    pub next: *mut c_void,
19496    pub pci_domain: u32,
19497    pub pci_bus: u32,
19498    pub pci_device: u32,
19499    pub pci_function: u32,
19500}
19501
19502impl Default for PhysicalDevicePCIBusInfoPropertiesEXT {
19503    #[inline]
19504    fn default() -> Self {
19505        Self {
19506            s_type: StructureType::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
19507            next: ptr::null_mut(),
19508            pci_domain: u32::default(),
19509            pci_bus: u32::default(),
19510            pci_device: u32::default(),
19511            pci_function: u32::default(),
19512        }
19513    }
19514}
19515
19516unsafe impl Send for PhysicalDevicePCIBusInfoPropertiesEXT {}
19517unsafe impl Sync for PhysicalDevicePCIBusInfoPropertiesEXT {}
19518
19519/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html>
19520#[repr(C)]
19521#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19522pub struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
19523    pub s_type: StructureType,
19524    pub next: *mut c_void,
19525    pub pageable_device_local_memory: Bool32,
19526}
19527
19528impl Default for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
19529    #[inline]
19530    fn default() -> Self {
19531        Self {
19532            s_type: StructureType::PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
19533            next: ptr::null_mut(),
19534            pageable_device_local_memory: Bool32::default(),
19535        }
19536    }
19537}
19538
19539unsafe impl Send for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
19540unsafe impl Sync for PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {}
19541
19542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html>
19543#[repr(C)]
19544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19545pub struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
19546    pub s_type: StructureType,
19547    pub next: *mut c_void,
19548    pub partitioned_acceleration_structure: Bool32,
19549}
19550
19551impl Default for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {
19552    #[inline]
19553    fn default() -> Self {
19554        Self {
19555            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV,
19556            next: ptr::null_mut(),
19557            partitioned_acceleration_structure: Bool32::default(),
19558        }
19559    }
19560}
19561
19562unsafe impl Send for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
19563unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructureFeaturesNV {}
19564
19565/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html>
19566#[repr(C)]
19567#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19568pub struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
19569    pub s_type: StructureType,
19570    pub next: *mut c_void,
19571    pub max_partition_count: u32,
19572}
19573
19574impl Default for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {
19575    #[inline]
19576    fn default() -> Self {
19577        Self {
19578            s_type: StructureType::PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV,
19579            next: ptr::null_mut(),
19580            max_partition_count: u32::default(),
19581        }
19582    }
19583}
19584
19585unsafe impl Send for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
19586unsafe impl Sync for PhysicalDevicePartitionedAccelerationStructurePropertiesNV {}
19587
19588/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html>
19589#[repr(C)]
19590#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19591pub struct PhysicalDevicePerStageDescriptorSetFeaturesNV {
19592    pub s_type: StructureType,
19593    pub next: *mut c_void,
19594    pub per_stage_descriptor_set: Bool32,
19595    pub dynamic_pipeline_layout: Bool32,
19596}
19597
19598impl Default for PhysicalDevicePerStageDescriptorSetFeaturesNV {
19599    #[inline]
19600    fn default() -> Self {
19601        Self {
19602            s_type: StructureType::PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV,
19603            next: ptr::null_mut(),
19604            per_stage_descriptor_set: Bool32::default(),
19605            dynamic_pipeline_layout: Bool32::default(),
19606        }
19607    }
19608}
19609
19610unsafe impl Send for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
19611unsafe impl Sync for PhysicalDevicePerStageDescriptorSetFeaturesNV {}
19612
19613/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionFeaturesARM.html>
19614#[repr(C)]
19615#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19616pub struct PhysicalDevicePerformanceCountersByRegionFeaturesARM {
19617    pub s_type: StructureType,
19618    pub next: *mut c_void,
19619    pub performance_counters_by_region: Bool32,
19620}
19621
19622impl Default for PhysicalDevicePerformanceCountersByRegionFeaturesARM {
19623    #[inline]
19624    fn default() -> Self {
19625        Self {
19626            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM,
19627            next: ptr::null_mut(),
19628            performance_counters_by_region: Bool32::default(),
19629        }
19630    }
19631}
19632
19633unsafe impl Send for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
19634unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionFeaturesARM {}
19635
19636/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionPropertiesARM.html>
19637#[repr(C)]
19638#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19639pub struct PhysicalDevicePerformanceCountersByRegionPropertiesARM {
19640    pub s_type: StructureType,
19641    pub next: *mut c_void,
19642    pub max_per_region_performance_counters: u32,
19643    pub performance_counter_region_size: Extent2D,
19644    pub row_stride_alignment: u32,
19645    pub region_alignment: u32,
19646    pub identity_transform_order: Bool32,
19647}
19648
19649impl Default for PhysicalDevicePerformanceCountersByRegionPropertiesARM {
19650    #[inline]
19651    fn default() -> Self {
19652        Self {
19653            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM,
19654            next: ptr::null_mut(),
19655            max_per_region_performance_counters: u32::default(),
19656            performance_counter_region_size: Extent2D::default(),
19657            row_stride_alignment: u32::default(),
19658            region_alignment: u32::default(),
19659            identity_transform_order: Bool32::default(),
19660        }
19661    }
19662}
19663
19664unsafe impl Send for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
19665unsafe impl Sync for PhysicalDevicePerformanceCountersByRegionPropertiesARM {}
19666
19667/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html>
19668#[repr(C)]
19669#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19670pub struct PhysicalDevicePerformanceQueryFeaturesKHR {
19671    pub s_type: StructureType,
19672    pub next: *mut c_void,
19673    pub performance_counter_query_pools: Bool32,
19674    pub performance_counter_multiple_query_pools: Bool32,
19675}
19676
19677impl Default for PhysicalDevicePerformanceQueryFeaturesKHR {
19678    #[inline]
19679    fn default() -> Self {
19680        Self {
19681            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
19682            next: ptr::null_mut(),
19683            performance_counter_query_pools: Bool32::default(),
19684            performance_counter_multiple_query_pools: Bool32::default(),
19685        }
19686    }
19687}
19688
19689unsafe impl Send for PhysicalDevicePerformanceQueryFeaturesKHR {}
19690unsafe impl Sync for PhysicalDevicePerformanceQueryFeaturesKHR {}
19691
19692/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html>
19693#[repr(C)]
19694#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19695pub struct PhysicalDevicePerformanceQueryPropertiesKHR {
19696    pub s_type: StructureType,
19697    pub next: *mut c_void,
19698    pub allow_command_buffer_query_copies: Bool32,
19699}
19700
19701impl Default for PhysicalDevicePerformanceQueryPropertiesKHR {
19702    #[inline]
19703    fn default() -> Self {
19704        Self {
19705            s_type: StructureType::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
19706            next: ptr::null_mut(),
19707            allow_command_buffer_query_copies: Bool32::default(),
19708        }
19709    }
19710}
19711
19712unsafe impl Send for PhysicalDevicePerformanceQueryPropertiesKHR {}
19713unsafe impl Sync for PhysicalDevicePerformanceQueryPropertiesKHR {}
19714
19715/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html>
19716#[repr(C)]
19717#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19718pub struct PhysicalDevicePipelineBinaryFeaturesKHR {
19719    pub s_type: StructureType,
19720    pub next: *mut c_void,
19721    pub pipeline_binaries: Bool32,
19722}
19723
19724impl Default for PhysicalDevicePipelineBinaryFeaturesKHR {
19725    #[inline]
19726    fn default() -> Self {
19727        Self {
19728            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR,
19729            next: ptr::null_mut(),
19730            pipeline_binaries: Bool32::default(),
19731        }
19732    }
19733}
19734
19735unsafe impl Send for PhysicalDevicePipelineBinaryFeaturesKHR {}
19736unsafe impl Sync for PhysicalDevicePipelineBinaryFeaturesKHR {}
19737
19738/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html>
19739#[repr(C)]
19740#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19741pub struct PhysicalDevicePipelineBinaryPropertiesKHR {
19742    pub s_type: StructureType,
19743    pub next: *mut c_void,
19744    pub pipeline_binary_internal_cache: Bool32,
19745    pub pipeline_binary_internal_cache_control: Bool32,
19746    pub pipeline_binary_prefers_internal_cache: Bool32,
19747    pub pipeline_binary_precompiled_internal_cache: Bool32,
19748    pub pipeline_binary_compressed_data: Bool32,
19749}
19750
19751impl Default for PhysicalDevicePipelineBinaryPropertiesKHR {
19752    #[inline]
19753    fn default() -> Self {
19754        Self {
19755            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR,
19756            next: ptr::null_mut(),
19757            pipeline_binary_internal_cache: Bool32::default(),
19758            pipeline_binary_internal_cache_control: Bool32::default(),
19759            pipeline_binary_prefers_internal_cache: Bool32::default(),
19760            pipeline_binary_precompiled_internal_cache: Bool32::default(),
19761            pipeline_binary_compressed_data: Bool32::default(),
19762        }
19763    }
19764}
19765
19766unsafe impl Send for PhysicalDevicePipelineBinaryPropertiesKHR {}
19767unsafe impl Sync for PhysicalDevicePipelineBinaryPropertiesKHR {}
19768
19769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC.html>
19770#[repr(C)]
19771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19772pub struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
19773    pub s_type: StructureType,
19774    pub next: *mut c_void,
19775    pub pipeline_cache_incremental_mode: Bool32,
19776}
19777
19778impl Default for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {
19779    #[inline]
19780    fn default() -> Self {
19781        Self {
19782            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC,
19783            next: ptr::null_mut(),
19784            pipeline_cache_incremental_mode: Bool32::default(),
19785        }
19786    }
19787}
19788
19789unsafe impl Send for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
19790unsafe impl Sync for PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC {}
19791
19792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html>
19793#[repr(C)]
19794#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19795pub struct PhysicalDevicePipelineCreationCacheControlFeatures {
19796    pub s_type: StructureType,
19797    pub next: *mut c_void,
19798    pub pipeline_creation_cache_control: Bool32,
19799}
19800
19801impl Default for PhysicalDevicePipelineCreationCacheControlFeatures {
19802    #[inline]
19803    fn default() -> Self {
19804        Self {
19805            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
19806            next: ptr::null_mut(),
19807            pipeline_creation_cache_control: Bool32::default(),
19808        }
19809    }
19810}
19811
19812unsafe impl Send for PhysicalDevicePipelineCreationCacheControlFeatures {}
19813unsafe impl Sync for PhysicalDevicePipelineCreationCacheControlFeatures {}
19814
19815/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html>
19816#[repr(C)]
19817#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19818pub struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19819    pub s_type: StructureType,
19820    pub next: *mut c_void,
19821    pub pipeline_executable_info: Bool32,
19822}
19823
19824impl Default for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
19825    #[inline]
19826    fn default() -> Self {
19827        Self {
19828            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
19829            next: ptr::null_mut(),
19830            pipeline_executable_info: Bool32::default(),
19831        }
19832    }
19833}
19834
19835unsafe impl Send for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19836unsafe impl Sync for PhysicalDevicePipelineExecutablePropertiesFeaturesKHR {}
19837
19838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html>
19839#[repr(C)]
19840#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19841pub struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19842    pub s_type: StructureType,
19843    pub next: *mut c_void,
19844    pub pipeline_library_group_handles: Bool32,
19845}
19846
19847impl Default for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
19848    #[inline]
19849    fn default() -> Self {
19850        Self {
19851            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
19852            next: ptr::null_mut(),
19853            pipeline_library_group_handles: Bool32::default(),
19854        }
19855    }
19856}
19857
19858unsafe impl Send for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19859unsafe impl Sync for PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {}
19860
19861/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html>
19862#[repr(C)]
19863#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19864pub struct PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19865    pub s_type: StructureType,
19866    pub next: *mut c_void,
19867    pub pipeline_opacity_micromap: Bool32,
19868}
19869
19870impl Default for PhysicalDevicePipelineOpacityMicromapFeaturesARM {
19871    #[inline]
19872    fn default() -> Self {
19873        Self {
19874            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM,
19875            next: ptr::null_mut(),
19876            pipeline_opacity_micromap: Bool32::default(),
19877        }
19878    }
19879}
19880
19881unsafe impl Send for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19882unsafe impl Sync for PhysicalDevicePipelineOpacityMicromapFeaturesARM {}
19883
19884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html>
19885#[repr(C)]
19886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19887pub struct PhysicalDevicePipelinePropertiesFeaturesEXT {
19888    pub s_type: StructureType,
19889    pub next: *mut c_void,
19890    pub pipeline_properties_identifier: Bool32,
19891}
19892
19893impl Default for PhysicalDevicePipelinePropertiesFeaturesEXT {
19894    #[inline]
19895    fn default() -> Self {
19896        Self {
19897            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT,
19898            next: ptr::null_mut(),
19899            pipeline_properties_identifier: Bool32::default(),
19900        }
19901    }
19902}
19903
19904unsafe impl Send for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19905unsafe impl Sync for PhysicalDevicePipelinePropertiesFeaturesEXT {}
19906
19907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html>
19908#[repr(C)]
19909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19910pub struct PhysicalDevicePipelineProtectedAccessFeatures {
19911    pub s_type: StructureType,
19912    pub next: *mut c_void,
19913    pub pipeline_protected_access: Bool32,
19914}
19915
19916impl Default for PhysicalDevicePipelineProtectedAccessFeatures {
19917    #[inline]
19918    fn default() -> Self {
19919        Self {
19920            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
19921            next: ptr::null_mut(),
19922            pipeline_protected_access: Bool32::default(),
19923        }
19924    }
19925}
19926
19927unsafe impl Send for PhysicalDevicePipelineProtectedAccessFeatures {}
19928unsafe impl Sync for PhysicalDevicePipelineProtectedAccessFeatures {}
19929
19930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html>
19931#[repr(C)]
19932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19933pub struct PhysicalDevicePipelineRobustnessFeatures {
19934    pub s_type: StructureType,
19935    pub next: *mut c_void,
19936    pub pipeline_robustness: Bool32,
19937}
19938
19939impl Default for PhysicalDevicePipelineRobustnessFeatures {
19940    #[inline]
19941    fn default() -> Self {
19942        Self {
19943            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES,
19944            next: ptr::null_mut(),
19945            pipeline_robustness: Bool32::default(),
19946        }
19947    }
19948}
19949
19950unsafe impl Send for PhysicalDevicePipelineRobustnessFeatures {}
19951unsafe impl Sync for PhysicalDevicePipelineRobustnessFeatures {}
19952
19953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html>
19954#[repr(C)]
19955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19956pub struct PhysicalDevicePipelineRobustnessProperties {
19957    pub s_type: StructureType,
19958    pub next: *mut c_void,
19959    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
19960    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
19961    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
19962    pub default_robustness_images: PipelineRobustnessImageBehavior,
19963}
19964
19965impl Default for PhysicalDevicePipelineRobustnessProperties {
19966    #[inline]
19967    fn default() -> Self {
19968        Self {
19969            s_type: StructureType::PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES,
19970            next: ptr::null_mut(),
19971            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
19972            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
19973            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
19974            default_robustness_images: PipelineRobustnessImageBehavior::default(),
19975        }
19976    }
19977}
19978
19979unsafe impl Send for PhysicalDevicePipelineRobustnessProperties {}
19980unsafe impl Sync for PhysicalDevicePipelineRobustnessProperties {}
19981
19982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html>
19983#[repr(C)]
19984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
19985pub struct PhysicalDevicePointClippingProperties {
19986    pub s_type: StructureType,
19987    pub next: *mut c_void,
19988    pub point_clipping_behavior: PointClippingBehavior,
19989}
19990
19991impl Default for PhysicalDevicePointClippingProperties {
19992    #[inline]
19993    fn default() -> Self {
19994        Self {
19995            s_type: StructureType::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
19996            next: ptr::null_mut(),
19997            point_clipping_behavior: PointClippingBehavior::default(),
19998        }
19999    }
20000}
20001
20002unsafe impl Send for PhysicalDevicePointClippingProperties {}
20003unsafe impl Sync for PhysicalDevicePointClippingProperties {}
20004
20005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html>
20006#[repr(C)]
20007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20008pub struct PhysicalDevicePortabilitySubsetFeaturesKHR {
20009    pub s_type: StructureType,
20010    pub next: *mut c_void,
20011    pub constant_alpha_color_blend_factors: Bool32,
20012    pub events: Bool32,
20013    pub image_view_format_reinterpretation: Bool32,
20014    pub image_view_format_swizzle: Bool32,
20015    pub image_view_2d_on_3d_image: Bool32,
20016    pub multisample_array_image: Bool32,
20017    pub mutable_comparison_samplers: Bool32,
20018    pub point_polygons: Bool32,
20019    pub sampler_mip_lod_bias: Bool32,
20020    pub separate_stencil_mask_ref: Bool32,
20021    pub shader_sample_rate_interpolation_functions: Bool32,
20022    pub tessellation_isolines: Bool32,
20023    pub tessellation_point_mode: Bool32,
20024    pub triangle_fans: Bool32,
20025    pub vertex_attribute_access_beyond_stride: Bool32,
20026}
20027
20028impl Default for PhysicalDevicePortabilitySubsetFeaturesKHR {
20029    #[inline]
20030    fn default() -> Self {
20031        Self {
20032            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR,
20033            next: ptr::null_mut(),
20034            constant_alpha_color_blend_factors: Bool32::default(),
20035            events: Bool32::default(),
20036            image_view_format_reinterpretation: Bool32::default(),
20037            image_view_format_swizzle: Bool32::default(),
20038            image_view_2d_on_3d_image: Bool32::default(),
20039            multisample_array_image: Bool32::default(),
20040            mutable_comparison_samplers: Bool32::default(),
20041            point_polygons: Bool32::default(),
20042            sampler_mip_lod_bias: Bool32::default(),
20043            separate_stencil_mask_ref: Bool32::default(),
20044            shader_sample_rate_interpolation_functions: Bool32::default(),
20045            tessellation_isolines: Bool32::default(),
20046            tessellation_point_mode: Bool32::default(),
20047            triangle_fans: Bool32::default(),
20048            vertex_attribute_access_beyond_stride: Bool32::default(),
20049        }
20050    }
20051}
20052
20053unsafe impl Send for PhysicalDevicePortabilitySubsetFeaturesKHR {}
20054unsafe impl Sync for PhysicalDevicePortabilitySubsetFeaturesKHR {}
20055
20056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html>
20057#[repr(C)]
20058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20059pub struct PhysicalDevicePortabilitySubsetPropertiesKHR {
20060    pub s_type: StructureType,
20061    pub next: *mut c_void,
20062    pub min_vertex_input_binding_stride_alignment: u32,
20063}
20064
20065impl Default for PhysicalDevicePortabilitySubsetPropertiesKHR {
20066    #[inline]
20067    fn default() -> Self {
20068        Self {
20069            s_type: StructureType::PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR,
20070            next: ptr::null_mut(),
20071            min_vertex_input_binding_stride_alignment: u32::default(),
20072        }
20073    }
20074}
20075
20076unsafe impl Send for PhysicalDevicePortabilitySubsetPropertiesKHR {}
20077unsafe impl Sync for PhysicalDevicePortabilitySubsetPropertiesKHR {}
20078
20079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html>
20080#[repr(C)]
20081#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20082pub struct PhysicalDevicePresentBarrierFeaturesNV {
20083    pub s_type: StructureType,
20084    pub next: *mut c_void,
20085    pub present_barrier: Bool32,
20086}
20087
20088impl Default for PhysicalDevicePresentBarrierFeaturesNV {
20089    #[inline]
20090    fn default() -> Self {
20091        Self {
20092            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV,
20093            next: ptr::null_mut(),
20094            present_barrier: Bool32::default(),
20095        }
20096    }
20097}
20098
20099unsafe impl Send for PhysicalDevicePresentBarrierFeaturesNV {}
20100unsafe impl Sync for PhysicalDevicePresentBarrierFeaturesNV {}
20101
20102/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentId2FeaturesKHR.html>
20103#[repr(C)]
20104#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20105pub struct PhysicalDevicePresentId2FeaturesKHR {
20106    pub s_type: StructureType,
20107    pub next: *mut c_void,
20108    pub present_id2: Bool32,
20109}
20110
20111impl Default for PhysicalDevicePresentId2FeaturesKHR {
20112    #[inline]
20113    fn default() -> Self {
20114        Self {
20115            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR,
20116            next: ptr::null_mut(),
20117            present_id2: Bool32::default(),
20118        }
20119    }
20120}
20121
20122unsafe impl Send for PhysicalDevicePresentId2FeaturesKHR {}
20123unsafe impl Sync for PhysicalDevicePresentId2FeaturesKHR {}
20124
20125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html>
20126#[repr(C)]
20127#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20128pub struct PhysicalDevicePresentIdFeaturesKHR {
20129    pub s_type: StructureType,
20130    pub next: *mut c_void,
20131    pub present_id: Bool32,
20132}
20133
20134impl Default for PhysicalDevicePresentIdFeaturesKHR {
20135    #[inline]
20136    fn default() -> Self {
20137        Self {
20138            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
20139            next: ptr::null_mut(),
20140            present_id: Bool32::default(),
20141        }
20142    }
20143}
20144
20145unsafe impl Send for PhysicalDevicePresentIdFeaturesKHR {}
20146unsafe impl Sync for PhysicalDevicePresentIdFeaturesKHR {}
20147
20148/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html>
20149#[repr(C)]
20150#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20151pub struct PhysicalDevicePresentMeteringFeaturesNV {
20152    pub s_type: StructureType,
20153    pub next: *mut c_void,
20154    pub present_metering: Bool32,
20155}
20156
20157impl Default for PhysicalDevicePresentMeteringFeaturesNV {
20158    #[inline]
20159    fn default() -> Self {
20160        Self {
20161            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV,
20162            next: ptr::null_mut(),
20163            present_metering: Bool32::default(),
20164        }
20165    }
20166}
20167
20168unsafe impl Send for PhysicalDevicePresentMeteringFeaturesNV {}
20169unsafe impl Sync for PhysicalDevicePresentMeteringFeaturesNV {}
20170
20171/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.html>
20172#[repr(C)]
20173#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20174pub struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
20175    pub s_type: StructureType,
20176    pub next: *mut c_void,
20177    pub present_mode_fifo_latest_ready: Bool32,
20178}
20179
20180impl Default for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {
20181    #[inline]
20182    fn default() -> Self {
20183        Self {
20184            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR,
20185            next: ptr::null_mut(),
20186            present_mode_fifo_latest_ready: Bool32::default(),
20187        }
20188    }
20189}
20190
20191unsafe impl Send for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
20192unsafe impl Sync for PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR {}
20193
20194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentTimingFeaturesEXT.html>
20195#[repr(C)]
20196#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20197pub struct PhysicalDevicePresentTimingFeaturesEXT {
20198    pub s_type: StructureType,
20199    pub next: *mut c_void,
20200    pub present_timing: Bool32,
20201    pub present_at_absolute_time: Bool32,
20202    pub present_at_relative_time: Bool32,
20203}
20204
20205impl Default for PhysicalDevicePresentTimingFeaturesEXT {
20206    #[inline]
20207    fn default() -> Self {
20208        Self {
20209            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT,
20210            next: ptr::null_mut(),
20211            present_timing: Bool32::default(),
20212            present_at_absolute_time: Bool32::default(),
20213            present_at_relative_time: Bool32::default(),
20214        }
20215    }
20216}
20217
20218unsafe impl Send for PhysicalDevicePresentTimingFeaturesEXT {}
20219unsafe impl Sync for PhysicalDevicePresentTimingFeaturesEXT {}
20220
20221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWait2FeaturesKHR.html>
20222#[repr(C)]
20223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20224pub struct PhysicalDevicePresentWait2FeaturesKHR {
20225    pub s_type: StructureType,
20226    pub next: *mut c_void,
20227    pub present_wait2: Bool32,
20228}
20229
20230impl Default for PhysicalDevicePresentWait2FeaturesKHR {
20231    #[inline]
20232    fn default() -> Self {
20233        Self {
20234            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR,
20235            next: ptr::null_mut(),
20236            present_wait2: Bool32::default(),
20237        }
20238    }
20239}
20240
20241unsafe impl Send for PhysicalDevicePresentWait2FeaturesKHR {}
20242unsafe impl Sync for PhysicalDevicePresentWait2FeaturesKHR {}
20243
20244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html>
20245#[repr(C)]
20246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20247pub struct PhysicalDevicePresentWaitFeaturesKHR {
20248    pub s_type: StructureType,
20249    pub next: *mut c_void,
20250    pub present_wait: Bool32,
20251}
20252
20253impl Default for PhysicalDevicePresentWaitFeaturesKHR {
20254    #[inline]
20255    fn default() -> Self {
20256        Self {
20257            s_type: StructureType::PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
20258            next: ptr::null_mut(),
20259            present_wait: Bool32::default(),
20260        }
20261    }
20262}
20263
20264unsafe impl Send for PhysicalDevicePresentWaitFeaturesKHR {}
20265unsafe impl Sync for PhysicalDevicePresentWaitFeaturesKHR {}
20266
20267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html>
20268#[repr(C)]
20269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20270pub struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
20271    pub s_type: StructureType,
20272    pub next: *mut c_void,
20273    pub primitive_topology_list_restart: Bool32,
20274    pub primitive_topology_patch_list_restart: Bool32,
20275}
20276
20277impl Default for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
20278    #[inline]
20279    fn default() -> Self {
20280        Self {
20281            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
20282            next: ptr::null_mut(),
20283            primitive_topology_list_restart: Bool32::default(),
20284            primitive_topology_patch_list_restart: Bool32::default(),
20285        }
20286    }
20287}
20288
20289unsafe impl Send for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
20290unsafe impl Sync for PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {}
20291
20292/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html>
20293#[repr(C)]
20294#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20295pub struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
20296    pub s_type: StructureType,
20297    pub next: *mut c_void,
20298    pub primitives_generated_query: Bool32,
20299    pub primitives_generated_query_with_rasterizer_discard: Bool32,
20300    pub primitives_generated_query_with_non_zero_streams: Bool32,
20301}
20302
20303impl Default for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
20304    #[inline]
20305    fn default() -> Self {
20306        Self {
20307            s_type: StructureType::PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT,
20308            next: ptr::null_mut(),
20309            primitives_generated_query: Bool32::default(),
20310            primitives_generated_query_with_rasterizer_discard: Bool32::default(),
20311            primitives_generated_query_with_non_zero_streams: Bool32::default(),
20312        }
20313    }
20314}
20315
20316unsafe impl Send for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
20317unsafe impl Sync for PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {}
20318
20319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html>
20320#[repr(C)]
20321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20322pub struct PhysicalDevicePrivateDataFeatures {
20323    pub s_type: StructureType,
20324    pub next: *mut c_void,
20325    pub private_data: Bool32,
20326}
20327
20328impl Default for PhysicalDevicePrivateDataFeatures {
20329    #[inline]
20330    fn default() -> Self {
20331        Self {
20332            s_type: StructureType::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
20333            next: ptr::null_mut(),
20334            private_data: Bool32::default(),
20335        }
20336    }
20337}
20338
20339unsafe impl Send for PhysicalDevicePrivateDataFeatures {}
20340unsafe impl Sync for PhysicalDevicePrivateDataFeatures {}
20341
20342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html>
20343#[repr(C)]
20344#[derive(Copy, Clone, Default, Debug, PartialEq)]
20345pub struct PhysicalDeviceProperties {
20346    pub api_version: u32,
20347    pub driver_version: u32,
20348    pub vendor_id: u32,
20349    pub device_id: u32,
20350    pub device_type: PhysicalDeviceType,
20351    pub device_name: StringArray<MAX_PHYSICAL_DEVICE_NAME_SIZE>,
20352    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
20353    pub limits: PhysicalDeviceLimits,
20354    pub sparse_properties: PhysicalDeviceSparseProperties,
20355}
20356
20357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html>
20358#[repr(C)]
20359#[derive(Copy, Clone, Debug, PartialEq)]
20360pub struct PhysicalDeviceProperties2 {
20361    pub s_type: StructureType,
20362    pub next: *mut c_void,
20363    pub properties: PhysicalDeviceProperties,
20364}
20365
20366impl Default for PhysicalDeviceProperties2 {
20367    #[inline]
20368    fn default() -> Self {
20369        Self {
20370            s_type: StructureType::PHYSICAL_DEVICE_PROPERTIES_2,
20371            next: ptr::null_mut(),
20372            properties: PhysicalDeviceProperties::default(),
20373        }
20374    }
20375}
20376
20377unsafe impl Send for PhysicalDeviceProperties2 {}
20378unsafe impl Sync for PhysicalDeviceProperties2 {}
20379
20380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html>
20381#[repr(C)]
20382#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20383pub struct PhysicalDeviceProtectedMemoryFeatures {
20384    pub s_type: StructureType,
20385    pub next: *mut c_void,
20386    pub protected_memory: Bool32,
20387}
20388
20389impl Default for PhysicalDeviceProtectedMemoryFeatures {
20390    #[inline]
20391    fn default() -> Self {
20392        Self {
20393            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
20394            next: ptr::null_mut(),
20395            protected_memory: Bool32::default(),
20396        }
20397    }
20398}
20399
20400unsafe impl Send for PhysicalDeviceProtectedMemoryFeatures {}
20401unsafe impl Sync for PhysicalDeviceProtectedMemoryFeatures {}
20402
20403/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html>
20404#[repr(C)]
20405#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20406pub struct PhysicalDeviceProtectedMemoryProperties {
20407    pub s_type: StructureType,
20408    pub next: *mut c_void,
20409    pub protected_no_fault: Bool32,
20410}
20411
20412impl Default for PhysicalDeviceProtectedMemoryProperties {
20413    #[inline]
20414    fn default() -> Self {
20415        Self {
20416            s_type: StructureType::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
20417            next: ptr::null_mut(),
20418            protected_no_fault: Bool32::default(),
20419        }
20420    }
20421}
20422
20423unsafe impl Send for PhysicalDeviceProtectedMemoryProperties {}
20424unsafe impl Sync for PhysicalDeviceProtectedMemoryProperties {}
20425
20426/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html>
20427#[repr(C)]
20428#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20429pub struct PhysicalDeviceProvokingVertexFeaturesEXT {
20430    pub s_type: StructureType,
20431    pub next: *mut c_void,
20432    pub provoking_vertex_last: Bool32,
20433    pub transform_feedback_preserves_provoking_vertex: Bool32,
20434}
20435
20436impl Default for PhysicalDeviceProvokingVertexFeaturesEXT {
20437    #[inline]
20438    fn default() -> Self {
20439        Self {
20440            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
20441            next: ptr::null_mut(),
20442            provoking_vertex_last: Bool32::default(),
20443            transform_feedback_preserves_provoking_vertex: Bool32::default(),
20444        }
20445    }
20446}
20447
20448unsafe impl Send for PhysicalDeviceProvokingVertexFeaturesEXT {}
20449unsafe impl Sync for PhysicalDeviceProvokingVertexFeaturesEXT {}
20450
20451/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html>
20452#[repr(C)]
20453#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20454pub struct PhysicalDeviceProvokingVertexPropertiesEXT {
20455    pub s_type: StructureType,
20456    pub next: *mut c_void,
20457    pub provoking_vertex_mode_per_pipeline: Bool32,
20458    pub transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32,
20459}
20460
20461impl Default for PhysicalDeviceProvokingVertexPropertiesEXT {
20462    #[inline]
20463    fn default() -> Self {
20464        Self {
20465            s_type: StructureType::PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
20466            next: ptr::null_mut(),
20467            provoking_vertex_mode_per_pipeline: Bool32::default(),
20468            transform_feedback_preserves_triangle_fan_provoking_vertex: Bool32::default(),
20469        }
20470    }
20471}
20472
20473unsafe impl Send for PhysicalDeviceProvokingVertexPropertiesEXT {}
20474unsafe impl Sync for PhysicalDeviceProvokingVertexPropertiesEXT {}
20475
20476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushConstantBankFeaturesNV.html>
20477#[repr(C)]
20478#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20479pub struct PhysicalDevicePushConstantBankFeaturesNV {
20480    pub s_type: StructureType,
20481    pub next: *mut c_void,
20482    pub push_constant_bank: Bool32,
20483}
20484
20485impl Default for PhysicalDevicePushConstantBankFeaturesNV {
20486    #[inline]
20487    fn default() -> Self {
20488        Self {
20489            s_type: StructureType::PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV,
20490            next: ptr::null_mut(),
20491            push_constant_bank: Bool32::default(),
20492        }
20493    }
20494}
20495
20496unsafe impl Send for PhysicalDevicePushConstantBankFeaturesNV {}
20497unsafe impl Sync for PhysicalDevicePushConstantBankFeaturesNV {}
20498
20499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushConstantBankPropertiesNV.html>
20500#[repr(C)]
20501#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20502pub struct PhysicalDevicePushConstantBankPropertiesNV {
20503    pub s_type: StructureType,
20504    pub next: *mut c_void,
20505    pub max_graphics_push_constant_banks: u32,
20506    pub max_compute_push_constant_banks: u32,
20507    pub max_graphics_push_data_banks: u32,
20508    pub max_compute_push_data_banks: u32,
20509}
20510
20511impl Default for PhysicalDevicePushConstantBankPropertiesNV {
20512    #[inline]
20513    fn default() -> Self {
20514        Self {
20515            s_type: StructureType::PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV,
20516            next: ptr::null_mut(),
20517            max_graphics_push_constant_banks: u32::default(),
20518            max_compute_push_constant_banks: u32::default(),
20519            max_graphics_push_data_banks: u32::default(),
20520            max_compute_push_data_banks: u32::default(),
20521        }
20522    }
20523}
20524
20525unsafe impl Send for PhysicalDevicePushConstantBankPropertiesNV {}
20526unsafe impl Sync for PhysicalDevicePushConstantBankPropertiesNV {}
20527
20528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html>
20529#[repr(C)]
20530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20531pub struct PhysicalDevicePushDescriptorProperties {
20532    pub s_type: StructureType,
20533    pub next: *mut c_void,
20534    pub max_push_descriptors: u32,
20535}
20536
20537impl Default for PhysicalDevicePushDescriptorProperties {
20538    #[inline]
20539    fn default() -> Self {
20540        Self {
20541            s_type: StructureType::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES,
20542            next: ptr::null_mut(),
20543            max_push_descriptors: u32::default(),
20544        }
20545    }
20546}
20547
20548unsafe impl Send for PhysicalDevicePushDescriptorProperties {}
20549unsafe impl Sync for PhysicalDevicePushDescriptorProperties {}
20550
20551/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.html>
20552#[repr(C)]
20553#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20554pub struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
20555    pub s_type: StructureType,
20556    pub next: *const c_void,
20557    pub queue_family_index: u32,
20558    pub engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM,
20559}
20560
20561impl Default for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {
20562    #[inline]
20563    fn default() -> Self {
20564        Self {
20565            s_type:
20566                StructureType::PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM,
20567            next: ptr::null(),
20568            queue_family_index: u32::default(),
20569            engine_type: PhysicalDeviceDataGraphProcessingEngineTypeARM::default(),
20570        }
20571    }
20572}
20573
20574unsafe impl Send for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
20575unsafe impl Sync for PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM {}
20576
20577/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html>
20578#[repr(C)]
20579#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20580pub struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
20581    pub s_type: StructureType,
20582    pub next: *mut c_void,
20583    pub format_rgba10x6_without_y_cb_cr_sampler: Bool32,
20584}
20585
20586impl Default for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {
20587    #[inline]
20588    fn default() -> Self {
20589        Self {
20590            s_type: StructureType::PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
20591            next: ptr::null_mut(),
20592            format_rgba10x6_without_y_cb_cr_sampler: Bool32::default(),
20593        }
20594    }
20595}
20596
20597unsafe impl Send for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
20598unsafe impl Sync for PhysicalDeviceRGBA10X6FormatsFeaturesEXT {}
20599
20600/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html>
20601#[repr(C)]
20602#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20603pub struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
20604    pub s_type: StructureType,
20605    pub next: *mut c_void,
20606    pub rasterization_order_color_attachment_access: Bool32,
20607    pub rasterization_order_depth_attachment_access: Bool32,
20608    pub rasterization_order_stencil_attachment_access: Bool32,
20609}
20610
20611impl Default for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
20612    #[inline]
20613    fn default() -> Self {
20614        Self {
20615            s_type:
20616                StructureType::PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
20617            next: ptr::null_mut(),
20618            rasterization_order_color_attachment_access: Bool32::default(),
20619            rasterization_order_depth_attachment_access: Bool32::default(),
20620            rasterization_order_stencil_attachment_access: Bool32::default(),
20621        }
20622    }
20623}
20624
20625unsafe impl Send for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
20626unsafe impl Sync for PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {}
20627
20628/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html>
20629#[repr(C)]
20630#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20631pub struct PhysicalDeviceRawAccessChainsFeaturesNV {
20632    pub s_type: StructureType,
20633    pub next: *mut c_void,
20634    pub shader_raw_access_chains: Bool32,
20635}
20636
20637impl Default for PhysicalDeviceRawAccessChainsFeaturesNV {
20638    #[inline]
20639    fn default() -> Self {
20640        Self {
20641            s_type: StructureType::PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV,
20642            next: ptr::null_mut(),
20643            shader_raw_access_chains: Bool32::default(),
20644        }
20645    }
20646}
20647
20648unsafe impl Send for PhysicalDeviceRawAccessChainsFeaturesNV {}
20649unsafe impl Sync for PhysicalDeviceRawAccessChainsFeaturesNV {}
20650
20651/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html>
20652#[repr(C)]
20653#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20654pub struct PhysicalDeviceRayQueryFeaturesKHR {
20655    pub s_type: StructureType,
20656    pub next: *mut c_void,
20657    pub ray_query: Bool32,
20658}
20659
20660impl Default for PhysicalDeviceRayQueryFeaturesKHR {
20661    #[inline]
20662    fn default() -> Self {
20663        Self {
20664            s_type: StructureType::PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR,
20665            next: ptr::null_mut(),
20666            ray_query: Bool32::default(),
20667        }
20668    }
20669}
20670
20671unsafe impl Send for PhysicalDeviceRayQueryFeaturesKHR {}
20672unsafe impl Sync for PhysicalDeviceRayQueryFeaturesKHR {}
20673
20674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT.html>
20675#[repr(C)]
20676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20677pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {
20678    pub s_type: StructureType,
20679    pub next: *mut c_void,
20680    pub ray_tracing_invocation_reorder: Bool32,
20681}
20682
20683impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {
20684    #[inline]
20685    fn default() -> Self {
20686        Self {
20687            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT,
20688            next: ptr::null_mut(),
20689            ray_tracing_invocation_reorder: Bool32::default(),
20690        }
20691    }
20692}
20693
20694unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {}
20695unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderFeaturesEXT {}
20696
20697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html>
20698#[repr(C)]
20699#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20700pub struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
20701    pub s_type: StructureType,
20702    pub next: *mut c_void,
20703    pub ray_tracing_invocation_reorder: Bool32,
20704}
20705
20706impl Default for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {
20707    #[inline]
20708    fn default() -> Self {
20709        Self {
20710            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV,
20711            next: ptr::null_mut(),
20712            ray_tracing_invocation_reorder: Bool32::default(),
20713        }
20714    }
20715}
20716
20717unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
20718unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderFeaturesNV {}
20719
20720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT.html>
20721#[repr(C)]
20722#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20723pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {
20724    pub s_type: StructureType,
20725    pub next: *mut c_void,
20726    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeEXT,
20727    pub max_shader_binding_table_record_index: u32,
20728}
20729
20730impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {
20731    #[inline]
20732    fn default() -> Self {
20733        Self {
20734            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT,
20735            next: ptr::null_mut(),
20736            ray_tracing_invocation_reorder_reordering_hint:
20737                RayTracingInvocationReorderModeEXT::default(),
20738            max_shader_binding_table_record_index: u32::default(),
20739        }
20740    }
20741}
20742
20743unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {}
20744unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderPropertiesEXT {}
20745
20746/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html>
20747#[repr(C)]
20748#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20749pub struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
20750    pub s_type: StructureType,
20751    pub next: *mut c_void,
20752    pub ray_tracing_invocation_reorder_reordering_hint: RayTracingInvocationReorderModeEXT,
20753}
20754
20755impl Default for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {
20756    #[inline]
20757    fn default() -> Self {
20758        Self {
20759            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV,
20760            next: ptr::null_mut(),
20761            ray_tracing_invocation_reorder_reordering_hint:
20762                RayTracingInvocationReorderModeEXT::default(),
20763        }
20764    }
20765}
20766
20767unsafe impl Send for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
20768unsafe impl Sync for PhysicalDeviceRayTracingInvocationReorderPropertiesNV {}
20769
20770/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html>
20771#[repr(C)]
20772#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20773pub struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
20774    pub s_type: StructureType,
20775    pub next: *mut c_void,
20776    pub spheres: Bool32,
20777    pub linear_swept_spheres: Bool32,
20778}
20779
20780impl Default for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {
20781    #[inline]
20782    fn default() -> Self {
20783        Self {
20784            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV,
20785            next: ptr::null_mut(),
20786            spheres: Bool32::default(),
20787            linear_swept_spheres: Bool32::default(),
20788        }
20789    }
20790}
20791
20792unsafe impl Send for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
20793unsafe impl Sync for PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV {}
20794
20795/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html>
20796#[repr(C)]
20797#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20798pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
20799    pub s_type: StructureType,
20800    pub next: *mut c_void,
20801    pub ray_tracing_maintenance1: Bool32,
20802    pub ray_tracing_pipeline_trace_rays_indirect2: Bool32,
20803}
20804
20805impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
20806    #[inline]
20807    fn default() -> Self {
20808        Self {
20809            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR,
20810            next: ptr::null_mut(),
20811            ray_tracing_maintenance1: Bool32::default(),
20812            ray_tracing_pipeline_trace_rays_indirect2: Bool32::default(),
20813        }
20814    }
20815}
20816
20817unsafe impl Send for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
20818unsafe impl Sync for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {}
20819
20820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html>
20821#[repr(C)]
20822#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20823pub struct PhysicalDeviceRayTracingMotionBlurFeaturesNV {
20824    pub s_type: StructureType,
20825    pub next: *mut c_void,
20826    pub ray_tracing_motion_blur: Bool32,
20827    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32,
20828}
20829
20830impl Default for PhysicalDeviceRayTracingMotionBlurFeaturesNV {
20831    #[inline]
20832    fn default() -> Self {
20833        Self {
20834            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV,
20835            next: ptr::null_mut(),
20836            ray_tracing_motion_blur: Bool32::default(),
20837            ray_tracing_motion_blur_pipeline_trace_rays_indirect: Bool32::default(),
20838        }
20839    }
20840}
20841
20842unsafe impl Send for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
20843unsafe impl Sync for PhysicalDeviceRayTracingMotionBlurFeaturesNV {}
20844
20845/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html>
20846#[repr(C)]
20847#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20848pub struct PhysicalDeviceRayTracingPipelineFeaturesKHR {
20849    pub s_type: StructureType,
20850    pub next: *mut c_void,
20851    pub ray_tracing_pipeline: Bool32,
20852    pub ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32,
20853    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32,
20854    pub ray_tracing_pipeline_trace_rays_indirect: Bool32,
20855    pub ray_traversal_primitive_culling: Bool32,
20856}
20857
20858impl Default for PhysicalDeviceRayTracingPipelineFeaturesKHR {
20859    #[inline]
20860    fn default() -> Self {
20861        Self {
20862            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
20863            next: ptr::null_mut(),
20864            ray_tracing_pipeline: Bool32::default(),
20865            ray_tracing_pipeline_shader_group_handle_capture_replay: Bool32::default(),
20866            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: Bool32::default(),
20867            ray_tracing_pipeline_trace_rays_indirect: Bool32::default(),
20868            ray_traversal_primitive_culling: Bool32::default(),
20869        }
20870    }
20871}
20872
20873unsafe impl Send for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
20874unsafe impl Sync for PhysicalDeviceRayTracingPipelineFeaturesKHR {}
20875
20876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html>
20877#[repr(C)]
20878#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20879pub struct PhysicalDeviceRayTracingPipelinePropertiesKHR {
20880    pub s_type: StructureType,
20881    pub next: *mut c_void,
20882    pub shader_group_handle_size: u32,
20883    pub max_ray_recursion_depth: u32,
20884    pub max_shader_group_stride: u32,
20885    pub shader_group_base_alignment: u32,
20886    pub shader_group_handle_capture_replay_size: u32,
20887    pub max_ray_dispatch_invocation_count: u32,
20888    pub shader_group_handle_alignment: u32,
20889    pub max_ray_hit_attribute_size: u32,
20890}
20891
20892impl Default for PhysicalDeviceRayTracingPipelinePropertiesKHR {
20893    #[inline]
20894    fn default() -> Self {
20895        Self {
20896            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
20897            next: ptr::null_mut(),
20898            shader_group_handle_size: u32::default(),
20899            max_ray_recursion_depth: u32::default(),
20900            max_shader_group_stride: u32::default(),
20901            shader_group_base_alignment: u32::default(),
20902            shader_group_handle_capture_replay_size: u32::default(),
20903            max_ray_dispatch_invocation_count: u32::default(),
20904            shader_group_handle_alignment: u32::default(),
20905            max_ray_hit_attribute_size: u32::default(),
20906        }
20907    }
20908}
20909
20910unsafe impl Send for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20911unsafe impl Sync for PhysicalDeviceRayTracingPipelinePropertiesKHR {}
20912
20913/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html>
20914#[repr(C)]
20915#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20916pub struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20917    pub s_type: StructureType,
20918    pub next: *mut c_void,
20919    pub ray_tracing_position_fetch: Bool32,
20920}
20921
20922impl Default for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {
20923    #[inline]
20924    fn default() -> Self {
20925        Self {
20926            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR,
20927            next: ptr::null_mut(),
20928            ray_tracing_position_fetch: Bool32::default(),
20929        }
20930    }
20931}
20932
20933unsafe impl Send for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20934unsafe impl Sync for PhysicalDeviceRayTracingPositionFetchFeaturesKHR {}
20935
20936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html>
20937#[repr(C)]
20938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20939pub struct PhysicalDeviceRayTracingPropertiesNV {
20940    pub s_type: StructureType,
20941    pub next: *mut c_void,
20942    pub shader_group_handle_size: u32,
20943    pub max_recursion_depth: u32,
20944    pub max_shader_group_stride: u32,
20945    pub shader_group_base_alignment: u32,
20946    pub max_geometry_count: u64,
20947    pub max_instance_count: u64,
20948    pub max_triangle_count: u64,
20949    pub max_descriptor_set_acceleration_structures: u32,
20950}
20951
20952impl Default for PhysicalDeviceRayTracingPropertiesNV {
20953    #[inline]
20954    fn default() -> Self {
20955        Self {
20956            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
20957            next: ptr::null_mut(),
20958            shader_group_handle_size: u32::default(),
20959            max_recursion_depth: u32::default(),
20960            max_shader_group_stride: u32::default(),
20961            shader_group_base_alignment: u32::default(),
20962            max_geometry_count: u64::default(),
20963            max_instance_count: u64::default(),
20964            max_triangle_count: u64::default(),
20965            max_descriptor_set_acceleration_structures: u32::default(),
20966        }
20967    }
20968}
20969
20970unsafe impl Send for PhysicalDeviceRayTracingPropertiesNV {}
20971unsafe impl Sync for PhysicalDeviceRayTracingPropertiesNV {}
20972
20973/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html>
20974#[repr(C)]
20975#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20976pub struct PhysicalDeviceRayTracingValidationFeaturesNV {
20977    pub s_type: StructureType,
20978    pub next: *mut c_void,
20979    pub ray_tracing_validation: Bool32,
20980}
20981
20982impl Default for PhysicalDeviceRayTracingValidationFeaturesNV {
20983    #[inline]
20984    fn default() -> Self {
20985        Self {
20986            s_type: StructureType::PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV,
20987            next: ptr::null_mut(),
20988            ray_tracing_validation: Bool32::default(),
20989        }
20990    }
20991}
20992
20993unsafe impl Send for PhysicalDeviceRayTracingValidationFeaturesNV {}
20994unsafe impl Sync for PhysicalDeviceRayTracingValidationFeaturesNV {}
20995
20996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html>
20997#[repr(C)]
20998#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
20999pub struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
21000    pub s_type: StructureType,
21001    pub next: *mut c_void,
21002    pub relaxed_line_rasterization: Bool32,
21003}
21004
21005impl Default for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
21006    #[inline]
21007    fn default() -> Self {
21008        Self {
21009            s_type: StructureType::PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG,
21010            next: ptr::null_mut(),
21011            relaxed_line_rasterization: Bool32::default(),
21012        }
21013    }
21014}
21015
21016unsafe impl Send for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
21017unsafe impl Sync for PhysicalDeviceRelaxedLineRasterizationFeaturesIMG {}
21018
21019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html>
21020#[repr(C)]
21021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21022pub struct PhysicalDeviceRenderPassStripedFeaturesARM {
21023    pub s_type: StructureType,
21024    pub next: *mut c_void,
21025    pub render_pass_striped: Bool32,
21026}
21027
21028impl Default for PhysicalDeviceRenderPassStripedFeaturesARM {
21029    #[inline]
21030    fn default() -> Self {
21031        Self {
21032            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
21033            next: ptr::null_mut(),
21034            render_pass_striped: Bool32::default(),
21035        }
21036    }
21037}
21038
21039unsafe impl Send for PhysicalDeviceRenderPassStripedFeaturesARM {}
21040unsafe impl Sync for PhysicalDeviceRenderPassStripedFeaturesARM {}
21041
21042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html>
21043#[repr(C)]
21044#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21045pub struct PhysicalDeviceRenderPassStripedPropertiesARM {
21046    pub s_type: StructureType,
21047    pub next: *mut c_void,
21048    pub render_pass_stripe_granularity: Extent2D,
21049    pub max_render_pass_stripes: u32,
21050}
21051
21052impl Default for PhysicalDeviceRenderPassStripedPropertiesARM {
21053    #[inline]
21054    fn default() -> Self {
21055        Self {
21056            s_type: StructureType::PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
21057            next: ptr::null_mut(),
21058            render_pass_stripe_granularity: Extent2D::default(),
21059            max_render_pass_stripes: u32::default(),
21060        }
21061    }
21062}
21063
21064unsafe impl Send for PhysicalDeviceRenderPassStripedPropertiesARM {}
21065unsafe impl Sync for PhysicalDeviceRenderPassStripedPropertiesARM {}
21066
21067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html>
21068#[repr(C)]
21069#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21070pub struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
21071    pub s_type: StructureType,
21072    pub next: *mut c_void,
21073    pub representative_fragment_test: Bool32,
21074}
21075
21076impl Default for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {
21077    #[inline]
21078    fn default() -> Self {
21079        Self {
21080            s_type: StructureType::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
21081            next: ptr::null_mut(),
21082            representative_fragment_test: Bool32::default(),
21083        }
21084    }
21085}
21086
21087unsafe impl Send for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
21088unsafe impl Sync for PhysicalDeviceRepresentativeFragmentTestFeaturesNV {}
21089
21090/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesKHR.html>
21091#[repr(C)]
21092#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21093pub struct PhysicalDeviceRobustness2FeaturesKHR {
21094    pub s_type: StructureType,
21095    pub next: *mut c_void,
21096    pub robust_buffer_access2: Bool32,
21097    pub robust_image_access2: Bool32,
21098    pub null_descriptor: Bool32,
21099}
21100
21101impl Default for PhysicalDeviceRobustness2FeaturesKHR {
21102    #[inline]
21103    fn default() -> Self {
21104        Self {
21105            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR,
21106            next: ptr::null_mut(),
21107            robust_buffer_access2: Bool32::default(),
21108            robust_image_access2: Bool32::default(),
21109            null_descriptor: Bool32::default(),
21110        }
21111    }
21112}
21113
21114unsafe impl Send for PhysicalDeviceRobustness2FeaturesKHR {}
21115unsafe impl Sync for PhysicalDeviceRobustness2FeaturesKHR {}
21116
21117/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesKHR.html>
21118#[repr(C)]
21119#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21120pub struct PhysicalDeviceRobustness2PropertiesKHR {
21121    pub s_type: StructureType,
21122    pub next: *mut c_void,
21123    pub robust_storage_buffer_access_size_alignment: DeviceSize,
21124    pub robust_uniform_buffer_access_size_alignment: DeviceSize,
21125}
21126
21127impl Default for PhysicalDeviceRobustness2PropertiesKHR {
21128    #[inline]
21129    fn default() -> Self {
21130        Self {
21131            s_type: StructureType::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR,
21132            next: ptr::null_mut(),
21133            robust_storage_buffer_access_size_alignment: DeviceSize::default(),
21134            robust_uniform_buffer_access_size_alignment: DeviceSize::default(),
21135        }
21136    }
21137}
21138
21139unsafe impl Send for PhysicalDeviceRobustness2PropertiesKHR {}
21140unsafe impl Sync for PhysicalDeviceRobustness2PropertiesKHR {}
21141
21142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html>
21143#[repr(C)]
21144#[derive(Copy, Clone, Debug, PartialEq)]
21145pub struct PhysicalDeviceSampleLocationsPropertiesEXT {
21146    pub s_type: StructureType,
21147    pub next: *mut c_void,
21148    pub sample_location_sample_counts: SampleCountFlags,
21149    pub max_sample_location_grid_size: Extent2D,
21150    pub sample_location_coordinate_range: [f32; 2],
21151    pub sample_location_sub_pixel_bits: u32,
21152    pub variable_sample_locations: Bool32,
21153}
21154
21155impl Default for PhysicalDeviceSampleLocationsPropertiesEXT {
21156    #[inline]
21157    fn default() -> Self {
21158        Self {
21159            s_type: StructureType::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
21160            next: ptr::null_mut(),
21161            sample_location_sample_counts: SampleCountFlags::default(),
21162            max_sample_location_grid_size: Extent2D::default(),
21163            sample_location_coordinate_range: [f32::default(); 2],
21164            sample_location_sub_pixel_bits: u32::default(),
21165            variable_sample_locations: Bool32::default(),
21166        }
21167    }
21168}
21169
21170unsafe impl Send for PhysicalDeviceSampleLocationsPropertiesEXT {}
21171unsafe impl Sync for PhysicalDeviceSampleLocationsPropertiesEXT {}
21172
21173/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html>
21174#[repr(C)]
21175#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21176pub struct PhysicalDeviceSamplerFilterMinmaxProperties {
21177    pub s_type: StructureType,
21178    pub next: *mut c_void,
21179    pub filter_minmax_single_component_formats: Bool32,
21180    pub filter_minmax_image_component_mapping: Bool32,
21181}
21182
21183impl Default for PhysicalDeviceSamplerFilterMinmaxProperties {
21184    #[inline]
21185    fn default() -> Self {
21186        Self {
21187            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
21188            next: ptr::null_mut(),
21189            filter_minmax_single_component_formats: Bool32::default(),
21190            filter_minmax_image_component_mapping: Bool32::default(),
21191        }
21192    }
21193}
21194
21195unsafe impl Send for PhysicalDeviceSamplerFilterMinmaxProperties {}
21196unsafe impl Sync for PhysicalDeviceSamplerFilterMinmaxProperties {}
21197
21198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html>
21199#[repr(C)]
21200#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21201pub struct PhysicalDeviceSamplerYcbcrConversionFeatures {
21202    pub s_type: StructureType,
21203    pub next: *mut c_void,
21204    pub sampler_ycbcr_conversion: Bool32,
21205}
21206
21207impl Default for PhysicalDeviceSamplerYcbcrConversionFeatures {
21208    #[inline]
21209    fn default() -> Self {
21210        Self {
21211            s_type: StructureType::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
21212            next: ptr::null_mut(),
21213            sampler_ycbcr_conversion: Bool32::default(),
21214        }
21215    }
21216}
21217
21218unsafe impl Send for PhysicalDeviceSamplerYcbcrConversionFeatures {}
21219unsafe impl Sync for PhysicalDeviceSamplerYcbcrConversionFeatures {}
21220
21221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html>
21222#[repr(C)]
21223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21224pub struct PhysicalDeviceScalarBlockLayoutFeatures {
21225    pub s_type: StructureType,
21226    pub next: *mut c_void,
21227    pub scalar_block_layout: Bool32,
21228}
21229
21230impl Default for PhysicalDeviceScalarBlockLayoutFeatures {
21231    #[inline]
21232    fn default() -> Self {
21233        Self {
21234            s_type: StructureType::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
21235            next: ptr::null_mut(),
21236            scalar_block_layout: Bool32::default(),
21237        }
21238    }
21239}
21240
21241unsafe impl Send for PhysicalDeviceScalarBlockLayoutFeatures {}
21242unsafe impl Sync for PhysicalDeviceScalarBlockLayoutFeatures {}
21243
21244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html>
21245#[repr(C)]
21246#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21247pub struct PhysicalDeviceSchedulingControlsFeaturesARM {
21248    pub s_type: StructureType,
21249    pub next: *mut c_void,
21250    pub scheduling_controls: Bool32,
21251}
21252
21253impl Default for PhysicalDeviceSchedulingControlsFeaturesARM {
21254    #[inline]
21255    fn default() -> Self {
21256        Self {
21257            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM,
21258            next: ptr::null_mut(),
21259            scheduling_controls: Bool32::default(),
21260        }
21261    }
21262}
21263
21264unsafe impl Send for PhysicalDeviceSchedulingControlsFeaturesARM {}
21265unsafe impl Sync for PhysicalDeviceSchedulingControlsFeaturesARM {}
21266
21267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html>
21268#[repr(C)]
21269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21270pub struct PhysicalDeviceSchedulingControlsPropertiesARM {
21271    pub s_type: StructureType,
21272    pub next: *mut c_void,
21273    pub scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM,
21274}
21275
21276impl Default for PhysicalDeviceSchedulingControlsPropertiesARM {
21277    #[inline]
21278    fn default() -> Self {
21279        Self {
21280            s_type: StructureType::PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM,
21281            next: ptr::null_mut(),
21282            scheduling_controls_flags: PhysicalDeviceSchedulingControlsFlagsARM::default(),
21283        }
21284    }
21285}
21286
21287unsafe impl Send for PhysicalDeviceSchedulingControlsPropertiesARM {}
21288unsafe impl Sync for PhysicalDeviceSchedulingControlsPropertiesARM {}
21289
21290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html>
21291#[repr(C)]
21292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21293pub struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
21294    pub s_type: StructureType,
21295    pub next: *mut c_void,
21296    pub separate_depth_stencil_layouts: Bool32,
21297}
21298
21299impl Default for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {
21300    #[inline]
21301    fn default() -> Self {
21302        Self {
21303            s_type: StructureType::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
21304            next: ptr::null_mut(),
21305            separate_depth_stencil_layouts: Bool32::default(),
21306        }
21307    }
21308}
21309
21310unsafe impl Send for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
21311unsafe impl Sync for PhysicalDeviceSeparateDepthStencilLayoutsFeatures {}
21312
21313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShader64BitIndexingFeaturesEXT.html>
21314#[repr(C)]
21315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21316pub struct PhysicalDeviceShader64BitIndexingFeaturesEXT {
21317    pub s_type: StructureType,
21318    pub next: *mut c_void,
21319    pub shader_64bit_indexing: Bool32,
21320}
21321
21322impl Default for PhysicalDeviceShader64BitIndexingFeaturesEXT {
21323    #[inline]
21324    fn default() -> Self {
21325        Self {
21326            s_type: StructureType::PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT,
21327            next: ptr::null_mut(),
21328            shader_64bit_indexing: Bool32::default(),
21329        }
21330    }
21331}
21332
21333unsafe impl Send for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
21334unsafe impl Sync for PhysicalDeviceShader64BitIndexingFeaturesEXT {}
21335
21336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html>
21337#[repr(C)]
21338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21339pub struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
21340    pub s_type: StructureType,
21341    pub next: *mut c_void,
21342    pub shader_float16_vector_atomics: Bool32,
21343}
21344
21345impl Default for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {
21346    #[inline]
21347    fn default() -> Self {
21348        Self {
21349            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV,
21350            next: ptr::null_mut(),
21351            shader_float16_vector_atomics: Bool32::default(),
21352        }
21353    }
21354}
21355
21356unsafe impl Send for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
21357unsafe impl Sync for PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV {}
21358
21359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html>
21360#[repr(C)]
21361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21362pub struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
21363    pub s_type: StructureType,
21364    pub next: *mut c_void,
21365    pub shader_buffer_float16_atomics: Bool32,
21366    pub shader_buffer_float16_atomic_add: Bool32,
21367    pub shader_buffer_float16_atomic_min_max: Bool32,
21368    pub shader_buffer_float32_atomic_min_max: Bool32,
21369    pub shader_buffer_float64_atomic_min_max: Bool32,
21370    pub shader_shared_float16_atomics: Bool32,
21371    pub shader_shared_float16_atomic_add: Bool32,
21372    pub shader_shared_float16_atomic_min_max: Bool32,
21373    pub shader_shared_float32_atomic_min_max: Bool32,
21374    pub shader_shared_float64_atomic_min_max: Bool32,
21375    pub shader_image_float32_atomic_min_max: Bool32,
21376    pub sparse_image_float32_atomic_min_max: Bool32,
21377}
21378
21379impl Default for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {
21380    #[inline]
21381    fn default() -> Self {
21382        Self {
21383            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
21384            next: ptr::null_mut(),
21385            shader_buffer_float16_atomics: Bool32::default(),
21386            shader_buffer_float16_atomic_add: Bool32::default(),
21387            shader_buffer_float16_atomic_min_max: Bool32::default(),
21388            shader_buffer_float32_atomic_min_max: Bool32::default(),
21389            shader_buffer_float64_atomic_min_max: Bool32::default(),
21390            shader_shared_float16_atomics: Bool32::default(),
21391            shader_shared_float16_atomic_add: Bool32::default(),
21392            shader_shared_float16_atomic_min_max: Bool32::default(),
21393            shader_shared_float32_atomic_min_max: Bool32::default(),
21394            shader_shared_float64_atomic_min_max: Bool32::default(),
21395            shader_image_float32_atomic_min_max: Bool32::default(),
21396            sparse_image_float32_atomic_min_max: Bool32::default(),
21397        }
21398    }
21399}
21400
21401unsafe impl Send for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
21402unsafe impl Sync for PhysicalDeviceShaderAtomicFloat2FeaturesEXT {}
21403
21404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html>
21405#[repr(C)]
21406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21407pub struct PhysicalDeviceShaderAtomicFloatFeaturesEXT {
21408    pub s_type: StructureType,
21409    pub next: *mut c_void,
21410    pub shader_buffer_float32_atomics: Bool32,
21411    pub shader_buffer_float32_atomic_add: Bool32,
21412    pub shader_buffer_float64_atomics: Bool32,
21413    pub shader_buffer_float64_atomic_add: Bool32,
21414    pub shader_shared_float32_atomics: Bool32,
21415    pub shader_shared_float32_atomic_add: Bool32,
21416    pub shader_shared_float64_atomics: Bool32,
21417    pub shader_shared_float64_atomic_add: Bool32,
21418    pub shader_image_float32_atomics: Bool32,
21419    pub shader_image_float32_atomic_add: Bool32,
21420    pub sparse_image_float32_atomics: Bool32,
21421    pub sparse_image_float32_atomic_add: Bool32,
21422}
21423
21424impl Default for PhysicalDeviceShaderAtomicFloatFeaturesEXT {
21425    #[inline]
21426    fn default() -> Self {
21427        Self {
21428            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT,
21429            next: ptr::null_mut(),
21430            shader_buffer_float32_atomics: Bool32::default(),
21431            shader_buffer_float32_atomic_add: Bool32::default(),
21432            shader_buffer_float64_atomics: Bool32::default(),
21433            shader_buffer_float64_atomic_add: Bool32::default(),
21434            shader_shared_float32_atomics: Bool32::default(),
21435            shader_shared_float32_atomic_add: Bool32::default(),
21436            shader_shared_float64_atomics: Bool32::default(),
21437            shader_shared_float64_atomic_add: Bool32::default(),
21438            shader_image_float32_atomics: Bool32::default(),
21439            shader_image_float32_atomic_add: Bool32::default(),
21440            sparse_image_float32_atomics: Bool32::default(),
21441            sparse_image_float32_atomic_add: Bool32::default(),
21442        }
21443    }
21444}
21445
21446unsafe impl Send for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
21447unsafe impl Sync for PhysicalDeviceShaderAtomicFloatFeaturesEXT {}
21448
21449/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html>
21450#[repr(C)]
21451#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21452pub struct PhysicalDeviceShaderAtomicInt64Features {
21453    pub s_type: StructureType,
21454    pub next: *mut c_void,
21455    pub shader_buffer_int64_atomics: Bool32,
21456    pub shader_shared_int64_atomics: Bool32,
21457}
21458
21459impl Default for PhysicalDeviceShaderAtomicInt64Features {
21460    #[inline]
21461    fn default() -> Self {
21462        Self {
21463            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
21464            next: ptr::null_mut(),
21465            shader_buffer_int64_atomics: Bool32::default(),
21466            shader_shared_int64_atomics: Bool32::default(),
21467        }
21468    }
21469}
21470
21471unsafe impl Send for PhysicalDeviceShaderAtomicInt64Features {}
21472unsafe impl Sync for PhysicalDeviceShaderAtomicInt64Features {}
21473
21474/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderBfloat16FeaturesKHR.html>
21475#[repr(C)]
21476#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21477pub struct PhysicalDeviceShaderBfloat16FeaturesKHR {
21478    pub s_type: StructureType,
21479    pub next: *mut c_void,
21480    pub shader_b_float16_type: Bool32,
21481    pub shader_b_float_16dot_product: Bool32,
21482    pub shader_b_float16_cooperative_matrix: Bool32,
21483}
21484
21485impl Default for PhysicalDeviceShaderBfloat16FeaturesKHR {
21486    #[inline]
21487    fn default() -> Self {
21488        Self {
21489            s_type: StructureType::PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR,
21490            next: ptr::null_mut(),
21491            shader_b_float16_type: Bool32::default(),
21492            shader_b_float_16dot_product: Bool32::default(),
21493            shader_b_float16_cooperative_matrix: Bool32::default(),
21494        }
21495    }
21496}
21497
21498unsafe impl Send for PhysicalDeviceShaderBfloat16FeaturesKHR {}
21499unsafe impl Sync for PhysicalDeviceShaderBfloat16FeaturesKHR {}
21500
21501/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html>
21502#[repr(C)]
21503#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21504pub struct PhysicalDeviceShaderClockFeaturesKHR {
21505    pub s_type: StructureType,
21506    pub next: *mut c_void,
21507    pub shader_subgroup_clock: Bool32,
21508    pub shader_device_clock: Bool32,
21509}
21510
21511impl Default for PhysicalDeviceShaderClockFeaturesKHR {
21512    #[inline]
21513    fn default() -> Self {
21514        Self {
21515            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
21516            next: ptr::null_mut(),
21517            shader_subgroup_clock: Bool32::default(),
21518            shader_device_clock: Bool32::default(),
21519        }
21520    }
21521}
21522
21523unsafe impl Send for PhysicalDeviceShaderClockFeaturesKHR {}
21524unsafe impl Sync for PhysicalDeviceShaderClockFeaturesKHR {}
21525
21526/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html>
21527#[repr(C)]
21528#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21529pub struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
21530    pub s_type: StructureType,
21531    pub next: *mut c_void,
21532    pub shader_core_builtins: Bool32,
21533}
21534
21535impl Default for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {
21536    #[inline]
21537    fn default() -> Self {
21538        Self {
21539            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
21540            next: ptr::null_mut(),
21541            shader_core_builtins: Bool32::default(),
21542        }
21543    }
21544}
21545
21546unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
21547unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsFeaturesARM {}
21548
21549/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html>
21550#[repr(C)]
21551#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21552pub struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
21553    pub s_type: StructureType,
21554    pub next: *mut c_void,
21555    pub shader_core_mask: u64,
21556    pub shader_core_count: u32,
21557    pub shader_warps_per_core: u32,
21558}
21559
21560impl Default for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {
21561    #[inline]
21562    fn default() -> Self {
21563        Self {
21564            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
21565            next: ptr::null_mut(),
21566            shader_core_mask: u64::default(),
21567            shader_core_count: u32::default(),
21568            shader_warps_per_core: u32::default(),
21569        }
21570    }
21571}
21572
21573unsafe impl Send for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
21574unsafe impl Sync for PhysicalDeviceShaderCoreBuiltinsPropertiesARM {}
21575
21576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html>
21577#[repr(C)]
21578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21579pub struct PhysicalDeviceShaderCoreProperties2AMD {
21580    pub s_type: StructureType,
21581    pub next: *mut c_void,
21582    pub shader_core_features: ShaderCorePropertiesFlagsAMD,
21583    pub active_compute_unit_count: u32,
21584}
21585
21586impl Default for PhysicalDeviceShaderCoreProperties2AMD {
21587    #[inline]
21588    fn default() -> Self {
21589        Self {
21590            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
21591            next: ptr::null_mut(),
21592            shader_core_features: ShaderCorePropertiesFlagsAMD::default(),
21593            active_compute_unit_count: u32::default(),
21594        }
21595    }
21596}
21597
21598unsafe impl Send for PhysicalDeviceShaderCoreProperties2AMD {}
21599unsafe impl Sync for PhysicalDeviceShaderCoreProperties2AMD {}
21600
21601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html>
21602#[repr(C)]
21603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21604pub struct PhysicalDeviceShaderCorePropertiesAMD {
21605    pub s_type: StructureType,
21606    pub next: *mut c_void,
21607    pub shader_engine_count: u32,
21608    pub shader_arrays_per_engine_count: u32,
21609    pub compute_units_per_shader_array: u32,
21610    pub simd_per_compute_unit: u32,
21611    pub wavefronts_per_simd: u32,
21612    pub wavefront_size: u32,
21613    pub sgprs_per_simd: u32,
21614    pub min_sgpr_allocation: u32,
21615    pub max_sgpr_allocation: u32,
21616    pub sgpr_allocation_granularity: u32,
21617    pub vgprs_per_simd: u32,
21618    pub min_vgpr_allocation: u32,
21619    pub max_vgpr_allocation: u32,
21620    pub vgpr_allocation_granularity: u32,
21621}
21622
21623impl Default for PhysicalDeviceShaderCorePropertiesAMD {
21624    #[inline]
21625    fn default() -> Self {
21626        Self {
21627            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
21628            next: ptr::null_mut(),
21629            shader_engine_count: u32::default(),
21630            shader_arrays_per_engine_count: u32::default(),
21631            compute_units_per_shader_array: u32::default(),
21632            simd_per_compute_unit: u32::default(),
21633            wavefronts_per_simd: u32::default(),
21634            wavefront_size: u32::default(),
21635            sgprs_per_simd: u32::default(),
21636            min_sgpr_allocation: u32::default(),
21637            max_sgpr_allocation: u32::default(),
21638            sgpr_allocation_granularity: u32::default(),
21639            vgprs_per_simd: u32::default(),
21640            min_vgpr_allocation: u32::default(),
21641            max_vgpr_allocation: u32::default(),
21642            vgpr_allocation_granularity: u32::default(),
21643        }
21644    }
21645}
21646
21647unsafe impl Send for PhysicalDeviceShaderCorePropertiesAMD {}
21648unsafe impl Sync for PhysicalDeviceShaderCorePropertiesAMD {}
21649
21650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html>
21651#[repr(C)]
21652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21653pub struct PhysicalDeviceShaderCorePropertiesARM {
21654    pub s_type: StructureType,
21655    pub next: *mut c_void,
21656    pub pixel_rate: u32,
21657    pub texel_rate: u32,
21658    pub fma_rate: u32,
21659}
21660
21661impl Default for PhysicalDeviceShaderCorePropertiesARM {
21662    #[inline]
21663    fn default() -> Self {
21664        Self {
21665            s_type: StructureType::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM,
21666            next: ptr::null_mut(),
21667            pixel_rate: u32::default(),
21668            texel_rate: u32::default(),
21669            fma_rate: u32::default(),
21670        }
21671    }
21672}
21673
21674unsafe impl Send for PhysicalDeviceShaderCorePropertiesARM {}
21675unsafe impl Sync for PhysicalDeviceShaderCorePropertiesARM {}
21676
21677/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html>
21678#[repr(C)]
21679#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21680pub struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
21681    pub s_type: StructureType,
21682    pub next: *mut c_void,
21683    pub shader_demote_to_helper_invocation: Bool32,
21684}
21685
21686impl Default for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {
21687    #[inline]
21688    fn default() -> Self {
21689        Self {
21690            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
21691            next: ptr::null_mut(),
21692            shader_demote_to_helper_invocation: Bool32::default(),
21693        }
21694    }
21695}
21696
21697unsafe impl Send for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
21698unsafe impl Sync for PhysicalDeviceShaderDemoteToHelperInvocationFeatures {}
21699
21700/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html>
21701#[repr(C)]
21702#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21703pub struct PhysicalDeviceShaderDrawParametersFeatures {
21704    pub s_type: StructureType,
21705    pub next: *mut c_void,
21706    pub shader_draw_parameters: Bool32,
21707}
21708
21709impl Default for PhysicalDeviceShaderDrawParametersFeatures {
21710    #[inline]
21711    fn default() -> Self {
21712        Self {
21713            s_type: StructureType::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
21714            next: ptr::null_mut(),
21715            shader_draw_parameters: Bool32::default(),
21716        }
21717    }
21718}
21719
21720unsafe impl Send for PhysicalDeviceShaderDrawParametersFeatures {}
21721unsafe impl Sync for PhysicalDeviceShaderDrawParametersFeatures {}
21722
21723/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html>
21724#[repr(C)]
21725#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21726pub struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
21727    pub s_type: StructureType,
21728    pub next: *mut c_void,
21729    pub shader_early_and_late_fragment_tests: Bool32,
21730}
21731
21732impl Default for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
21733    #[inline]
21734    fn default() -> Self {
21735        Self {
21736            s_type:
21737                StructureType::PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD,
21738            next: ptr::null_mut(),
21739            shader_early_and_late_fragment_tests: Bool32::default(),
21740        }
21741    }
21742}
21743
21744unsafe impl Send for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
21745unsafe impl Sync for PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {}
21746
21747/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html>
21748#[repr(C)]
21749#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21750pub struct PhysicalDeviceShaderEnqueueFeaturesAMDX {
21751    pub s_type: StructureType,
21752    pub next: *mut c_void,
21753    pub shader_enqueue: Bool32,
21754    pub shader_mesh_enqueue: Bool32,
21755}
21756
21757impl Default for PhysicalDeviceShaderEnqueueFeaturesAMDX {
21758    #[inline]
21759    fn default() -> Self {
21760        Self {
21761            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX,
21762            next: ptr::null_mut(),
21763            shader_enqueue: Bool32::default(),
21764            shader_mesh_enqueue: Bool32::default(),
21765        }
21766    }
21767}
21768
21769unsafe impl Send for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
21770unsafe impl Sync for PhysicalDeviceShaderEnqueueFeaturesAMDX {}
21771
21772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html>
21773#[repr(C)]
21774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21775pub struct PhysicalDeviceShaderEnqueuePropertiesAMDX {
21776    pub s_type: StructureType,
21777    pub next: *mut c_void,
21778    pub max_execution_graph_depth: u32,
21779    pub max_execution_graph_shader_output_nodes: u32,
21780    pub max_execution_graph_shader_payload_size: u32,
21781    pub max_execution_graph_shader_payload_count: u32,
21782    pub execution_graph_dispatch_address_alignment: u32,
21783    pub max_execution_graph_workgroup_count: [u32; 3],
21784    pub max_execution_graph_workgroups: u32,
21785}
21786
21787impl Default for PhysicalDeviceShaderEnqueuePropertiesAMDX {
21788    #[inline]
21789    fn default() -> Self {
21790        Self {
21791            s_type: StructureType::PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX,
21792            next: ptr::null_mut(),
21793            max_execution_graph_depth: u32::default(),
21794            max_execution_graph_shader_output_nodes: u32::default(),
21795            max_execution_graph_shader_payload_size: u32::default(),
21796            max_execution_graph_shader_payload_count: u32::default(),
21797            execution_graph_dispatch_address_alignment: u32::default(),
21798            max_execution_graph_workgroup_count: [u32::default(); 3],
21799            max_execution_graph_workgroups: u32::default(),
21800        }
21801    }
21802}
21803
21804unsafe impl Send for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
21805unsafe impl Sync for PhysicalDeviceShaderEnqueuePropertiesAMDX {}
21806
21807/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html>
21808#[repr(C)]
21809#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21810pub struct PhysicalDeviceShaderExpectAssumeFeatures {
21811    pub s_type: StructureType,
21812    pub next: *mut c_void,
21813    pub shader_expect_assume: Bool32,
21814}
21815
21816impl Default for PhysicalDeviceShaderExpectAssumeFeatures {
21817    #[inline]
21818    fn default() -> Self {
21819        Self {
21820            s_type: StructureType::PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES,
21821            next: ptr::null_mut(),
21822            shader_expect_assume: Bool32::default(),
21823        }
21824    }
21825}
21826
21827unsafe impl Send for PhysicalDeviceShaderExpectAssumeFeatures {}
21828unsafe impl Sync for PhysicalDeviceShaderExpectAssumeFeatures {}
21829
21830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html>
21831#[repr(C)]
21832#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21833pub struct PhysicalDeviceShaderFloat16Int8Features {
21834    pub s_type: StructureType,
21835    pub next: *mut c_void,
21836    pub shader_float16: Bool32,
21837    pub shader_int8: Bool32,
21838}
21839
21840impl Default for PhysicalDeviceShaderFloat16Int8Features {
21841    #[inline]
21842    fn default() -> Self {
21843        Self {
21844            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
21845            next: ptr::null_mut(),
21846            shader_float16: Bool32::default(),
21847            shader_int8: Bool32::default(),
21848        }
21849    }
21850}
21851
21852unsafe impl Send for PhysicalDeviceShaderFloat16Int8Features {}
21853unsafe impl Sync for PhysicalDeviceShaderFloat16Int8Features {}
21854
21855/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat8FeaturesEXT.html>
21856#[repr(C)]
21857#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21858pub struct PhysicalDeviceShaderFloat8FeaturesEXT {
21859    pub s_type: StructureType,
21860    pub next: *mut c_void,
21861    pub shader_float8: Bool32,
21862    pub shader_float8_cooperative_matrix: Bool32,
21863}
21864
21865impl Default for PhysicalDeviceShaderFloat8FeaturesEXT {
21866    #[inline]
21867    fn default() -> Self {
21868        Self {
21869            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT,
21870            next: ptr::null_mut(),
21871            shader_float8: Bool32::default(),
21872            shader_float8_cooperative_matrix: Bool32::default(),
21873        }
21874    }
21875}
21876
21877unsafe impl Send for PhysicalDeviceShaderFloat8FeaturesEXT {}
21878unsafe impl Sync for PhysicalDeviceShaderFloat8FeaturesEXT {}
21879
21880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html>
21881#[repr(C)]
21882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21883pub struct PhysicalDeviceShaderFloatControls2Features {
21884    pub s_type: StructureType,
21885    pub next: *mut c_void,
21886    pub shader_float_controls2: Bool32,
21887}
21888
21889impl Default for PhysicalDeviceShaderFloatControls2Features {
21890    #[inline]
21891    fn default() -> Self {
21892        Self {
21893            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES,
21894            next: ptr::null_mut(),
21895            shader_float_controls2: Bool32::default(),
21896        }
21897    }
21898}
21899
21900unsafe impl Send for PhysicalDeviceShaderFloatControls2Features {}
21901unsafe impl Sync for PhysicalDeviceShaderFloatControls2Features {}
21902
21903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFmaFeaturesKHR.html>
21904#[repr(C)]
21905#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21906pub struct PhysicalDeviceShaderFmaFeaturesKHR {
21907    pub s_type: StructureType,
21908    pub next: *mut c_void,
21909    pub shader_fma_float16: Bool32,
21910    pub shader_fma_float32: Bool32,
21911    pub shader_fma_float64: Bool32,
21912}
21913
21914impl Default for PhysicalDeviceShaderFmaFeaturesKHR {
21915    #[inline]
21916    fn default() -> Self {
21917        Self {
21918            s_type: StructureType::PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR,
21919            next: ptr::null_mut(),
21920            shader_fma_float16: Bool32::default(),
21921            shader_fma_float32: Bool32::default(),
21922            shader_fma_float64: Bool32::default(),
21923        }
21924    }
21925}
21926
21927unsafe impl Send for PhysicalDeviceShaderFmaFeaturesKHR {}
21928unsafe impl Sync for PhysicalDeviceShaderFmaFeaturesKHR {}
21929
21930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html>
21931#[repr(C)]
21932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21933pub struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21934    pub s_type: StructureType,
21935    pub next: *mut c_void,
21936    pub shader_image_int64_atomics: Bool32,
21937    pub sparse_image_int64_atomics: Bool32,
21938}
21939
21940impl Default for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
21941    #[inline]
21942    fn default() -> Self {
21943        Self {
21944            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT,
21945            next: ptr::null_mut(),
21946            shader_image_int64_atomics: Bool32::default(),
21947            sparse_image_int64_atomics: Bool32::default(),
21948        }
21949    }
21950}
21951
21952unsafe impl Send for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21953unsafe impl Sync for PhysicalDeviceShaderImageAtomicInt64FeaturesEXT {}
21954
21955/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html>
21956#[repr(C)]
21957#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21958pub struct PhysicalDeviceShaderImageFootprintFeaturesNV {
21959    pub s_type: StructureType,
21960    pub next: *mut c_void,
21961    pub image_footprint: Bool32,
21962}
21963
21964impl Default for PhysicalDeviceShaderImageFootprintFeaturesNV {
21965    #[inline]
21966    fn default() -> Self {
21967        Self {
21968            s_type: StructureType::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
21969            next: ptr::null_mut(),
21970            image_footprint: Bool32::default(),
21971        }
21972    }
21973}
21974
21975unsafe impl Send for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21976unsafe impl Sync for PhysicalDeviceShaderImageFootprintFeaturesNV {}
21977
21978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html>
21979#[repr(C)]
21980#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
21981pub struct PhysicalDeviceShaderIntegerDotProductFeatures {
21982    pub s_type: StructureType,
21983    pub next: *mut c_void,
21984    pub shader_integer_dot_product: Bool32,
21985}
21986
21987impl Default for PhysicalDeviceShaderIntegerDotProductFeatures {
21988    #[inline]
21989    fn default() -> Self {
21990        Self {
21991            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
21992            next: ptr::null_mut(),
21993            shader_integer_dot_product: Bool32::default(),
21994        }
21995    }
21996}
21997
21998unsafe impl Send for PhysicalDeviceShaderIntegerDotProductFeatures {}
21999unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductFeatures {}
22000
22001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html>
22002#[repr(C)]
22003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22004pub struct PhysicalDeviceShaderIntegerDotProductProperties {
22005    pub s_type: StructureType,
22006    pub next: *mut c_void,
22007    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
22008    pub integer_dot_product_8bit_signed_accelerated: Bool32,
22009    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
22010    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
22011    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
22012    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
22013    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
22014    pub integer_dot_product_16bit_signed_accelerated: Bool32,
22015    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
22016    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
22017    pub integer_dot_product_32bit_signed_accelerated: Bool32,
22018    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
22019    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
22020    pub integer_dot_product_64bit_signed_accelerated: Bool32,
22021    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
22022    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
22023    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
22024    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
22025    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
22026    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
22027    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
22028        Bool32,
22029    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
22030    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
22031    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
22032    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
22033    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
22034    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
22035    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
22036    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
22037    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
22038}
22039
22040impl Default for PhysicalDeviceShaderIntegerDotProductProperties {
22041    #[inline]
22042    fn default() -> Self {
22043        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() }
22044    }
22045}
22046
22047unsafe impl Send for PhysicalDeviceShaderIntegerDotProductProperties {}
22048unsafe impl Sync for PhysicalDeviceShaderIntegerDotProductProperties {}
22049
22050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html>
22051#[repr(C)]
22052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22053pub struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
22054    pub s_type: StructureType,
22055    pub next: *mut c_void,
22056    pub shader_integer_functions2: Bool32,
22057}
22058
22059impl Default for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
22060    #[inline]
22061    fn default() -> Self {
22062        Self {
22063            s_type: StructureType::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
22064            next: ptr::null_mut(),
22065            shader_integer_functions2: Bool32::default(),
22066        }
22067    }
22068}
22069
22070unsafe impl Send for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
22071unsafe impl Sync for PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {}
22072
22073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderLongVectorFeaturesEXT.html>
22074#[repr(C)]
22075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22076pub struct PhysicalDeviceShaderLongVectorFeaturesEXT {
22077    pub s_type: StructureType,
22078    pub next: *mut c_void,
22079    pub long_vector: Bool32,
22080}
22081
22082impl Default for PhysicalDeviceShaderLongVectorFeaturesEXT {
22083    #[inline]
22084    fn default() -> Self {
22085        Self {
22086            s_type: StructureType::PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT,
22087            next: ptr::null_mut(),
22088            long_vector: Bool32::default(),
22089        }
22090    }
22091}
22092
22093unsafe impl Send for PhysicalDeviceShaderLongVectorFeaturesEXT {}
22094unsafe impl Sync for PhysicalDeviceShaderLongVectorFeaturesEXT {}
22095
22096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderLongVectorPropertiesEXT.html>
22097#[repr(C)]
22098#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22099pub struct PhysicalDeviceShaderLongVectorPropertiesEXT {
22100    pub s_type: StructureType,
22101    pub next: *mut c_void,
22102    pub max_vector_components: u32,
22103}
22104
22105impl Default for PhysicalDeviceShaderLongVectorPropertiesEXT {
22106    #[inline]
22107    fn default() -> Self {
22108        Self {
22109            s_type: StructureType::PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT,
22110            next: ptr::null_mut(),
22111            max_vector_components: u32::default(),
22112        }
22113    }
22114}
22115
22116unsafe impl Send for PhysicalDeviceShaderLongVectorPropertiesEXT {}
22117unsafe impl Sync for PhysicalDeviceShaderLongVectorPropertiesEXT {}
22118
22119/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html>
22120#[repr(C)]
22121#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22122pub struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
22123    pub s_type: StructureType,
22124    pub next: *mut c_void,
22125    pub shader_maximal_reconvergence: Bool32,
22126}
22127
22128impl Default for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {
22129    #[inline]
22130    fn default() -> Self {
22131        Self {
22132            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR,
22133            next: ptr::null_mut(),
22134            shader_maximal_reconvergence: Bool32::default(),
22135        }
22136    }
22137}
22138
22139unsafe impl Send for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
22140unsafe impl Sync for PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR {}
22141
22142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html>
22143#[repr(C)]
22144#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22145pub struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
22146    pub s_type: StructureType,
22147    pub next: *mut c_void,
22148    pub shader_module_identifier: Bool32,
22149}
22150
22151impl Default for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {
22152    #[inline]
22153    fn default() -> Self {
22154        Self {
22155            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT,
22156            next: ptr::null_mut(),
22157            shader_module_identifier: Bool32::default(),
22158        }
22159    }
22160}
22161
22162unsafe impl Send for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
22163unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierFeaturesEXT {}
22164
22165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html>
22166#[repr(C)]
22167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22168pub struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
22169    pub s_type: StructureType,
22170    pub next: *mut c_void,
22171    pub shader_module_identifier_algorithm_uuid: ByteArray<UUID_SIZE>,
22172}
22173
22174impl Default for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {
22175    #[inline]
22176    fn default() -> Self {
22177        Self {
22178            s_type: StructureType::PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT,
22179            next: ptr::null_mut(),
22180            shader_module_identifier_algorithm_uuid: ByteArray::default(),
22181        }
22182    }
22183}
22184
22185unsafe impl Send for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
22186unsafe impl Sync for PhysicalDeviceShaderModuleIdentifierPropertiesEXT {}
22187
22188/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html>
22189#[repr(C)]
22190#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22191pub struct PhysicalDeviceShaderObjectFeaturesEXT {
22192    pub s_type: StructureType,
22193    pub next: *mut c_void,
22194    pub shader_object: Bool32,
22195}
22196
22197impl Default for PhysicalDeviceShaderObjectFeaturesEXT {
22198    #[inline]
22199    fn default() -> Self {
22200        Self {
22201            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT,
22202            next: ptr::null_mut(),
22203            shader_object: Bool32::default(),
22204        }
22205    }
22206}
22207
22208unsafe impl Send for PhysicalDeviceShaderObjectFeaturesEXT {}
22209unsafe impl Sync for PhysicalDeviceShaderObjectFeaturesEXT {}
22210
22211/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html>
22212#[repr(C)]
22213#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22214pub struct PhysicalDeviceShaderObjectPropertiesEXT {
22215    pub s_type: StructureType,
22216    pub next: *mut c_void,
22217    pub shader_binary_uuid: ByteArray<UUID_SIZE>,
22218    pub shader_binary_version: u32,
22219}
22220
22221impl Default for PhysicalDeviceShaderObjectPropertiesEXT {
22222    #[inline]
22223    fn default() -> Self {
22224        Self {
22225            s_type: StructureType::PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT,
22226            next: ptr::null_mut(),
22227            shader_binary_uuid: ByteArray::default(),
22228            shader_binary_version: u32::default(),
22229        }
22230    }
22231}
22232
22233unsafe impl Send for PhysicalDeviceShaderObjectPropertiesEXT {}
22234unsafe impl Sync for PhysicalDeviceShaderObjectPropertiesEXT {}
22235
22236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html>
22237#[repr(C)]
22238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22239pub struct PhysicalDeviceShaderQuadControlFeaturesKHR {
22240    pub s_type: StructureType,
22241    pub next: *mut c_void,
22242    pub shader_quad_control: Bool32,
22243}
22244
22245impl Default for PhysicalDeviceShaderQuadControlFeaturesKHR {
22246    #[inline]
22247    fn default() -> Self {
22248        Self {
22249            s_type: StructureType::PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR,
22250            next: ptr::null_mut(),
22251            shader_quad_control: Bool32::default(),
22252        }
22253    }
22254}
22255
22256unsafe impl Send for PhysicalDeviceShaderQuadControlFeaturesKHR {}
22257unsafe impl Sync for PhysicalDeviceShaderQuadControlFeaturesKHR {}
22258
22259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html>
22260#[repr(C)]
22261#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22262pub struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
22263    pub s_type: StructureType,
22264    pub next: *mut c_void,
22265    pub shader_relaxed_extended_instruction: Bool32,
22266}
22267
22268impl Default for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {
22269    #[inline]
22270    fn default() -> Self {
22271        Self {
22272            s_type: StructureType::PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR,
22273            next: ptr::null_mut(),
22274            shader_relaxed_extended_instruction: Bool32::default(),
22275        }
22276    }
22277}
22278
22279unsafe impl Send for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
22280unsafe impl Sync for PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR {}
22281
22282/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html>
22283#[repr(C)]
22284#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22285pub struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
22286    pub s_type: StructureType,
22287    pub next: *mut c_void,
22288    pub shader_replicated_composites: Bool32,
22289}
22290
22291impl Default for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {
22292    #[inline]
22293    fn default() -> Self {
22294        Self {
22295            s_type: StructureType::PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT,
22296            next: ptr::null_mut(),
22297            shader_replicated_composites: Bool32::default(),
22298        }
22299    }
22300}
22301
22302unsafe impl Send for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
22303unsafe impl Sync for PhysicalDeviceShaderReplicatedCompositesFeaturesEXT {}
22304
22305/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html>
22306#[repr(C)]
22307#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22308pub struct PhysicalDeviceShaderSMBuiltinsFeaturesNV {
22309    pub s_type: StructureType,
22310    pub next: *mut c_void,
22311    pub shader_sm_builtins: Bool32,
22312}
22313
22314impl Default for PhysicalDeviceShaderSMBuiltinsFeaturesNV {
22315    #[inline]
22316    fn default() -> Self {
22317        Self {
22318            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
22319            next: ptr::null_mut(),
22320            shader_sm_builtins: Bool32::default(),
22321        }
22322    }
22323}
22324
22325unsafe impl Send for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
22326unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsFeaturesNV {}
22327
22328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html>
22329#[repr(C)]
22330#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22331pub struct PhysicalDeviceShaderSMBuiltinsPropertiesNV {
22332    pub s_type: StructureType,
22333    pub next: *mut c_void,
22334    pub shader_sm_count: u32,
22335    pub shader_warps_per_sm: u32,
22336}
22337
22338impl Default for PhysicalDeviceShaderSMBuiltinsPropertiesNV {
22339    #[inline]
22340    fn default() -> Self {
22341        Self {
22342            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
22343            next: ptr::null_mut(),
22344            shader_sm_count: u32::default(),
22345            shader_warps_per_sm: u32::default(),
22346        }
22347    }
22348}
22349
22350unsafe impl Send for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
22351unsafe impl Sync for PhysicalDeviceShaderSMBuiltinsPropertiesNV {}
22352
22353/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html>
22354#[repr(C)]
22355#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22356pub struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
22357    pub s_type: StructureType,
22358    pub next: *mut c_void,
22359    pub shader_subgroup_extended_types: Bool32,
22360}
22361
22362impl Default for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {
22363    #[inline]
22364    fn default() -> Self {
22365        Self {
22366            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
22367            next: ptr::null_mut(),
22368            shader_subgroup_extended_types: Bool32::default(),
22369        }
22370    }
22371}
22372
22373unsafe impl Send for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
22374unsafe impl Sync for PhysicalDeviceShaderSubgroupExtendedTypesFeatures {}
22375
22376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT.html>
22377#[repr(C)]
22378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22379pub struct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT {
22380    pub s_type: StructureType,
22381    pub next: *mut c_void,
22382    pub shader_subgroup_partitioned: Bool32,
22383}
22384
22385impl Default for PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT {
22386    #[inline]
22387    fn default() -> Self {
22388        Self {
22389            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT,
22390            next: ptr::null_mut(),
22391            shader_subgroup_partitioned: Bool32::default(),
22392        }
22393    }
22394}
22395
22396unsafe impl Send for PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT {}
22397unsafe impl Sync for PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT {}
22398
22399/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html>
22400#[repr(C)]
22401#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22402pub struct PhysicalDeviceShaderSubgroupRotateFeatures {
22403    pub s_type: StructureType,
22404    pub next: *mut c_void,
22405    pub shader_subgroup_rotate: Bool32,
22406    pub shader_subgroup_rotate_clustered: Bool32,
22407}
22408
22409impl Default for PhysicalDeviceShaderSubgroupRotateFeatures {
22410    #[inline]
22411    fn default() -> Self {
22412        Self {
22413            s_type: StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
22414            next: ptr::null_mut(),
22415            shader_subgroup_rotate: Bool32::default(),
22416            shader_subgroup_rotate_clustered: Bool32::default(),
22417        }
22418    }
22419}
22420
22421unsafe impl Send for PhysicalDeviceShaderSubgroupRotateFeatures {}
22422unsafe impl Sync for PhysicalDeviceShaderSubgroupRotateFeatures {}
22423
22424/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html>
22425#[repr(C)]
22426#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22427pub struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
22428    pub s_type: StructureType,
22429    pub next: *mut c_void,
22430    pub shader_subgroup_uniform_control_flow: Bool32,
22431}
22432
22433impl Default for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
22434    #[inline]
22435    fn default() -> Self {
22436        Self {
22437            s_type:
22438                StructureType::PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
22439            next: ptr::null_mut(),
22440            shader_subgroup_uniform_control_flow: Bool32::default(),
22441        }
22442    }
22443}
22444
22445unsafe impl Send for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
22446unsafe impl Sync for PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {}
22447
22448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html>
22449#[repr(C)]
22450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22451pub struct PhysicalDeviceShaderTerminateInvocationFeatures {
22452    pub s_type: StructureType,
22453    pub next: *mut c_void,
22454    pub shader_terminate_invocation: Bool32,
22455}
22456
22457impl Default for PhysicalDeviceShaderTerminateInvocationFeatures {
22458    #[inline]
22459    fn default() -> Self {
22460        Self {
22461            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
22462            next: ptr::null_mut(),
22463            shader_terminate_invocation: Bool32::default(),
22464        }
22465    }
22466}
22467
22468unsafe impl Send for PhysicalDeviceShaderTerminateInvocationFeatures {}
22469unsafe impl Sync for PhysicalDeviceShaderTerminateInvocationFeatures {}
22470
22471/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html>
22472#[repr(C)]
22473#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22474pub struct PhysicalDeviceShaderTileImageFeaturesEXT {
22475    pub s_type: StructureType,
22476    pub next: *mut c_void,
22477    pub shader_tile_image_color_read_access: Bool32,
22478    pub shader_tile_image_depth_read_access: Bool32,
22479    pub shader_tile_image_stencil_read_access: Bool32,
22480}
22481
22482impl Default for PhysicalDeviceShaderTileImageFeaturesEXT {
22483    #[inline]
22484    fn default() -> Self {
22485        Self {
22486            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT,
22487            next: ptr::null_mut(),
22488            shader_tile_image_color_read_access: Bool32::default(),
22489            shader_tile_image_depth_read_access: Bool32::default(),
22490            shader_tile_image_stencil_read_access: Bool32::default(),
22491        }
22492    }
22493}
22494
22495unsafe impl Send for PhysicalDeviceShaderTileImageFeaturesEXT {}
22496unsafe impl Sync for PhysicalDeviceShaderTileImageFeaturesEXT {}
22497
22498/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html>
22499#[repr(C)]
22500#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22501pub struct PhysicalDeviceShaderTileImagePropertiesEXT {
22502    pub s_type: StructureType,
22503    pub next: *mut c_void,
22504    pub shader_tile_image_coherent_read_accelerated: Bool32,
22505    pub shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32,
22506    pub shader_tile_image_read_from_helper_invocation: Bool32,
22507}
22508
22509impl Default for PhysicalDeviceShaderTileImagePropertiesEXT {
22510    #[inline]
22511    fn default() -> Self {
22512        Self {
22513            s_type: StructureType::PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT,
22514            next: ptr::null_mut(),
22515            shader_tile_image_coherent_read_accelerated: Bool32::default(),
22516            shader_tile_image_read_sample_from_pixel_rate_invocation: Bool32::default(),
22517            shader_tile_image_read_from_helper_invocation: Bool32::default(),
22518        }
22519    }
22520}
22521
22522unsafe impl Send for PhysicalDeviceShaderTileImagePropertiesEXT {}
22523unsafe impl Sync for PhysicalDeviceShaderTileImagePropertiesEXT {}
22524
22525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.html>
22526#[repr(C)]
22527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22528pub struct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
22529    pub s_type: StructureType,
22530    pub next: *mut c_void,
22531    pub shader_uniform_buffer_unsized_array: Bool32,
22532}
22533
22534impl Default for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {
22535    #[inline]
22536    fn default() -> Self {
22537        Self {
22538            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT,
22539            next: ptr::null_mut(),
22540            shader_uniform_buffer_unsized_array: Bool32::default(),
22541        }
22542    }
22543}
22544
22545unsafe impl Send for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
22546unsafe impl Sync for PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT {}
22547
22548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUntypedPointersFeaturesKHR.html>
22549#[repr(C)]
22550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22551pub struct PhysicalDeviceShaderUntypedPointersFeaturesKHR {
22552    pub s_type: StructureType,
22553    pub next: *mut c_void,
22554    pub shader_untyped_pointers: Bool32,
22555}
22556
22557impl Default for PhysicalDeviceShaderUntypedPointersFeaturesKHR {
22558    #[inline]
22559    fn default() -> Self {
22560        Self {
22561            s_type: StructureType::PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR,
22562            next: ptr::null_mut(),
22563            shader_untyped_pointers: Bool32::default(),
22564        }
22565    }
22566}
22567
22568unsafe impl Send for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
22569unsafe impl Sync for PhysicalDeviceShaderUntypedPointersFeaturesKHR {}
22570
22571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html>
22572#[repr(C)]
22573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22574pub struct PhysicalDeviceShadingRateImageFeaturesNV {
22575    pub s_type: StructureType,
22576    pub next: *mut c_void,
22577    pub shading_rate_image: Bool32,
22578    pub shading_rate_coarse_sample_order: Bool32,
22579}
22580
22581impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
22582    #[inline]
22583    fn default() -> Self {
22584        Self {
22585            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
22586            next: ptr::null_mut(),
22587            shading_rate_image: Bool32::default(),
22588            shading_rate_coarse_sample_order: Bool32::default(),
22589        }
22590    }
22591}
22592
22593unsafe impl Send for PhysicalDeviceShadingRateImageFeaturesNV {}
22594unsafe impl Sync for PhysicalDeviceShadingRateImageFeaturesNV {}
22595
22596/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html>
22597#[repr(C)]
22598#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22599pub struct PhysicalDeviceShadingRateImagePropertiesNV {
22600    pub s_type: StructureType,
22601    pub next: *mut c_void,
22602    pub shading_rate_texel_size: Extent2D,
22603    pub shading_rate_palette_size: u32,
22604    pub shading_rate_max_coarse_samples: u32,
22605}
22606
22607impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
22608    #[inline]
22609    fn default() -> Self {
22610        Self {
22611            s_type: StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
22612            next: ptr::null_mut(),
22613            shading_rate_texel_size: Extent2D::default(),
22614            shading_rate_palette_size: u32::default(),
22615            shading_rate_max_coarse_samples: u32::default(),
22616        }
22617    }
22618}
22619
22620unsafe impl Send for PhysicalDeviceShadingRateImagePropertiesNV {}
22621unsafe impl Sync for PhysicalDeviceShadingRateImagePropertiesNV {}
22622
22623/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html>
22624#[repr(C)]
22625#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22626pub struct PhysicalDeviceSparseImageFormatInfo2 {
22627    pub s_type: StructureType,
22628    pub next: *const c_void,
22629    pub format: Format,
22630    pub type_: ImageType,
22631    pub samples: SampleCountFlags,
22632    pub usage: ImageUsageFlags,
22633    pub tiling: ImageTiling,
22634}
22635
22636impl Default for PhysicalDeviceSparseImageFormatInfo2 {
22637    #[inline]
22638    fn default() -> Self {
22639        Self {
22640            s_type: StructureType::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
22641            next: ptr::null(),
22642            format: Format::default(),
22643            type_: ImageType::default(),
22644            samples: SampleCountFlags::default(),
22645            usage: ImageUsageFlags::default(),
22646            tiling: ImageTiling::default(),
22647        }
22648    }
22649}
22650
22651unsafe impl Send for PhysicalDeviceSparseImageFormatInfo2 {}
22652unsafe impl Sync for PhysicalDeviceSparseImageFormatInfo2 {}
22653
22654/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html>
22655#[repr(C)]
22656#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
22657pub struct PhysicalDeviceSparseProperties {
22658    pub residency_standard_2d_block_shape: Bool32,
22659    pub residency_standard_2d_multisample_block_shape: Bool32,
22660    pub residency_standard_3d_block_shape: Bool32,
22661    pub residency_aligned_mip_size: Bool32,
22662    pub residency_non_resident_strict: Bool32,
22663}
22664
22665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html>
22666#[repr(C)]
22667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22668pub struct PhysicalDeviceSubgroupProperties {
22669    pub s_type: StructureType,
22670    pub next: *mut c_void,
22671    pub subgroup_size: u32,
22672    pub supported_stages: ShaderStageFlags,
22673    pub supported_operations: SubgroupFeatureFlags,
22674    pub quad_operations_in_all_stages: Bool32,
22675}
22676
22677impl Default for PhysicalDeviceSubgroupProperties {
22678    #[inline]
22679    fn default() -> Self {
22680        Self {
22681            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
22682            next: ptr::null_mut(),
22683            subgroup_size: u32::default(),
22684            supported_stages: ShaderStageFlags::default(),
22685            supported_operations: SubgroupFeatureFlags::default(),
22686            quad_operations_in_all_stages: Bool32::default(),
22687        }
22688    }
22689}
22690
22691unsafe impl Send for PhysicalDeviceSubgroupProperties {}
22692unsafe impl Sync for PhysicalDeviceSubgroupProperties {}
22693
22694/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html>
22695#[repr(C)]
22696#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22697pub struct PhysicalDeviceSubgroupSizeControlFeatures {
22698    pub s_type: StructureType,
22699    pub next: *mut c_void,
22700    pub subgroup_size_control: Bool32,
22701    pub compute_full_subgroups: Bool32,
22702}
22703
22704impl Default for PhysicalDeviceSubgroupSizeControlFeatures {
22705    #[inline]
22706    fn default() -> Self {
22707        Self {
22708            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
22709            next: ptr::null_mut(),
22710            subgroup_size_control: Bool32::default(),
22711            compute_full_subgroups: Bool32::default(),
22712        }
22713    }
22714}
22715
22716unsafe impl Send for PhysicalDeviceSubgroupSizeControlFeatures {}
22717unsafe impl Sync for PhysicalDeviceSubgroupSizeControlFeatures {}
22718
22719/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html>
22720#[repr(C)]
22721#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22722pub struct PhysicalDeviceSubgroupSizeControlProperties {
22723    pub s_type: StructureType,
22724    pub next: *mut c_void,
22725    pub min_subgroup_size: u32,
22726    pub max_subgroup_size: u32,
22727    pub max_compute_workgroup_subgroups: u32,
22728    pub required_subgroup_size_stages: ShaderStageFlags,
22729}
22730
22731impl Default for PhysicalDeviceSubgroupSizeControlProperties {
22732    #[inline]
22733    fn default() -> Self {
22734        Self {
22735            s_type: StructureType::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
22736            next: ptr::null_mut(),
22737            min_subgroup_size: u32::default(),
22738            max_subgroup_size: u32::default(),
22739            max_compute_workgroup_subgroups: u32::default(),
22740            required_subgroup_size_stages: ShaderStageFlags::default(),
22741        }
22742    }
22743}
22744
22745unsafe impl Send for PhysicalDeviceSubgroupSizeControlProperties {}
22746unsafe impl Sync for PhysicalDeviceSubgroupSizeControlProperties {}
22747
22748/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html>
22749#[repr(C)]
22750#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22751pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
22752    pub s_type: StructureType,
22753    pub next: *mut c_void,
22754    pub subpass_merge_feedback: Bool32,
22755}
22756
22757impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
22758    #[inline]
22759    fn default() -> Self {
22760        Self {
22761            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT,
22762            next: ptr::null_mut(),
22763            subpass_merge_feedback: Bool32::default(),
22764        }
22765    }
22766}
22767
22768unsafe impl Send for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
22769unsafe impl Sync for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {}
22770
22771/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html>
22772#[repr(C)]
22773#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22774pub struct PhysicalDeviceSubpassShadingFeaturesHUAWEI {
22775    pub s_type: StructureType,
22776    pub next: *mut c_void,
22777    pub subpass_shading: Bool32,
22778}
22779
22780impl Default for PhysicalDeviceSubpassShadingFeaturesHUAWEI {
22781    #[inline]
22782    fn default() -> Self {
22783        Self {
22784            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI,
22785            next: ptr::null_mut(),
22786            subpass_shading: Bool32::default(),
22787        }
22788    }
22789}
22790
22791unsafe impl Send for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
22792unsafe impl Sync for PhysicalDeviceSubpassShadingFeaturesHUAWEI {}
22793
22794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html>
22795#[repr(C)]
22796#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22797pub struct PhysicalDeviceSubpassShadingPropertiesHUAWEI {
22798    pub s_type: StructureType,
22799    pub next: *mut c_void,
22800    pub max_subpass_shading_workgroup_size_aspect_ratio: u32,
22801}
22802
22803impl Default for PhysicalDeviceSubpassShadingPropertiesHUAWEI {
22804    #[inline]
22805    fn default() -> Self {
22806        Self {
22807            s_type: StructureType::PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI,
22808            next: ptr::null_mut(),
22809            max_subpass_shading_workgroup_size_aspect_ratio: u32::default(),
22810        }
22811    }
22812}
22813
22814unsafe impl Send for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
22815unsafe impl Sync for PhysicalDeviceSubpassShadingPropertiesHUAWEI {}
22816
22817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html>
22818#[repr(C)]
22819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22820pub struct PhysicalDeviceSurfaceInfo2KHR {
22821    pub s_type: StructureType,
22822    pub next: *const c_void,
22823    pub surface: SurfaceKHR,
22824}
22825
22826impl Default for PhysicalDeviceSurfaceInfo2KHR {
22827    #[inline]
22828    fn default() -> Self {
22829        Self {
22830            s_type: StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
22831            next: ptr::null(),
22832            surface: SurfaceKHR::default(),
22833        }
22834    }
22835}
22836
22837unsafe impl Send for PhysicalDeviceSurfaceInfo2KHR {}
22838unsafe impl Sync for PhysicalDeviceSurfaceInfo2KHR {}
22839
22840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR.html>
22841#[repr(C)]
22842#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22843pub struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
22844    pub s_type: StructureType,
22845    pub next: *mut c_void,
22846    pub swapchain_maintenance1: Bool32,
22847}
22848
22849impl Default for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {
22850    #[inline]
22851    fn default() -> Self {
22852        Self {
22853            s_type: StructureType::PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR,
22854            next: ptr::null_mut(),
22855            swapchain_maintenance1: Bool32::default(),
22856        }
22857    }
22858}
22859
22860unsafe impl Send for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
22861unsafe impl Sync for PhysicalDeviceSwapchainMaintenance1FeaturesKHR {}
22862
22863/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html>
22864#[repr(C)]
22865#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22866pub struct PhysicalDeviceSynchronization2Features {
22867    pub s_type: StructureType,
22868    pub next: *mut c_void,
22869    pub synchronization2: Bool32,
22870}
22871
22872impl Default for PhysicalDeviceSynchronization2Features {
22873    #[inline]
22874    fn default() -> Self {
22875        Self {
22876            s_type: StructureType::PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
22877            next: ptr::null_mut(),
22878            synchronization2: Bool32::default(),
22879        }
22880    }
22881}
22882
22883unsafe impl Send for PhysicalDeviceSynchronization2Features {}
22884unsafe impl Sync for PhysicalDeviceSynchronization2Features {}
22885
22886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorFeaturesARM.html>
22887#[repr(C)]
22888#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22889pub struct PhysicalDeviceTensorFeaturesARM {
22890    pub s_type: StructureType,
22891    pub next: *mut c_void,
22892    pub tensor_non_packed: Bool32,
22893    pub shader_tensor_access: Bool32,
22894    pub shader_storage_tensor_array_dynamic_indexing: Bool32,
22895    pub shader_storage_tensor_array_non_uniform_indexing: Bool32,
22896    pub descriptor_binding_storage_tensor_update_after_bind: Bool32,
22897    pub tensors: Bool32,
22898}
22899
22900impl Default for PhysicalDeviceTensorFeaturesARM {
22901    #[inline]
22902    fn default() -> Self {
22903        Self {
22904            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_FEATURES_ARM,
22905            next: ptr::null_mut(),
22906            tensor_non_packed: Bool32::default(),
22907            shader_tensor_access: Bool32::default(),
22908            shader_storage_tensor_array_dynamic_indexing: Bool32::default(),
22909            shader_storage_tensor_array_non_uniform_indexing: Bool32::default(),
22910            descriptor_binding_storage_tensor_update_after_bind: Bool32::default(),
22911            tensors: Bool32::default(),
22912        }
22913    }
22914}
22915
22916unsafe impl Send for PhysicalDeviceTensorFeaturesARM {}
22917unsafe impl Sync for PhysicalDeviceTensorFeaturesARM {}
22918
22919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorPropertiesARM.html>
22920#[repr(C)]
22921#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22922pub struct PhysicalDeviceTensorPropertiesARM {
22923    pub s_type: StructureType,
22924    pub next: *mut c_void,
22925    pub max_tensor_dimension_count: u32,
22926    pub max_tensor_elements: u64,
22927    pub max_per_dimension_tensor_elements: u64,
22928    pub max_tensor_stride: i64,
22929    pub max_tensor_size: u64,
22930    pub max_tensor_shader_access_array_length: u32,
22931    pub max_tensor_shader_access_size: u32,
22932    pub max_descriptor_set_storage_tensors: u32,
22933    pub max_per_stage_descriptor_set_storage_tensors: u32,
22934    pub max_descriptor_set_update_after_bind_storage_tensors: u32,
22935    pub max_per_stage_descriptor_update_after_bind_storage_tensors: u32,
22936    pub shader_storage_tensor_array_non_uniform_indexing_native: Bool32,
22937    pub shader_tensor_supported_stages: ShaderStageFlags,
22938}
22939
22940impl Default for PhysicalDeviceTensorPropertiesARM {
22941    #[inline]
22942    fn default() -> Self {
22943        Self {
22944            s_type: StructureType::PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM,
22945            next: ptr::null_mut(),
22946            max_tensor_dimension_count: u32::default(),
22947            max_tensor_elements: u64::default(),
22948            max_per_dimension_tensor_elements: u64::default(),
22949            max_tensor_stride: i64::default(),
22950            max_tensor_size: u64::default(),
22951            max_tensor_shader_access_array_length: u32::default(),
22952            max_tensor_shader_access_size: u32::default(),
22953            max_descriptor_set_storage_tensors: u32::default(),
22954            max_per_stage_descriptor_set_storage_tensors: u32::default(),
22955            max_descriptor_set_update_after_bind_storage_tensors: u32::default(),
22956            max_per_stage_descriptor_update_after_bind_storage_tensors: u32::default(),
22957            shader_storage_tensor_array_non_uniform_indexing_native: Bool32::default(),
22958            shader_tensor_supported_stages: ShaderStageFlags::default(),
22959        }
22960    }
22961}
22962
22963unsafe impl Send for PhysicalDeviceTensorPropertiesARM {}
22964unsafe impl Sync for PhysicalDeviceTensorPropertiesARM {}
22965
22966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html>
22967#[repr(C)]
22968#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22969pub struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22970    pub s_type: StructureType,
22971    pub next: *mut c_void,
22972    pub texel_buffer_alignment: Bool32,
22973}
22974
22975impl Default for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {
22976    #[inline]
22977    fn default() -> Self {
22978        Self {
22979            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
22980            next: ptr::null_mut(),
22981            texel_buffer_alignment: Bool32::default(),
22982        }
22983    }
22984}
22985
22986unsafe impl Send for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22987unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentFeaturesEXT {}
22988
22989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html>
22990#[repr(C)]
22991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
22992pub struct PhysicalDeviceTexelBufferAlignmentProperties {
22993    pub s_type: StructureType,
22994    pub next: *mut c_void,
22995    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
22996    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
22997    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
22998    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
22999}
23000
23001impl Default for PhysicalDeviceTexelBufferAlignmentProperties {
23002    #[inline]
23003    fn default() -> Self {
23004        Self {
23005            s_type: StructureType::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
23006            next: ptr::null_mut(),
23007            storage_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
23008            storage_texel_buffer_offset_single_texel_alignment: Bool32::default(),
23009            uniform_texel_buffer_offset_alignment_bytes: DeviceSize::default(),
23010            uniform_texel_buffer_offset_single_texel_alignment: Bool32::default(),
23011        }
23012    }
23013}
23014
23015unsafe impl Send for PhysicalDeviceTexelBufferAlignmentProperties {}
23016unsafe impl Sync for PhysicalDeviceTexelBufferAlignmentProperties {}
23017
23018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT.html>
23019#[repr(C)]
23020#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23021pub struct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {
23022    pub s_type: StructureType,
23023    pub next: *mut c_void,
23024    pub textureCompressionASTC_3D: Bool32,
23025}
23026
23027impl Default for PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {
23028    #[inline]
23029    fn default() -> Self {
23030        Self {
23031            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT,
23032            next: ptr::null_mut(),
23033            textureCompressionASTC_3D: Bool32::default(),
23034        }
23035    }
23036}
23037
23038unsafe impl Send for PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {}
23039unsafe impl Sync for PhysicalDeviceTextureCompressionASTC3DFeaturesEXT {}
23040
23041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html>
23042#[repr(C)]
23043#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23044pub struct PhysicalDeviceTextureCompressionASTCHDRFeatures {
23045    pub s_type: StructureType,
23046    pub next: *mut c_void,
23047    pub texture_compression_astc_hdr: Bool32,
23048}
23049
23050impl Default for PhysicalDeviceTextureCompressionASTCHDRFeatures {
23051    #[inline]
23052    fn default() -> Self {
23053        Self {
23054            s_type: StructureType::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
23055            next: ptr::null_mut(),
23056            texture_compression_astc_hdr: Bool32::default(),
23057        }
23058    }
23059}
23060
23061unsafe impl Send for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
23062unsafe impl Sync for PhysicalDeviceTextureCompressionASTCHDRFeatures {}
23063
23064/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapFeaturesQCOM.html>
23065#[repr(C)]
23066#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23067pub struct PhysicalDeviceTileMemoryHeapFeaturesQCOM {
23068    pub s_type: StructureType,
23069    pub next: *mut c_void,
23070    pub tile_memory_heap: Bool32,
23071}
23072
23073impl Default for PhysicalDeviceTileMemoryHeapFeaturesQCOM {
23074    #[inline]
23075    fn default() -> Self {
23076        Self {
23077            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM,
23078            next: ptr::null_mut(),
23079            tile_memory_heap: Bool32::default(),
23080        }
23081    }
23082}
23083
23084unsafe impl Send for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
23085unsafe impl Sync for PhysicalDeviceTileMemoryHeapFeaturesQCOM {}
23086
23087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapPropertiesQCOM.html>
23088#[repr(C)]
23089#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23090pub struct PhysicalDeviceTileMemoryHeapPropertiesQCOM {
23091    pub s_type: StructureType,
23092    pub next: *mut c_void,
23093    pub queue_submit_boundary: Bool32,
23094    pub tile_buffer_transfers: Bool32,
23095}
23096
23097impl Default for PhysicalDeviceTileMemoryHeapPropertiesQCOM {
23098    #[inline]
23099    fn default() -> Self {
23100        Self {
23101            s_type: StructureType::PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM,
23102            next: ptr::null_mut(),
23103            queue_submit_boundary: Bool32::default(),
23104            tile_buffer_transfers: Bool32::default(),
23105        }
23106    }
23107}
23108
23109unsafe impl Send for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
23110unsafe impl Sync for PhysicalDeviceTileMemoryHeapPropertiesQCOM {}
23111
23112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html>
23113#[repr(C)]
23114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23115pub struct PhysicalDeviceTilePropertiesFeaturesQCOM {
23116    pub s_type: StructureType,
23117    pub next: *mut c_void,
23118    pub tile_properties: Bool32,
23119}
23120
23121impl Default for PhysicalDeviceTilePropertiesFeaturesQCOM {
23122    #[inline]
23123    fn default() -> Self {
23124        Self {
23125            s_type: StructureType::PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM,
23126            next: ptr::null_mut(),
23127            tile_properties: Bool32::default(),
23128        }
23129    }
23130}
23131
23132unsafe impl Send for PhysicalDeviceTilePropertiesFeaturesQCOM {}
23133unsafe impl Sync for PhysicalDeviceTilePropertiesFeaturesQCOM {}
23134
23135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingFeaturesQCOM.html>
23136#[repr(C)]
23137#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23138pub struct PhysicalDeviceTileShadingFeaturesQCOM {
23139    pub s_type: StructureType,
23140    pub next: *mut c_void,
23141    pub tile_shading: Bool32,
23142    pub tile_shading_fragment_stage: Bool32,
23143    pub tile_shading_color_attachments: Bool32,
23144    pub tile_shading_depth_attachments: Bool32,
23145    pub tile_shading_stencil_attachments: Bool32,
23146    pub tile_shading_input_attachments: Bool32,
23147    pub tile_shading_sampled_attachments: Bool32,
23148    pub tile_shading_per_tile_draw: Bool32,
23149    pub tile_shading_per_tile_dispatch: Bool32,
23150    pub tile_shading_dispatch_tile: Bool32,
23151    pub tile_shading_apron: Bool32,
23152    pub tile_shading_anisotropic_apron: Bool32,
23153    pub tile_shading_atomic_ops: Bool32,
23154    pub tile_shading_image_processing: Bool32,
23155}
23156
23157impl Default for PhysicalDeviceTileShadingFeaturesQCOM {
23158    #[inline]
23159    fn default() -> Self {
23160        Self {
23161            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM,
23162            next: ptr::null_mut(),
23163            tile_shading: Bool32::default(),
23164            tile_shading_fragment_stage: Bool32::default(),
23165            tile_shading_color_attachments: Bool32::default(),
23166            tile_shading_depth_attachments: Bool32::default(),
23167            tile_shading_stencil_attachments: Bool32::default(),
23168            tile_shading_input_attachments: Bool32::default(),
23169            tile_shading_sampled_attachments: Bool32::default(),
23170            tile_shading_per_tile_draw: Bool32::default(),
23171            tile_shading_per_tile_dispatch: Bool32::default(),
23172            tile_shading_dispatch_tile: Bool32::default(),
23173            tile_shading_apron: Bool32::default(),
23174            tile_shading_anisotropic_apron: Bool32::default(),
23175            tile_shading_atomic_ops: Bool32::default(),
23176            tile_shading_image_processing: Bool32::default(),
23177        }
23178    }
23179}
23180
23181unsafe impl Send for PhysicalDeviceTileShadingFeaturesQCOM {}
23182unsafe impl Sync for PhysicalDeviceTileShadingFeaturesQCOM {}
23183
23184/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingPropertiesQCOM.html>
23185#[repr(C)]
23186#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23187pub struct PhysicalDeviceTileShadingPropertiesQCOM {
23188    pub s_type: StructureType,
23189    pub next: *mut c_void,
23190    pub max_apron_size: u32,
23191    pub prefer_non_coherent: Bool32,
23192    pub tile_granularity: Extent2D,
23193    pub max_tile_shading_rate: Extent2D,
23194}
23195
23196impl Default for PhysicalDeviceTileShadingPropertiesQCOM {
23197    #[inline]
23198    fn default() -> Self {
23199        Self {
23200            s_type: StructureType::PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM,
23201            next: ptr::null_mut(),
23202            max_apron_size: u32::default(),
23203            prefer_non_coherent: Bool32::default(),
23204            tile_granularity: Extent2D::default(),
23205            max_tile_shading_rate: Extent2D::default(),
23206        }
23207    }
23208}
23209
23210unsafe impl Send for PhysicalDeviceTileShadingPropertiesQCOM {}
23211unsafe impl Sync for PhysicalDeviceTileShadingPropertiesQCOM {}
23212
23213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html>
23214#[repr(C)]
23215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23216pub struct PhysicalDeviceTimelineSemaphoreFeatures {
23217    pub s_type: StructureType,
23218    pub next: *mut c_void,
23219    pub timeline_semaphore: Bool32,
23220}
23221
23222impl Default for PhysicalDeviceTimelineSemaphoreFeatures {
23223    #[inline]
23224    fn default() -> Self {
23225        Self {
23226            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
23227            next: ptr::null_mut(),
23228            timeline_semaphore: Bool32::default(),
23229        }
23230    }
23231}
23232
23233unsafe impl Send for PhysicalDeviceTimelineSemaphoreFeatures {}
23234unsafe impl Sync for PhysicalDeviceTimelineSemaphoreFeatures {}
23235
23236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html>
23237#[repr(C)]
23238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23239pub struct PhysicalDeviceTimelineSemaphoreProperties {
23240    pub s_type: StructureType,
23241    pub next: *mut c_void,
23242    pub max_timeline_semaphore_value_difference: u64,
23243}
23244
23245impl Default for PhysicalDeviceTimelineSemaphoreProperties {
23246    #[inline]
23247    fn default() -> Self {
23248        Self {
23249            s_type: StructureType::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
23250            next: ptr::null_mut(),
23251            max_timeline_semaphore_value_difference: u64::default(),
23252        }
23253    }
23254}
23255
23256unsafe impl Send for PhysicalDeviceTimelineSemaphoreProperties {}
23257unsafe impl Sync for PhysicalDeviceTimelineSemaphoreProperties {}
23258
23259/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html>
23260#[repr(C)]
23261#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23262pub struct PhysicalDeviceToolProperties {
23263    pub s_type: StructureType,
23264    pub next: *mut c_void,
23265    pub name: StringArray<MAX_EXTENSION_NAME_SIZE>,
23266    pub version: StringArray<MAX_EXTENSION_NAME_SIZE>,
23267    pub purposes: ToolPurposeFlags,
23268    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
23269    pub layer: StringArray<MAX_EXTENSION_NAME_SIZE>,
23270}
23271
23272impl Default for PhysicalDeviceToolProperties {
23273    #[inline]
23274    fn default() -> Self {
23275        Self {
23276            s_type: StructureType::PHYSICAL_DEVICE_TOOL_PROPERTIES,
23277            next: ptr::null_mut(),
23278            name: StringArray::default(),
23279            version: StringArray::default(),
23280            purposes: ToolPurposeFlags::default(),
23281            description: StringArray::default(),
23282            layer: StringArray::default(),
23283        }
23284    }
23285}
23286
23287unsafe impl Send for PhysicalDeviceToolProperties {}
23288unsafe impl Sync for PhysicalDeviceToolProperties {}
23289
23290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html>
23291#[repr(C)]
23292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23293pub struct PhysicalDeviceTransformFeedbackFeaturesEXT {
23294    pub s_type: StructureType,
23295    pub next: *mut c_void,
23296    pub transform_feedback: Bool32,
23297    pub geometry_streams: Bool32,
23298}
23299
23300impl Default for PhysicalDeviceTransformFeedbackFeaturesEXT {
23301    #[inline]
23302    fn default() -> Self {
23303        Self {
23304            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
23305            next: ptr::null_mut(),
23306            transform_feedback: Bool32::default(),
23307            geometry_streams: Bool32::default(),
23308        }
23309    }
23310}
23311
23312unsafe impl Send for PhysicalDeviceTransformFeedbackFeaturesEXT {}
23313unsafe impl Sync for PhysicalDeviceTransformFeedbackFeaturesEXT {}
23314
23315/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html>
23316#[repr(C)]
23317#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23318pub struct PhysicalDeviceTransformFeedbackPropertiesEXT {
23319    pub s_type: StructureType,
23320    pub next: *mut c_void,
23321    pub max_transform_feedback_streams: u32,
23322    pub max_transform_feedback_buffers: u32,
23323    pub max_transform_feedback_buffer_size: DeviceSize,
23324    pub max_transform_feedback_stream_data_size: u32,
23325    pub max_transform_feedback_buffer_data_size: u32,
23326    pub max_transform_feedback_buffer_data_stride: u32,
23327    pub transform_feedback_queries: Bool32,
23328    pub transform_feedback_streams_lines_triangles: Bool32,
23329    pub transform_feedback_rasterization_stream_select: Bool32,
23330    pub transform_feedback_draw: Bool32,
23331}
23332
23333impl Default for PhysicalDeviceTransformFeedbackPropertiesEXT {
23334    #[inline]
23335    fn default() -> Self {
23336        Self {
23337            s_type: StructureType::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
23338            next: ptr::null_mut(),
23339            max_transform_feedback_streams: u32::default(),
23340            max_transform_feedback_buffers: u32::default(),
23341            max_transform_feedback_buffer_size: DeviceSize::default(),
23342            max_transform_feedback_stream_data_size: u32::default(),
23343            max_transform_feedback_buffer_data_size: u32::default(),
23344            max_transform_feedback_buffer_data_stride: u32::default(),
23345            transform_feedback_queries: Bool32::default(),
23346            transform_feedback_streams_lines_triangles: Bool32::default(),
23347            transform_feedback_rasterization_stream_select: Bool32::default(),
23348            transform_feedback_draw: Bool32::default(),
23349        }
23350    }
23351}
23352
23353unsafe impl Send for PhysicalDeviceTransformFeedbackPropertiesEXT {}
23354unsafe impl Sync for PhysicalDeviceTransformFeedbackPropertiesEXT {}
23355
23356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR.html>
23357#[repr(C)]
23358#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23359pub struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
23360    pub s_type: StructureType,
23361    pub next: *mut c_void,
23362    pub unified_image_layouts: Bool32,
23363    pub unified_image_layouts_video: Bool32,
23364}
23365
23366impl Default for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {
23367    #[inline]
23368    fn default() -> Self {
23369        Self {
23370            s_type: StructureType::PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR,
23371            next: ptr::null_mut(),
23372            unified_image_layouts: Bool32::default(),
23373            unified_image_layouts_video: Bool32::default(),
23374        }
23375    }
23376}
23377
23378unsafe impl Send for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
23379unsafe impl Sync for PhysicalDeviceUnifiedImageLayoutsFeaturesKHR {}
23380
23381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html>
23382#[repr(C)]
23383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23384pub struct PhysicalDeviceUniformBufferStandardLayoutFeatures {
23385    pub s_type: StructureType,
23386    pub next: *mut c_void,
23387    pub uniform_buffer_standard_layout: Bool32,
23388}
23389
23390impl Default for PhysicalDeviceUniformBufferStandardLayoutFeatures {
23391    #[inline]
23392    fn default() -> Self {
23393        Self {
23394            s_type: StructureType::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
23395            next: ptr::null_mut(),
23396            uniform_buffer_standard_layout: Bool32::default(),
23397        }
23398    }
23399}
23400
23401unsafe impl Send for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
23402unsafe impl Sync for PhysicalDeviceUniformBufferStandardLayoutFeatures {}
23403
23404/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html>
23405#[repr(C)]
23406#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23407pub struct PhysicalDeviceVariablePointersFeatures {
23408    pub s_type: StructureType,
23409    pub next: *mut c_void,
23410    pub variable_pointers_storage_buffer: Bool32,
23411    pub variable_pointers: Bool32,
23412}
23413
23414impl Default for PhysicalDeviceVariablePointersFeatures {
23415    #[inline]
23416    fn default() -> Self {
23417        Self {
23418            s_type: StructureType::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
23419            next: ptr::null_mut(),
23420            variable_pointers_storage_buffer: Bool32::default(),
23421            variable_pointers: Bool32::default(),
23422        }
23423    }
23424}
23425
23426unsafe impl Send for PhysicalDeviceVariablePointersFeatures {}
23427unsafe impl Sync for PhysicalDeviceVariablePointersFeatures {}
23428
23429/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html>
23430#[repr(C)]
23431#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23432pub struct PhysicalDeviceVertexAttributeDivisorFeatures {
23433    pub s_type: StructureType,
23434    pub next: *mut c_void,
23435    pub vertex_attribute_instance_rate_divisor: Bool32,
23436    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
23437}
23438
23439impl Default for PhysicalDeviceVertexAttributeDivisorFeatures {
23440    #[inline]
23441    fn default() -> Self {
23442        Self {
23443            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES,
23444            next: ptr::null_mut(),
23445            vertex_attribute_instance_rate_divisor: Bool32::default(),
23446            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
23447        }
23448    }
23449}
23450
23451unsafe impl Send for PhysicalDeviceVertexAttributeDivisorFeatures {}
23452unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorFeatures {}
23453
23454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html>
23455#[repr(C)]
23456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23457pub struct PhysicalDeviceVertexAttributeDivisorProperties {
23458    pub s_type: StructureType,
23459    pub next: *mut c_void,
23460    pub max_vertex_attrib_divisor: u32,
23461    pub supports_non_zero_first_instance: Bool32,
23462}
23463
23464impl Default for PhysicalDeviceVertexAttributeDivisorProperties {
23465    #[inline]
23466    fn default() -> Self {
23467        Self {
23468            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES,
23469            next: ptr::null_mut(),
23470            max_vertex_attrib_divisor: u32::default(),
23471            supports_non_zero_first_instance: Bool32::default(),
23472        }
23473    }
23474}
23475
23476unsafe impl Send for PhysicalDeviceVertexAttributeDivisorProperties {}
23477unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorProperties {}
23478
23479/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html>
23480#[repr(C)]
23481#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23482pub struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
23483    pub s_type: StructureType,
23484    pub next: *mut c_void,
23485    pub max_vertex_attrib_divisor: u32,
23486}
23487
23488impl Default for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {
23489    #[inline]
23490    fn default() -> Self {
23491        Self {
23492            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
23493            next: ptr::null_mut(),
23494            max_vertex_attrib_divisor: u32::default(),
23495        }
23496    }
23497}
23498
23499unsafe impl Send for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
23500unsafe impl Sync for PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
23501
23502/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html>
23503#[repr(C)]
23504#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23505pub struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
23506    pub s_type: StructureType,
23507    pub next: *mut c_void,
23508    pub vertex_attribute_robustness: Bool32,
23509}
23510
23511impl Default for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
23512    #[inline]
23513    fn default() -> Self {
23514        Self {
23515            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT,
23516            next: ptr::null_mut(),
23517            vertex_attribute_robustness: Bool32::default(),
23518        }
23519    }
23520}
23521
23522unsafe impl Send for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
23523unsafe impl Sync for PhysicalDeviceVertexAttributeRobustnessFeaturesEXT {}
23524
23525/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html>
23526#[repr(C)]
23527#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23528pub struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
23529    pub s_type: StructureType,
23530    pub next: *mut c_void,
23531    pub vertex_input_dynamic_state: Bool32,
23532}
23533
23534impl Default for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {
23535    #[inline]
23536    fn default() -> Self {
23537        Self {
23538            s_type: StructureType::PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
23539            next: ptr::null_mut(),
23540            vertex_input_dynamic_state: Bool32::default(),
23541        }
23542    }
23543}
23544
23545unsafe impl Send for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
23546unsafe impl Sync for PhysicalDeviceVertexInputDynamicStateFeaturesEXT {}
23547
23548/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoDecodeVP9FeaturesKHR.html>
23549#[repr(C)]
23550#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23551pub struct PhysicalDeviceVideoDecodeVP9FeaturesKHR {
23552    pub s_type: StructureType,
23553    pub next: *mut c_void,
23554    pub video_decode_vp9: Bool32,
23555}
23556
23557impl Default for PhysicalDeviceVideoDecodeVP9FeaturesKHR {
23558    #[inline]
23559    fn default() -> Self {
23560        Self {
23561            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR,
23562            next: ptr::null_mut(),
23563            video_decode_vp9: Bool32::default(),
23564        }
23565    }
23566}
23567
23568unsafe impl Send for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
23569unsafe impl Sync for PhysicalDeviceVideoDecodeVP9FeaturesKHR {}
23570
23571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html>
23572#[repr(C)]
23573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23574pub struct PhysicalDeviceVideoEncodeAV1FeaturesKHR {
23575    pub s_type: StructureType,
23576    pub next: *mut c_void,
23577    pub video_encode_av1: Bool32,
23578}
23579
23580impl Default for PhysicalDeviceVideoEncodeAV1FeaturesKHR {
23581    #[inline]
23582    fn default() -> Self {
23583        Self {
23584            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR,
23585            next: ptr::null_mut(),
23586            video_encode_av1: Bool32::default(),
23587        }
23588    }
23589}
23590
23591unsafe impl Send for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
23592unsafe impl Sync for PhysicalDeviceVideoEncodeAV1FeaturesKHR {}
23593
23594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.html>
23595#[repr(C)]
23596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23597pub struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
23598    pub s_type: StructureType,
23599    pub next: *mut c_void,
23600    pub video_encode_intra_refresh: Bool32,
23601}
23602
23603impl Default for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {
23604    #[inline]
23605    fn default() -> Self {
23606        Self {
23607            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR,
23608            next: ptr::null_mut(),
23609            video_encode_intra_refresh: Bool32::default(),
23610        }
23611    }
23612}
23613
23614unsafe impl Send for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
23615unsafe impl Sync for PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR {}
23616
23617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html>
23618#[repr(C)]
23619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23620pub struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
23621    pub s_type: StructureType,
23622    pub next: *const c_void,
23623    pub video_profile: *const VideoProfileInfoKHR,
23624    pub quality_level: u32,
23625}
23626
23627impl Default for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {
23628    #[inline]
23629    fn default() -> Self {
23630        Self {
23631            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
23632            next: ptr::null(),
23633            video_profile: ptr::null(),
23634            quality_level: u32::default(),
23635        }
23636    }
23637}
23638
23639unsafe impl Send for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
23640unsafe impl Sync for PhysicalDeviceVideoEncodeQualityLevelInfoKHR {}
23641
23642/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html>
23643#[repr(C)]
23644#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23645pub struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
23646    pub s_type: StructureType,
23647    pub next: *mut c_void,
23648    pub video_encode_quantization_map: Bool32,
23649}
23650
23651impl Default for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {
23652    #[inline]
23653    fn default() -> Self {
23654        Self {
23655            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR,
23656            next: ptr::null_mut(),
23657            video_encode_quantization_map: Bool32::default(),
23658        }
23659    }
23660}
23661
23662unsafe impl Send for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
23663unsafe impl Sync for PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR {}
23664
23665/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE.html>
23666#[repr(C)]
23667#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23668pub struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
23669    pub s_type: StructureType,
23670    pub next: *mut c_void,
23671    pub video_encode_rgb_conversion: Bool32,
23672}
23673
23674impl Default for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {
23675    #[inline]
23676    fn default() -> Self {
23677        Self {
23678            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE,
23679            next: ptr::null_mut(),
23680            video_encode_rgb_conversion: Bool32::default(),
23681        }
23682    }
23683}
23684
23685unsafe impl Send for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
23686unsafe impl Sync for PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE {}
23687
23688/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html>
23689#[repr(C)]
23690#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23691pub struct PhysicalDeviceVideoFormatInfoKHR {
23692    pub s_type: StructureType,
23693    pub next: *const c_void,
23694    pub image_usage: ImageUsageFlags,
23695}
23696
23697impl Default for PhysicalDeviceVideoFormatInfoKHR {
23698    #[inline]
23699    fn default() -> Self {
23700        Self {
23701            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR,
23702            next: ptr::null(),
23703            image_usage: ImageUsageFlags::default(),
23704        }
23705    }
23706}
23707
23708unsafe impl Send for PhysicalDeviceVideoFormatInfoKHR {}
23709unsafe impl Sync for PhysicalDeviceVideoFormatInfoKHR {}
23710
23711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html>
23712#[repr(C)]
23713#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23714pub struct PhysicalDeviceVideoMaintenance1FeaturesKHR {
23715    pub s_type: StructureType,
23716    pub next: *mut c_void,
23717    pub video_maintenance1: Bool32,
23718}
23719
23720impl Default for PhysicalDeviceVideoMaintenance1FeaturesKHR {
23721    #[inline]
23722    fn default() -> Self {
23723        Self {
23724            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR,
23725            next: ptr::null_mut(),
23726            video_maintenance1: Bool32::default(),
23727        }
23728    }
23729}
23730
23731unsafe impl Send for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
23732unsafe impl Sync for PhysicalDeviceVideoMaintenance1FeaturesKHR {}
23733
23734/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html>
23735#[repr(C)]
23736#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23737pub struct PhysicalDeviceVideoMaintenance2FeaturesKHR {
23738    pub s_type: StructureType,
23739    pub next: *mut c_void,
23740    pub video_maintenance2: Bool32,
23741}
23742
23743impl Default for PhysicalDeviceVideoMaintenance2FeaturesKHR {
23744    #[inline]
23745    fn default() -> Self {
23746        Self {
23747            s_type: StructureType::PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR,
23748            next: ptr::null_mut(),
23749            video_maintenance2: Bool32::default(),
23750        }
23751    }
23752}
23753
23754unsafe impl Send for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
23755unsafe impl Sync for PhysicalDeviceVideoMaintenance2FeaturesKHR {}
23756
23757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html>
23758#[repr(C)]
23759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23760pub struct PhysicalDeviceVulkan11Features {
23761    pub s_type: StructureType,
23762    pub next: *mut c_void,
23763    pub storage_buffer_16bit_access: Bool32,
23764    pub uniform_and_storage_buffer_16bit_access: Bool32,
23765    pub storage_push_constant16: Bool32,
23766    pub storage_input_output16: Bool32,
23767    pub multiview: Bool32,
23768    pub multiview_geometry_shader: Bool32,
23769    pub multiview_tessellation_shader: Bool32,
23770    pub variable_pointers_storage_buffer: Bool32,
23771    pub variable_pointers: Bool32,
23772    pub protected_memory: Bool32,
23773    pub sampler_ycbcr_conversion: Bool32,
23774    pub shader_draw_parameters: Bool32,
23775}
23776
23777impl Default for PhysicalDeviceVulkan11Features {
23778    #[inline]
23779    fn default() -> Self {
23780        Self {
23781            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
23782            next: ptr::null_mut(),
23783            storage_buffer_16bit_access: Bool32::default(),
23784            uniform_and_storage_buffer_16bit_access: Bool32::default(),
23785            storage_push_constant16: Bool32::default(),
23786            storage_input_output16: Bool32::default(),
23787            multiview: Bool32::default(),
23788            multiview_geometry_shader: Bool32::default(),
23789            multiview_tessellation_shader: Bool32::default(),
23790            variable_pointers_storage_buffer: Bool32::default(),
23791            variable_pointers: Bool32::default(),
23792            protected_memory: Bool32::default(),
23793            sampler_ycbcr_conversion: Bool32::default(),
23794            shader_draw_parameters: Bool32::default(),
23795        }
23796    }
23797}
23798
23799unsafe impl Send for PhysicalDeviceVulkan11Features {}
23800unsafe impl Sync for PhysicalDeviceVulkan11Features {}
23801
23802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html>
23803#[repr(C)]
23804#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23805pub struct PhysicalDeviceVulkan11Properties {
23806    pub s_type: StructureType,
23807    pub next: *mut c_void,
23808    pub device_uuid: ByteArray<UUID_SIZE>,
23809    pub driver_uuid: ByteArray<UUID_SIZE>,
23810    pub device_luid: ByteArray<LUID_SIZE>,
23811    pub device_node_mask: u32,
23812    pub device_luid_valid: Bool32,
23813    pub subgroup_size: u32,
23814    pub subgroup_supported_stages: ShaderStageFlags,
23815    pub subgroup_supported_operations: SubgroupFeatureFlags,
23816    pub subgroup_quad_operations_in_all_stages: Bool32,
23817    pub point_clipping_behavior: PointClippingBehavior,
23818    pub max_multiview_view_count: u32,
23819    pub max_multiview_instance_index: u32,
23820    pub protected_no_fault: Bool32,
23821    pub max_per_set_descriptors: u32,
23822    pub max_memory_allocation_size: DeviceSize,
23823}
23824
23825impl Default for PhysicalDeviceVulkan11Properties {
23826    #[inline]
23827    fn default() -> Self {
23828        Self {
23829            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
23830            next: ptr::null_mut(),
23831            device_uuid: ByteArray::default(),
23832            driver_uuid: ByteArray::default(),
23833            device_luid: ByteArray::default(),
23834            device_node_mask: u32::default(),
23835            device_luid_valid: Bool32::default(),
23836            subgroup_size: u32::default(),
23837            subgroup_supported_stages: ShaderStageFlags::default(),
23838            subgroup_supported_operations: SubgroupFeatureFlags::default(),
23839            subgroup_quad_operations_in_all_stages: Bool32::default(),
23840            point_clipping_behavior: PointClippingBehavior::default(),
23841            max_multiview_view_count: u32::default(),
23842            max_multiview_instance_index: u32::default(),
23843            protected_no_fault: Bool32::default(),
23844            max_per_set_descriptors: u32::default(),
23845            max_memory_allocation_size: DeviceSize::default(),
23846        }
23847    }
23848}
23849
23850unsafe impl Send for PhysicalDeviceVulkan11Properties {}
23851unsafe impl Sync for PhysicalDeviceVulkan11Properties {}
23852
23853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html>
23854#[repr(C)]
23855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23856pub struct PhysicalDeviceVulkan12Features {
23857    pub s_type: StructureType,
23858    pub next: *mut c_void,
23859    pub sampler_mirror_clamp_to_edge: Bool32,
23860    pub draw_indirect_count: Bool32,
23861    pub storage_buffer_8bit_access: Bool32,
23862    pub uniform_and_storage_buffer_8bit_access: Bool32,
23863    pub storage_push_constant8: Bool32,
23864    pub shader_buffer_int64_atomics: Bool32,
23865    pub shader_shared_int64_atomics: Bool32,
23866    pub shader_float16: Bool32,
23867    pub shader_int8: Bool32,
23868    pub descriptor_indexing: Bool32,
23869    pub shader_input_attachment_array_dynamic_indexing: Bool32,
23870    pub shader_uniform_texel_buffer_array_dynamic_indexing: Bool32,
23871    pub shader_storage_texel_buffer_array_dynamic_indexing: Bool32,
23872    pub shader_uniform_buffer_array_non_uniform_indexing: Bool32,
23873    pub shader_sampled_image_array_non_uniform_indexing: Bool32,
23874    pub shader_storage_buffer_array_non_uniform_indexing: Bool32,
23875    pub shader_storage_image_array_non_uniform_indexing: Bool32,
23876    pub shader_input_attachment_array_non_uniform_indexing: Bool32,
23877    pub shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32,
23878    pub shader_storage_texel_buffer_array_non_uniform_indexing: Bool32,
23879    pub descriptor_binding_uniform_buffer_update_after_bind: Bool32,
23880    pub descriptor_binding_sampled_image_update_after_bind: Bool32,
23881    pub descriptor_binding_storage_image_update_after_bind: Bool32,
23882    pub descriptor_binding_storage_buffer_update_after_bind: Bool32,
23883    pub descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32,
23884    pub descriptor_binding_storage_texel_buffer_update_after_bind: Bool32,
23885    pub descriptor_binding_update_unused_while_pending: Bool32,
23886    pub descriptor_binding_partially_bound: Bool32,
23887    pub descriptor_binding_variable_descriptor_count: Bool32,
23888    pub runtime_descriptor_array: Bool32,
23889    pub sampler_filter_minmax: Bool32,
23890    pub scalar_block_layout: Bool32,
23891    pub imageless_framebuffer: Bool32,
23892    pub uniform_buffer_standard_layout: Bool32,
23893    pub shader_subgroup_extended_types: Bool32,
23894    pub separate_depth_stencil_layouts: Bool32,
23895    pub host_query_reset: Bool32,
23896    pub timeline_semaphore: Bool32,
23897    pub buffer_device_address: Bool32,
23898    pub buffer_device_address_capture_replay: Bool32,
23899    pub buffer_device_address_multi_device: Bool32,
23900    pub vulkan_memory_model: Bool32,
23901    pub vulkan_memory_model_device_scope: Bool32,
23902    pub vulkan_memory_model_availability_visibility_chains: Bool32,
23903    pub shader_output_viewport_index: Bool32,
23904    pub shader_output_layer: Bool32,
23905    pub subgroup_broadcast_dynamic_id: Bool32,
23906}
23907
23908impl Default for PhysicalDeviceVulkan12Features {
23909    #[inline]
23910    fn default() -> Self {
23911        Self {
23912            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
23913            next: ptr::null_mut(),
23914            sampler_mirror_clamp_to_edge: Bool32::default(),
23915            draw_indirect_count: Bool32::default(),
23916            storage_buffer_8bit_access: Bool32::default(),
23917            uniform_and_storage_buffer_8bit_access: Bool32::default(),
23918            storage_push_constant8: Bool32::default(),
23919            shader_buffer_int64_atomics: Bool32::default(),
23920            shader_shared_int64_atomics: Bool32::default(),
23921            shader_float16: Bool32::default(),
23922            shader_int8: Bool32::default(),
23923            descriptor_indexing: Bool32::default(),
23924            shader_input_attachment_array_dynamic_indexing: Bool32::default(),
23925            shader_uniform_texel_buffer_array_dynamic_indexing: Bool32::default(),
23926            shader_storage_texel_buffer_array_dynamic_indexing: Bool32::default(),
23927            shader_uniform_buffer_array_non_uniform_indexing: Bool32::default(),
23928            shader_sampled_image_array_non_uniform_indexing: Bool32::default(),
23929            shader_storage_buffer_array_non_uniform_indexing: Bool32::default(),
23930            shader_storage_image_array_non_uniform_indexing: Bool32::default(),
23931            shader_input_attachment_array_non_uniform_indexing: Bool32::default(),
23932            shader_uniform_texel_buffer_array_non_uniform_indexing: Bool32::default(),
23933            shader_storage_texel_buffer_array_non_uniform_indexing: Bool32::default(),
23934            descriptor_binding_uniform_buffer_update_after_bind: Bool32::default(),
23935            descriptor_binding_sampled_image_update_after_bind: Bool32::default(),
23936            descriptor_binding_storage_image_update_after_bind: Bool32::default(),
23937            descriptor_binding_storage_buffer_update_after_bind: Bool32::default(),
23938            descriptor_binding_uniform_texel_buffer_update_after_bind: Bool32::default(),
23939            descriptor_binding_storage_texel_buffer_update_after_bind: Bool32::default(),
23940            descriptor_binding_update_unused_while_pending: Bool32::default(),
23941            descriptor_binding_partially_bound: Bool32::default(),
23942            descriptor_binding_variable_descriptor_count: Bool32::default(),
23943            runtime_descriptor_array: Bool32::default(),
23944            sampler_filter_minmax: Bool32::default(),
23945            scalar_block_layout: Bool32::default(),
23946            imageless_framebuffer: Bool32::default(),
23947            uniform_buffer_standard_layout: Bool32::default(),
23948            shader_subgroup_extended_types: Bool32::default(),
23949            separate_depth_stencil_layouts: Bool32::default(),
23950            host_query_reset: Bool32::default(),
23951            timeline_semaphore: Bool32::default(),
23952            buffer_device_address: Bool32::default(),
23953            buffer_device_address_capture_replay: Bool32::default(),
23954            buffer_device_address_multi_device: Bool32::default(),
23955            vulkan_memory_model: Bool32::default(),
23956            vulkan_memory_model_device_scope: Bool32::default(),
23957            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
23958            shader_output_viewport_index: Bool32::default(),
23959            shader_output_layer: Bool32::default(),
23960            subgroup_broadcast_dynamic_id: Bool32::default(),
23961        }
23962    }
23963}
23964
23965unsafe impl Send for PhysicalDeviceVulkan12Features {}
23966unsafe impl Sync for PhysicalDeviceVulkan12Features {}
23967
23968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html>
23969#[repr(C)]
23970#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
23971pub struct PhysicalDeviceVulkan12Properties {
23972    pub s_type: StructureType,
23973    pub next: *mut c_void,
23974    pub driver_id: DriverId,
23975    pub driver_name: StringArray<MAX_DRIVER_NAME_SIZE>,
23976    pub driver_info: StringArray<MAX_DRIVER_INFO_SIZE>,
23977    pub conformance_version: ConformanceVersion,
23978    pub denorm_behavior_independence: ShaderFloatControlsIndependence,
23979    pub rounding_mode_independence: ShaderFloatControlsIndependence,
23980    pub shader_signed_zero_inf_nan_preserve_float16: Bool32,
23981    pub shader_signed_zero_inf_nan_preserve_float32: Bool32,
23982    pub shader_signed_zero_inf_nan_preserve_float64: Bool32,
23983    pub shader_denorm_preserve_float16: Bool32,
23984    pub shader_denorm_preserve_float32: Bool32,
23985    pub shader_denorm_preserve_float64: Bool32,
23986    pub shader_denorm_flush_to_zero_float16: Bool32,
23987    pub shader_denorm_flush_to_zero_float32: Bool32,
23988    pub shader_denorm_flush_to_zero_float64: Bool32,
23989    pub shader_rounding_mode_rte_float16: Bool32,
23990    pub shader_rounding_mode_rte_float32: Bool32,
23991    pub shader_rounding_mode_rte_float64: Bool32,
23992    pub shader_rounding_mode_rtz_float16: Bool32,
23993    pub shader_rounding_mode_rtz_float32: Bool32,
23994    pub shader_rounding_mode_rtz_float64: Bool32,
23995    pub max_update_after_bind_descriptors_in_all_pools: u32,
23996    pub shader_uniform_buffer_array_non_uniform_indexing_native: Bool32,
23997    pub shader_sampled_image_array_non_uniform_indexing_native: Bool32,
23998    pub shader_storage_buffer_array_non_uniform_indexing_native: Bool32,
23999    pub shader_storage_image_array_non_uniform_indexing_native: Bool32,
24000    pub shader_input_attachment_array_non_uniform_indexing_native: Bool32,
24001    pub robust_buffer_access_update_after_bind: Bool32,
24002    pub quad_divergent_implicit_lod: Bool32,
24003    pub max_per_stage_descriptor_update_after_bind_samplers: u32,
24004    pub max_per_stage_descriptor_update_after_bind_uniform_buffers: u32,
24005    pub max_per_stage_descriptor_update_after_bind_storage_buffers: u32,
24006    pub max_per_stage_descriptor_update_after_bind_sampled_images: u32,
24007    pub max_per_stage_descriptor_update_after_bind_storage_images: u32,
24008    pub max_per_stage_descriptor_update_after_bind_input_attachments: u32,
24009    pub max_per_stage_update_after_bind_resources: u32,
24010    pub max_descriptor_set_update_after_bind_samplers: u32,
24011    pub max_descriptor_set_update_after_bind_uniform_buffers: u32,
24012    pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32,
24013    pub max_descriptor_set_update_after_bind_storage_buffers: u32,
24014    pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32,
24015    pub max_descriptor_set_update_after_bind_sampled_images: u32,
24016    pub max_descriptor_set_update_after_bind_storage_images: u32,
24017    pub max_descriptor_set_update_after_bind_input_attachments: u32,
24018    pub supported_depth_resolve_modes: ResolveModeFlags,
24019    pub supported_stencil_resolve_modes: ResolveModeFlags,
24020    pub independent_resolve_none: Bool32,
24021    pub independent_resolve: Bool32,
24022    pub filter_minmax_single_component_formats: Bool32,
24023    pub filter_minmax_image_component_mapping: Bool32,
24024    pub max_timeline_semaphore_value_difference: u64,
24025    pub framebuffer_integer_color_sample_counts: SampleCountFlags,
24026}
24027
24028impl Default for PhysicalDeviceVulkan12Properties {
24029    #[inline]
24030    fn default() -> Self {
24031        Self {
24032            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
24033            next: ptr::null_mut(),
24034            driver_id: DriverId::default(),
24035            driver_name: StringArray::default(),
24036            driver_info: StringArray::default(),
24037            conformance_version: ConformanceVersion::default(),
24038            denorm_behavior_independence: ShaderFloatControlsIndependence::default(),
24039            rounding_mode_independence: ShaderFloatControlsIndependence::default(),
24040            shader_signed_zero_inf_nan_preserve_float16: Bool32::default(),
24041            shader_signed_zero_inf_nan_preserve_float32: Bool32::default(),
24042            shader_signed_zero_inf_nan_preserve_float64: Bool32::default(),
24043            shader_denorm_preserve_float16: Bool32::default(),
24044            shader_denorm_preserve_float32: Bool32::default(),
24045            shader_denorm_preserve_float64: Bool32::default(),
24046            shader_denorm_flush_to_zero_float16: Bool32::default(),
24047            shader_denorm_flush_to_zero_float32: Bool32::default(),
24048            shader_denorm_flush_to_zero_float64: Bool32::default(),
24049            shader_rounding_mode_rte_float16: Bool32::default(),
24050            shader_rounding_mode_rte_float32: Bool32::default(),
24051            shader_rounding_mode_rte_float64: Bool32::default(),
24052            shader_rounding_mode_rtz_float16: Bool32::default(),
24053            shader_rounding_mode_rtz_float32: Bool32::default(),
24054            shader_rounding_mode_rtz_float64: Bool32::default(),
24055            max_update_after_bind_descriptors_in_all_pools: u32::default(),
24056            shader_uniform_buffer_array_non_uniform_indexing_native: Bool32::default(),
24057            shader_sampled_image_array_non_uniform_indexing_native: Bool32::default(),
24058            shader_storage_buffer_array_non_uniform_indexing_native: Bool32::default(),
24059            shader_storage_image_array_non_uniform_indexing_native: Bool32::default(),
24060            shader_input_attachment_array_non_uniform_indexing_native: Bool32::default(),
24061            robust_buffer_access_update_after_bind: Bool32::default(),
24062            quad_divergent_implicit_lod: Bool32::default(),
24063            max_per_stage_descriptor_update_after_bind_samplers: u32::default(),
24064            max_per_stage_descriptor_update_after_bind_uniform_buffers: u32::default(),
24065            max_per_stage_descriptor_update_after_bind_storage_buffers: u32::default(),
24066            max_per_stage_descriptor_update_after_bind_sampled_images: u32::default(),
24067            max_per_stage_descriptor_update_after_bind_storage_images: u32::default(),
24068            max_per_stage_descriptor_update_after_bind_input_attachments: u32::default(),
24069            max_per_stage_update_after_bind_resources: u32::default(),
24070            max_descriptor_set_update_after_bind_samplers: u32::default(),
24071            max_descriptor_set_update_after_bind_uniform_buffers: u32::default(),
24072            max_descriptor_set_update_after_bind_uniform_buffers_dynamic: u32::default(),
24073            max_descriptor_set_update_after_bind_storage_buffers: u32::default(),
24074            max_descriptor_set_update_after_bind_storage_buffers_dynamic: u32::default(),
24075            max_descriptor_set_update_after_bind_sampled_images: u32::default(),
24076            max_descriptor_set_update_after_bind_storage_images: u32::default(),
24077            max_descriptor_set_update_after_bind_input_attachments: u32::default(),
24078            supported_depth_resolve_modes: ResolveModeFlags::default(),
24079            supported_stencil_resolve_modes: ResolveModeFlags::default(),
24080            independent_resolve_none: Bool32::default(),
24081            independent_resolve: Bool32::default(),
24082            filter_minmax_single_component_formats: Bool32::default(),
24083            filter_minmax_image_component_mapping: Bool32::default(),
24084            max_timeline_semaphore_value_difference: u64::default(),
24085            framebuffer_integer_color_sample_counts: SampleCountFlags::default(),
24086        }
24087    }
24088}
24089
24090unsafe impl Send for PhysicalDeviceVulkan12Properties {}
24091unsafe impl Sync for PhysicalDeviceVulkan12Properties {}
24092
24093/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html>
24094#[repr(C)]
24095#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24096pub struct PhysicalDeviceVulkan13Features {
24097    pub s_type: StructureType,
24098    pub next: *mut c_void,
24099    pub robust_image_access: Bool32,
24100    pub inline_uniform_block: Bool32,
24101    pub descriptor_binding_inline_uniform_block_update_after_bind: Bool32,
24102    pub pipeline_creation_cache_control: Bool32,
24103    pub private_data: Bool32,
24104    pub shader_demote_to_helper_invocation: Bool32,
24105    pub shader_terminate_invocation: Bool32,
24106    pub subgroup_size_control: Bool32,
24107    pub compute_full_subgroups: Bool32,
24108    pub synchronization2: Bool32,
24109    pub texture_compression_astc_hdr: Bool32,
24110    pub shader_zero_initialize_workgroup_memory: Bool32,
24111    pub dynamic_rendering: Bool32,
24112    pub shader_integer_dot_product: Bool32,
24113    pub maintenance4: Bool32,
24114}
24115
24116impl Default for PhysicalDeviceVulkan13Features {
24117    #[inline]
24118    fn default() -> Self {
24119        Self {
24120            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
24121            next: ptr::null_mut(),
24122            robust_image_access: Bool32::default(),
24123            inline_uniform_block: Bool32::default(),
24124            descriptor_binding_inline_uniform_block_update_after_bind: Bool32::default(),
24125            pipeline_creation_cache_control: Bool32::default(),
24126            private_data: Bool32::default(),
24127            shader_demote_to_helper_invocation: Bool32::default(),
24128            shader_terminate_invocation: Bool32::default(),
24129            subgroup_size_control: Bool32::default(),
24130            compute_full_subgroups: Bool32::default(),
24131            synchronization2: Bool32::default(),
24132            texture_compression_astc_hdr: Bool32::default(),
24133            shader_zero_initialize_workgroup_memory: Bool32::default(),
24134            dynamic_rendering: Bool32::default(),
24135            shader_integer_dot_product: Bool32::default(),
24136            maintenance4: Bool32::default(),
24137        }
24138    }
24139}
24140
24141unsafe impl Send for PhysicalDeviceVulkan13Features {}
24142unsafe impl Sync for PhysicalDeviceVulkan13Features {}
24143
24144/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html>
24145#[repr(C)]
24146#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24147pub struct PhysicalDeviceVulkan13Properties {
24148    pub s_type: StructureType,
24149    pub next: *mut c_void,
24150    pub min_subgroup_size: u32,
24151    pub max_subgroup_size: u32,
24152    pub max_compute_workgroup_subgroups: u32,
24153    pub required_subgroup_size_stages: ShaderStageFlags,
24154    pub max_inline_uniform_block_size: u32,
24155    pub max_per_stage_descriptor_inline_uniform_blocks: u32,
24156    pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: u32,
24157    pub max_descriptor_set_inline_uniform_blocks: u32,
24158    pub max_descriptor_set_update_after_bind_inline_uniform_blocks: u32,
24159    pub max_inline_uniform_total_size: u32,
24160    pub integer_dot_product_8bit_unsigned_accelerated: Bool32,
24161    pub integer_dot_product_8bit_signed_accelerated: Bool32,
24162    pub integer_dot_product_8bit_mixed_signedness_accelerated: Bool32,
24163    pub integer_dot_product4x_8bit_packed_unsigned_accelerated: Bool32,
24164    pub integer_dot_product4x_8bit_packed_signed_accelerated: Bool32,
24165    pub integer_dot_product4x_8bit_packed_mixed_signedness_accelerated: Bool32,
24166    pub integer_dot_product_16bit_unsigned_accelerated: Bool32,
24167    pub integer_dot_product_16bit_signed_accelerated: Bool32,
24168    pub integer_dot_product_16bit_mixed_signedness_accelerated: Bool32,
24169    pub integer_dot_product_32bit_unsigned_accelerated: Bool32,
24170    pub integer_dot_product_32bit_signed_accelerated: Bool32,
24171    pub integer_dot_product_32bit_mixed_signedness_accelerated: Bool32,
24172    pub integer_dot_product_64bit_unsigned_accelerated: Bool32,
24173    pub integer_dot_product_64bit_signed_accelerated: Bool32,
24174    pub integer_dot_product_64bit_mixed_signedness_accelerated: Bool32,
24175    pub integer_dot_product_accumulating_saturating_8bit_unsigned_accelerated: Bool32,
24176    pub integer_dot_product_accumulating_saturating_8bit_signed_accelerated: Bool32,
24177    pub integer_dot_product_accumulating_saturating_8bit_mixed_signedness_accelerated: Bool32,
24178    pub integer_dot_product_accumulating_saturating4x_8bit_packed_unsigned_accelerated: Bool32,
24179    pub integer_dot_product_accumulating_saturating4x_8bit_packed_signed_accelerated: Bool32,
24180    pub integer_dot_product_accumulating_saturating4x_8bit_packed_mixed_signedness_accelerated:
24181        Bool32,
24182    pub integer_dot_product_accumulating_saturating_16bit_unsigned_accelerated: Bool32,
24183    pub integer_dot_product_accumulating_saturating_16bit_signed_accelerated: Bool32,
24184    pub integer_dot_product_accumulating_saturating_16bit_mixed_signedness_accelerated: Bool32,
24185    pub integer_dot_product_accumulating_saturating_32bit_unsigned_accelerated: Bool32,
24186    pub integer_dot_product_accumulating_saturating_32bit_signed_accelerated: Bool32,
24187    pub integer_dot_product_accumulating_saturating_32bit_mixed_signedness_accelerated: Bool32,
24188    pub integer_dot_product_accumulating_saturating_64bit_unsigned_accelerated: Bool32,
24189    pub integer_dot_product_accumulating_saturating_64bit_signed_accelerated: Bool32,
24190    pub integer_dot_product_accumulating_saturating_64bit_mixed_signedness_accelerated: Bool32,
24191    pub storage_texel_buffer_offset_alignment_bytes: DeviceSize,
24192    pub storage_texel_buffer_offset_single_texel_alignment: Bool32,
24193    pub uniform_texel_buffer_offset_alignment_bytes: DeviceSize,
24194    pub uniform_texel_buffer_offset_single_texel_alignment: Bool32,
24195    pub max_buffer_size: DeviceSize,
24196}
24197
24198impl Default for PhysicalDeviceVulkan13Properties {
24199    #[inline]
24200    fn default() -> Self {
24201        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() }
24202    }
24203}
24204
24205unsafe impl Send for PhysicalDeviceVulkan13Properties {}
24206unsafe impl Sync for PhysicalDeviceVulkan13Properties {}
24207
24208/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html>
24209#[repr(C)]
24210#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24211pub struct PhysicalDeviceVulkan14Features {
24212    pub s_type: StructureType,
24213    pub next: *mut c_void,
24214    pub global_priority_query: Bool32,
24215    pub shader_subgroup_rotate: Bool32,
24216    pub shader_subgroup_rotate_clustered: Bool32,
24217    pub shader_float_controls2: Bool32,
24218    pub shader_expect_assume: Bool32,
24219    pub rectangular_lines: Bool32,
24220    pub bresenham_lines: Bool32,
24221    pub smooth_lines: Bool32,
24222    pub stippled_rectangular_lines: Bool32,
24223    pub stippled_bresenham_lines: Bool32,
24224    pub stippled_smooth_lines: Bool32,
24225    pub vertex_attribute_instance_rate_divisor: Bool32,
24226    pub vertex_attribute_instance_rate_zero_divisor: Bool32,
24227    pub index_type_uint8: Bool32,
24228    pub dynamic_rendering_local_read: Bool32,
24229    pub maintenance5: Bool32,
24230    pub maintenance6: Bool32,
24231    pub pipeline_protected_access: Bool32,
24232    pub pipeline_robustness: Bool32,
24233    pub host_image_copy: Bool32,
24234    pub push_descriptor: Bool32,
24235}
24236
24237impl Default for PhysicalDeviceVulkan14Features {
24238    #[inline]
24239    fn default() -> Self {
24240        Self {
24241            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_FEATURES,
24242            next: ptr::null_mut(),
24243            global_priority_query: Bool32::default(),
24244            shader_subgroup_rotate: Bool32::default(),
24245            shader_subgroup_rotate_clustered: Bool32::default(),
24246            shader_float_controls2: Bool32::default(),
24247            shader_expect_assume: Bool32::default(),
24248            rectangular_lines: Bool32::default(),
24249            bresenham_lines: Bool32::default(),
24250            smooth_lines: Bool32::default(),
24251            stippled_rectangular_lines: Bool32::default(),
24252            stippled_bresenham_lines: Bool32::default(),
24253            stippled_smooth_lines: Bool32::default(),
24254            vertex_attribute_instance_rate_divisor: Bool32::default(),
24255            vertex_attribute_instance_rate_zero_divisor: Bool32::default(),
24256            index_type_uint8: Bool32::default(),
24257            dynamic_rendering_local_read: Bool32::default(),
24258            maintenance5: Bool32::default(),
24259            maintenance6: Bool32::default(),
24260            pipeline_protected_access: Bool32::default(),
24261            pipeline_robustness: Bool32::default(),
24262            host_image_copy: Bool32::default(),
24263            push_descriptor: Bool32::default(),
24264        }
24265    }
24266}
24267
24268unsafe impl Send for PhysicalDeviceVulkan14Features {}
24269unsafe impl Sync for PhysicalDeviceVulkan14Features {}
24270
24271/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html>
24272#[repr(C)]
24273#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24274pub struct PhysicalDeviceVulkan14Properties {
24275    pub s_type: StructureType,
24276    pub next: *mut c_void,
24277    pub line_sub_pixel_precision_bits: u32,
24278    pub max_vertex_attrib_divisor: u32,
24279    pub supports_non_zero_first_instance: Bool32,
24280    pub max_push_descriptors: u32,
24281    pub dynamic_rendering_local_read_depth_stencil_attachments: Bool32,
24282    pub dynamic_rendering_local_read_multisampled_attachments: Bool32,
24283    pub early_fragment_multisample_coverage_after_sample_counting: Bool32,
24284    pub early_fragment_sample_mask_test_before_sample_counting: Bool32,
24285    pub depth_stencil_swizzle_one_support: Bool32,
24286    pub polygon_mode_point_size: Bool32,
24287    pub non_strict_single_pixel_wide_lines_use_parallelogram: Bool32,
24288    pub non_strict_wide_lines_use_parallelogram: Bool32,
24289    pub block_texel_view_compatible_multiple_layers: Bool32,
24290    pub max_combined_image_sampler_descriptor_count: u32,
24291    pub fragment_shading_rate_clamp_combiner_inputs: Bool32,
24292    pub default_robustness_storage_buffers: PipelineRobustnessBufferBehavior,
24293    pub default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior,
24294    pub default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior,
24295    pub default_robustness_images: PipelineRobustnessImageBehavior,
24296    pub copy_src_layout_count: u32,
24297    pub copy_src_layouts: *mut ImageLayout,
24298    pub copy_dst_layout_count: u32,
24299    pub copy_dst_layouts: *mut ImageLayout,
24300    pub optimal_tiling_layout_uuid: ByteArray<UUID_SIZE>,
24301    pub identical_memory_type_requirements: Bool32,
24302}
24303
24304impl Default for PhysicalDeviceVulkan14Properties {
24305    #[inline]
24306    fn default() -> Self {
24307        Self {
24308            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES,
24309            next: ptr::null_mut(),
24310            line_sub_pixel_precision_bits: u32::default(),
24311            max_vertex_attrib_divisor: u32::default(),
24312            supports_non_zero_first_instance: Bool32::default(),
24313            max_push_descriptors: u32::default(),
24314            dynamic_rendering_local_read_depth_stencil_attachments: Bool32::default(),
24315            dynamic_rendering_local_read_multisampled_attachments: Bool32::default(),
24316            early_fragment_multisample_coverage_after_sample_counting: Bool32::default(),
24317            early_fragment_sample_mask_test_before_sample_counting: Bool32::default(),
24318            depth_stencil_swizzle_one_support: Bool32::default(),
24319            polygon_mode_point_size: Bool32::default(),
24320            non_strict_single_pixel_wide_lines_use_parallelogram: Bool32::default(),
24321            non_strict_wide_lines_use_parallelogram: Bool32::default(),
24322            block_texel_view_compatible_multiple_layers: Bool32::default(),
24323            max_combined_image_sampler_descriptor_count: u32::default(),
24324            fragment_shading_rate_clamp_combiner_inputs: Bool32::default(),
24325            default_robustness_storage_buffers: PipelineRobustnessBufferBehavior::default(),
24326            default_robustness_uniform_buffers: PipelineRobustnessBufferBehavior::default(),
24327            default_robustness_vertex_inputs: PipelineRobustnessBufferBehavior::default(),
24328            default_robustness_images: PipelineRobustnessImageBehavior::default(),
24329            copy_src_layout_count: u32::default(),
24330            copy_src_layouts: ptr::null_mut(),
24331            copy_dst_layout_count: u32::default(),
24332            copy_dst_layouts: ptr::null_mut(),
24333            optimal_tiling_layout_uuid: ByteArray::default(),
24334            identical_memory_type_requirements: Bool32::default(),
24335        }
24336    }
24337}
24338
24339unsafe impl Send for PhysicalDeviceVulkan14Properties {}
24340unsafe impl Sync for PhysicalDeviceVulkan14Properties {}
24341
24342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html>
24343#[repr(C)]
24344#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24345pub struct PhysicalDeviceVulkanMemoryModelFeatures {
24346    pub s_type: StructureType,
24347    pub next: *mut c_void,
24348    pub vulkan_memory_model: Bool32,
24349    pub vulkan_memory_model_device_scope: Bool32,
24350    pub vulkan_memory_model_availability_visibility_chains: Bool32,
24351}
24352
24353impl Default for PhysicalDeviceVulkanMemoryModelFeatures {
24354    #[inline]
24355    fn default() -> Self {
24356        Self {
24357            s_type: StructureType::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
24358            next: ptr::null_mut(),
24359            vulkan_memory_model: Bool32::default(),
24360            vulkan_memory_model_device_scope: Bool32::default(),
24361            vulkan_memory_model_availability_visibility_chains: Bool32::default(),
24362        }
24363    }
24364}
24365
24366unsafe impl Send for PhysicalDeviceVulkanMemoryModelFeatures {}
24367unsafe impl Sync for PhysicalDeviceVulkanMemoryModelFeatures {}
24368
24369/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html>
24370#[repr(C)]
24371#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24372pub struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
24373    pub s_type: StructureType,
24374    pub next: *mut c_void,
24375    pub workgroup_memory_explicit_layout: Bool32,
24376    pub workgroup_memory_explicit_layout_scalar_block_layout: Bool32,
24377    pub workgroup_memory_explicit_layout_8bit_access: Bool32,
24378    pub workgroup_memory_explicit_layout_16bit_access: Bool32,
24379}
24380
24381impl Default for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
24382    #[inline]
24383    fn default() -> Self {
24384        Self {
24385            s_type: StructureType::PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
24386            next: ptr::null_mut(),
24387            workgroup_memory_explicit_layout: Bool32::default(),
24388            workgroup_memory_explicit_layout_scalar_block_layout: Bool32::default(),
24389            workgroup_memory_explicit_layout_8bit_access: Bool32::default(),
24390            workgroup_memory_explicit_layout_16bit_access: Bool32::default(),
24391        }
24392    }
24393}
24394
24395unsafe impl Send for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
24396unsafe impl Sync for PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {}
24397
24398/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html>
24399#[repr(C)]
24400#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24401pub struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
24402    pub s_type: StructureType,
24403    pub next: *mut c_void,
24404    pub ycbcr2plane444_formats: Bool32,
24405}
24406
24407impl Default for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
24408    #[inline]
24409    fn default() -> Self {
24410        Self {
24411            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
24412            next: ptr::null_mut(),
24413            ycbcr2plane444_formats: Bool32::default(),
24414        }
24415    }
24416}
24417
24418unsafe impl Send for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
24419unsafe impl Sync for PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {}
24420
24421/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html>
24422#[repr(C)]
24423#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24424pub struct PhysicalDeviceYcbcrDegammaFeaturesQCOM {
24425    pub s_type: StructureType,
24426    pub next: *mut c_void,
24427    pub ycbcr_degamma: Bool32,
24428}
24429
24430impl Default for PhysicalDeviceYcbcrDegammaFeaturesQCOM {
24431    #[inline]
24432    fn default() -> Self {
24433        Self {
24434            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM,
24435            next: ptr::null_mut(),
24436            ycbcr_degamma: Bool32::default(),
24437        }
24438    }
24439}
24440
24441unsafe impl Send for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
24442unsafe impl Sync for PhysicalDeviceYcbcrDegammaFeaturesQCOM {}
24443
24444/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html>
24445#[repr(C)]
24446#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24447pub struct PhysicalDeviceYcbcrImageArraysFeaturesEXT {
24448    pub s_type: StructureType,
24449    pub next: *mut c_void,
24450    pub ycbcr_image_arrays: Bool32,
24451}
24452
24453impl Default for PhysicalDeviceYcbcrImageArraysFeaturesEXT {
24454    #[inline]
24455    fn default() -> Self {
24456        Self {
24457            s_type: StructureType::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
24458            next: ptr::null_mut(),
24459            ycbcr_image_arrays: Bool32::default(),
24460        }
24461    }
24462}
24463
24464unsafe impl Send for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
24465unsafe impl Sync for PhysicalDeviceYcbcrImageArraysFeaturesEXT {}
24466
24467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.html>
24468#[repr(C)]
24469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24470pub struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
24471    pub s_type: StructureType,
24472    pub next: *mut c_void,
24473    pub zero_initialize_device_memory: Bool32,
24474}
24475
24476impl Default for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {
24477    #[inline]
24478    fn default() -> Self {
24479        Self {
24480            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT,
24481            next: ptr::null_mut(),
24482            zero_initialize_device_memory: Bool32::default(),
24483        }
24484    }
24485}
24486
24487unsafe impl Send for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
24488unsafe impl Sync for PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT {}
24489
24490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html>
24491#[repr(C)]
24492#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24493pub struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
24494    pub s_type: StructureType,
24495    pub next: *mut c_void,
24496    pub shader_zero_initialize_workgroup_memory: Bool32,
24497}
24498
24499impl Default for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
24500    #[inline]
24501    fn default() -> Self {
24502        Self {
24503            s_type: StructureType::PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
24504            next: ptr::null_mut(),
24505            shader_zero_initialize_workgroup_memory: Bool32::default(),
24506        }
24507    }
24508}
24509
24510unsafe impl Send for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
24511unsafe impl Sync for PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {}
24512
24513/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html>
24514#[repr(C)]
24515#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24516pub struct PipelineBinaryCreateInfoKHR {
24517    pub s_type: StructureType,
24518    pub next: *const c_void,
24519    pub keys_and_data_info: *const PipelineBinaryKeysAndDataKHR,
24520    pub pipeline: Pipeline,
24521    pub pipeline_create_info: *const PipelineCreateInfoKHR,
24522}
24523
24524impl Default for PipelineBinaryCreateInfoKHR {
24525    #[inline]
24526    fn default() -> Self {
24527        Self {
24528            s_type: StructureType::PIPELINE_BINARY_CREATE_INFO_KHR,
24529            next: ptr::null(),
24530            keys_and_data_info: ptr::null(),
24531            pipeline: Pipeline::default(),
24532            pipeline_create_info: ptr::null(),
24533        }
24534    }
24535}
24536
24537unsafe impl Send for PipelineBinaryCreateInfoKHR {}
24538unsafe impl Sync for PipelineBinaryCreateInfoKHR {}
24539
24540/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html>
24541#[repr(C)]
24542#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24543pub struct PipelineBinaryDataInfoKHR {
24544    pub s_type: StructureType,
24545    pub next: *mut c_void,
24546    pub pipeline_binary: PipelineBinaryKHR,
24547}
24548
24549impl Default for PipelineBinaryDataInfoKHR {
24550    #[inline]
24551    fn default() -> Self {
24552        Self {
24553            s_type: StructureType::PIPELINE_BINARY_DATA_INFO_KHR,
24554            next: ptr::null_mut(),
24555            pipeline_binary: PipelineBinaryKHR::default(),
24556        }
24557    }
24558}
24559
24560unsafe impl Send for PipelineBinaryDataInfoKHR {}
24561unsafe impl Sync for PipelineBinaryDataInfoKHR {}
24562
24563/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html>
24564#[repr(C)]
24565#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24566pub struct PipelineBinaryDataKHR {
24567    pub data_size: usize,
24568    pub data: *mut c_void,
24569}
24570
24571impl Default for PipelineBinaryDataKHR {
24572    #[inline]
24573    fn default() -> Self {
24574        Self {
24575            data_size: usize::default(),
24576            data: ptr::null_mut(),
24577        }
24578    }
24579}
24580
24581unsafe impl Send for PipelineBinaryDataKHR {}
24582unsafe impl Sync for PipelineBinaryDataKHR {}
24583
24584/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html>
24585#[repr(C)]
24586#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24587pub struct PipelineBinaryHandlesInfoKHR {
24588    pub s_type: StructureType,
24589    pub next: *const c_void,
24590    pub pipeline_binary_count: u32,
24591    pub pipeline_binaries: *mut PipelineBinaryKHR,
24592}
24593
24594impl Default for PipelineBinaryHandlesInfoKHR {
24595    #[inline]
24596    fn default() -> Self {
24597        Self {
24598            s_type: StructureType::PIPELINE_BINARY_HANDLES_INFO_KHR,
24599            next: ptr::null(),
24600            pipeline_binary_count: u32::default(),
24601            pipeline_binaries: ptr::null_mut(),
24602        }
24603    }
24604}
24605
24606unsafe impl Send for PipelineBinaryHandlesInfoKHR {}
24607unsafe impl Sync for PipelineBinaryHandlesInfoKHR {}
24608
24609/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html>
24610#[repr(C)]
24611#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24612pub struct PipelineBinaryInfoKHR {
24613    pub s_type: StructureType,
24614    pub next: *const c_void,
24615    pub binary_count: u32,
24616    pub pipeline_binaries: *const PipelineBinaryKHR,
24617}
24618
24619impl Default for PipelineBinaryInfoKHR {
24620    #[inline]
24621    fn default() -> Self {
24622        Self {
24623            s_type: StructureType::PIPELINE_BINARY_INFO_KHR,
24624            next: ptr::null(),
24625            binary_count: u32::default(),
24626            pipeline_binaries: ptr::null(),
24627        }
24628    }
24629}
24630
24631unsafe impl Send for PipelineBinaryInfoKHR {}
24632unsafe impl Sync for PipelineBinaryInfoKHR {}
24633
24634/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html>
24635#[repr(C)]
24636#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24637pub struct PipelineBinaryKeyKHR {
24638    pub s_type: StructureType,
24639    pub next: *mut c_void,
24640    pub key_size: u32,
24641    pub key: ByteArray<MAX_PIPELINE_BINARY_KEY_SIZE_KHR>,
24642}
24643
24644impl Default for PipelineBinaryKeyKHR {
24645    #[inline]
24646    fn default() -> Self {
24647        Self {
24648            s_type: StructureType::PIPELINE_BINARY_KEY_KHR,
24649            next: ptr::null_mut(),
24650            key_size: u32::default(),
24651            key: ByteArray::default(),
24652        }
24653    }
24654}
24655
24656unsafe impl Send for PipelineBinaryKeyKHR {}
24657unsafe impl Sync for PipelineBinaryKeyKHR {}
24658
24659/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html>
24660#[repr(C)]
24661#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24662pub struct PipelineBinaryKeysAndDataKHR {
24663    pub binary_count: u32,
24664    pub pipeline_binary_keys: *const PipelineBinaryKeyKHR,
24665    pub pipeline_binary_data: *const PipelineBinaryDataKHR,
24666}
24667
24668impl Default for PipelineBinaryKeysAndDataKHR {
24669    #[inline]
24670    fn default() -> Self {
24671        Self {
24672            binary_count: u32::default(),
24673            pipeline_binary_keys: ptr::null(),
24674            pipeline_binary_data: ptr::null(),
24675        }
24676    }
24677}
24678
24679unsafe impl Send for PipelineBinaryKeysAndDataKHR {}
24680unsafe impl Sync for PipelineBinaryKeysAndDataKHR {}
24681
24682/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html>
24683#[repr(C)]
24684#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24685pub struct PipelineCacheCreateInfo {
24686    pub s_type: StructureType,
24687    pub next: *const c_void,
24688    pub flags: PipelineCacheCreateFlags,
24689    pub initial_data_size: usize,
24690    pub initial_data: *const c_void,
24691}
24692
24693impl Default for PipelineCacheCreateInfo {
24694    #[inline]
24695    fn default() -> Self {
24696        Self {
24697            s_type: StructureType::PIPELINE_CACHE_CREATE_INFO,
24698            next: ptr::null(),
24699            flags: PipelineCacheCreateFlags::default(),
24700            initial_data_size: usize::default(),
24701            initial_data: ptr::null(),
24702        }
24703    }
24704}
24705
24706unsafe impl Send for PipelineCacheCreateInfo {}
24707unsafe impl Sync for PipelineCacheCreateInfo {}
24708
24709/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionDataGraphQCOM.html>
24710#[repr(C)]
24711#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24712pub struct PipelineCacheHeaderVersionDataGraphQCOM {
24713    pub header_size: u32,
24714    pub header_version: PipelineCacheHeaderVersion,
24715    pub cache_type: DataGraphModelCacheTypeQCOM,
24716    pub cache_version: u32,
24717    pub toolchain_version: [u32; DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM as usize],
24718}
24719
24720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html>
24721#[repr(C)]
24722#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24723pub struct PipelineCacheHeaderVersionOne {
24724    pub header_size: u32,
24725    pub header_version: PipelineCacheHeaderVersion,
24726    pub vendor_id: u32,
24727    pub device_id: u32,
24728    pub pipeline_cache_uuid: ByteArray<UUID_SIZE>,
24729}
24730
24731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html>
24732#[repr(C)]
24733#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24734pub struct PipelineColorBlendAdvancedStateCreateInfoEXT {
24735    pub s_type: StructureType,
24736    pub next: *const c_void,
24737    pub src_premultiplied: Bool32,
24738    pub dst_premultiplied: Bool32,
24739    pub blend_overlap: BlendOverlapEXT,
24740}
24741
24742impl Default for PipelineColorBlendAdvancedStateCreateInfoEXT {
24743    #[inline]
24744    fn default() -> Self {
24745        Self {
24746            s_type: StructureType::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
24747            next: ptr::null(),
24748            src_premultiplied: Bool32::default(),
24749            dst_premultiplied: Bool32::default(),
24750            blend_overlap: BlendOverlapEXT::default(),
24751        }
24752    }
24753}
24754
24755unsafe impl Send for PipelineColorBlendAdvancedStateCreateInfoEXT {}
24756unsafe impl Sync for PipelineColorBlendAdvancedStateCreateInfoEXT {}
24757
24758/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html>
24759#[repr(C)]
24760#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24761pub struct PipelineColorBlendAttachmentState {
24762    pub blend_enable: Bool32,
24763    pub src_color_blend_factor: BlendFactor,
24764    pub dst_color_blend_factor: BlendFactor,
24765    pub color_blend_op: BlendOp,
24766    pub src_alpha_blend_factor: BlendFactor,
24767    pub dst_alpha_blend_factor: BlendFactor,
24768    pub alpha_blend_op: BlendOp,
24769    pub color_write_mask: ColorComponentFlags,
24770}
24771
24772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html>
24773#[repr(C)]
24774#[derive(Copy, Clone, Debug, PartialEq)]
24775pub struct PipelineColorBlendStateCreateInfo {
24776    pub s_type: StructureType,
24777    pub next: *const c_void,
24778    pub flags: PipelineColorBlendStateCreateFlags,
24779    pub logic_op_enable: Bool32,
24780    pub logic_op: LogicOp,
24781    pub attachment_count: u32,
24782    pub attachments: *const PipelineColorBlendAttachmentState,
24783    pub blend_constants: [f32; 4],
24784}
24785
24786impl Default for PipelineColorBlendStateCreateInfo {
24787    #[inline]
24788    fn default() -> Self {
24789        Self {
24790            s_type: StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
24791            next: ptr::null(),
24792            flags: PipelineColorBlendStateCreateFlags::default(),
24793            logic_op_enable: Bool32::default(),
24794            logic_op: LogicOp::default(),
24795            attachment_count: u32::default(),
24796            attachments: ptr::null(),
24797            blend_constants: [f32::default(); 4],
24798        }
24799    }
24800}
24801
24802unsafe impl Send for PipelineColorBlendStateCreateInfo {}
24803unsafe impl Sync for PipelineColorBlendStateCreateInfo {}
24804
24805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html>
24806#[repr(C)]
24807#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24808pub struct PipelineColorWriteCreateInfoEXT {
24809    pub s_type: StructureType,
24810    pub next: *const c_void,
24811    pub attachment_count: u32,
24812    pub color_write_enables: *const Bool32,
24813}
24814
24815impl Default for PipelineColorWriteCreateInfoEXT {
24816    #[inline]
24817    fn default() -> Self {
24818        Self {
24819            s_type: StructureType::PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
24820            next: ptr::null(),
24821            attachment_count: u32::default(),
24822            color_write_enables: ptr::null(),
24823        }
24824    }
24825}
24826
24827unsafe impl Send for PipelineColorWriteCreateInfoEXT {}
24828unsafe impl Sync for PipelineColorWriteCreateInfoEXT {}
24829
24830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html>
24831#[repr(C)]
24832#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24833pub struct PipelineCompilerControlCreateInfoAMD {
24834    pub s_type: StructureType,
24835    pub next: *const c_void,
24836    pub compiler_control_flags: PipelineCompilerControlFlagsAMD,
24837}
24838
24839impl Default for PipelineCompilerControlCreateInfoAMD {
24840    #[inline]
24841    fn default() -> Self {
24842        Self {
24843            s_type: StructureType::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
24844            next: ptr::null(),
24845            compiler_control_flags: PipelineCompilerControlFlagsAMD::default(),
24846        }
24847    }
24848}
24849
24850unsafe impl Send for PipelineCompilerControlCreateInfoAMD {}
24851unsafe impl Sync for PipelineCompilerControlCreateInfoAMD {}
24852
24853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html>
24854#[repr(C)]
24855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24856pub struct PipelineCoverageModulationStateCreateInfoNV {
24857    pub s_type: StructureType,
24858    pub next: *const c_void,
24859    pub flags: PipelineCoverageModulationStateCreateFlagsNV,
24860    pub coverage_modulation_mode: CoverageModulationModeNV,
24861    pub coverage_modulation_table_enable: Bool32,
24862    pub coverage_modulation_table_count: u32,
24863    pub coverage_modulation_table: *const f32,
24864}
24865
24866impl Default for PipelineCoverageModulationStateCreateInfoNV {
24867    #[inline]
24868    fn default() -> Self {
24869        Self {
24870            s_type: StructureType::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
24871            next: ptr::null(),
24872            flags: PipelineCoverageModulationStateCreateFlagsNV::default(),
24873            coverage_modulation_mode: CoverageModulationModeNV::default(),
24874            coverage_modulation_table_enable: Bool32::default(),
24875            coverage_modulation_table_count: u32::default(),
24876            coverage_modulation_table: ptr::null(),
24877        }
24878    }
24879}
24880
24881unsafe impl Send for PipelineCoverageModulationStateCreateInfoNV {}
24882unsafe impl Sync for PipelineCoverageModulationStateCreateInfoNV {}
24883
24884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html>
24885#[repr(C)]
24886#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24887pub struct PipelineCoverageReductionStateCreateInfoNV {
24888    pub s_type: StructureType,
24889    pub next: *const c_void,
24890    pub flags: PipelineCoverageReductionStateCreateFlagsNV,
24891    pub coverage_reduction_mode: CoverageReductionModeNV,
24892}
24893
24894impl Default for PipelineCoverageReductionStateCreateInfoNV {
24895    #[inline]
24896    fn default() -> Self {
24897        Self {
24898            s_type: StructureType::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
24899            next: ptr::null(),
24900            flags: PipelineCoverageReductionStateCreateFlagsNV::default(),
24901            coverage_reduction_mode: CoverageReductionModeNV::default(),
24902        }
24903    }
24904}
24905
24906unsafe impl Send for PipelineCoverageReductionStateCreateInfoNV {}
24907unsafe impl Sync for PipelineCoverageReductionStateCreateInfoNV {}
24908
24909/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html>
24910#[repr(C)]
24911#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24912pub struct PipelineCoverageToColorStateCreateInfoNV {
24913    pub s_type: StructureType,
24914    pub next: *const c_void,
24915    pub flags: PipelineCoverageToColorStateCreateFlagsNV,
24916    pub coverage_to_color_enable: Bool32,
24917    pub coverage_to_color_location: u32,
24918}
24919
24920impl Default for PipelineCoverageToColorStateCreateInfoNV {
24921    #[inline]
24922    fn default() -> Self {
24923        Self {
24924            s_type: StructureType::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
24925            next: ptr::null(),
24926            flags: PipelineCoverageToColorStateCreateFlagsNV::default(),
24927            coverage_to_color_enable: Bool32::default(),
24928            coverage_to_color_location: u32::default(),
24929        }
24930    }
24931}
24932
24933unsafe impl Send for PipelineCoverageToColorStateCreateInfoNV {}
24934unsafe impl Sync for PipelineCoverageToColorStateCreateInfoNV {}
24935
24936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html>
24937#[repr(C)]
24938#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24939pub struct PipelineCreateFlags2CreateInfo {
24940    pub s_type: StructureType,
24941    pub next: *const c_void,
24942    pub flags: PipelineCreateFlags2,
24943}
24944
24945impl Default for PipelineCreateFlags2CreateInfo {
24946    #[inline]
24947    fn default() -> Self {
24948        Self {
24949            s_type: StructureType::PIPELINE_CREATE_FLAGS_2_CREATE_INFO,
24950            next: ptr::null(),
24951            flags: PipelineCreateFlags2::default(),
24952        }
24953    }
24954}
24955
24956unsafe impl Send for PipelineCreateFlags2CreateInfo {}
24957unsafe impl Sync for PipelineCreateFlags2CreateInfo {}
24958
24959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html>
24960#[repr(C)]
24961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24962pub struct PipelineCreateInfoKHR {
24963    pub s_type: StructureType,
24964    pub next: *mut c_void,
24965}
24966
24967impl Default for PipelineCreateInfoKHR {
24968    #[inline]
24969    fn default() -> Self {
24970        Self {
24971            s_type: StructureType::PIPELINE_CREATE_INFO_KHR,
24972            next: ptr::null_mut(),
24973        }
24974    }
24975}
24976
24977unsafe impl Send for PipelineCreateInfoKHR {}
24978unsafe impl Sync for PipelineCreateInfoKHR {}
24979
24980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html>
24981#[repr(C)]
24982#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
24983pub struct PipelineCreationFeedback {
24984    pub flags: PipelineCreationFeedbackFlags,
24985    pub duration: u64,
24986}
24987
24988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html>
24989#[repr(C)]
24990#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
24991pub struct PipelineCreationFeedbackCreateInfo {
24992    pub s_type: StructureType,
24993    pub next: *const c_void,
24994    pub pipeline_creation_feedback: *mut PipelineCreationFeedback,
24995    pub pipeline_stage_creation_feedback_count: u32,
24996    pub pipeline_stage_creation_feedbacks: *mut PipelineCreationFeedback,
24997}
24998
24999impl Default for PipelineCreationFeedbackCreateInfo {
25000    #[inline]
25001    fn default() -> Self {
25002        Self {
25003            s_type: StructureType::PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
25004            next: ptr::null(),
25005            pipeline_creation_feedback: ptr::null_mut(),
25006            pipeline_stage_creation_feedback_count: u32::default(),
25007            pipeline_stage_creation_feedbacks: ptr::null_mut(),
25008        }
25009    }
25010}
25011
25012unsafe impl Send for PipelineCreationFeedbackCreateInfo {}
25013unsafe impl Sync for PipelineCreationFeedbackCreateInfo {}
25014
25015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html>
25016#[repr(C)]
25017#[derive(Copy, Clone, Debug, PartialEq)]
25018pub struct PipelineDepthStencilStateCreateInfo {
25019    pub s_type: StructureType,
25020    pub next: *const c_void,
25021    pub flags: PipelineDepthStencilStateCreateFlags,
25022    pub depth_test_enable: Bool32,
25023    pub depth_write_enable: Bool32,
25024    pub depth_compare_op: CompareOp,
25025    pub depth_bounds_test_enable: Bool32,
25026    pub stencil_test_enable: Bool32,
25027    pub front: StencilOpState,
25028    pub back: StencilOpState,
25029    pub min_depth_bounds: f32,
25030    pub max_depth_bounds: f32,
25031}
25032
25033impl Default for PipelineDepthStencilStateCreateInfo {
25034    #[inline]
25035    fn default() -> Self {
25036        Self {
25037            s_type: StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
25038            next: ptr::null(),
25039            flags: PipelineDepthStencilStateCreateFlags::default(),
25040            depth_test_enable: Bool32::default(),
25041            depth_write_enable: Bool32::default(),
25042            depth_compare_op: CompareOp::default(),
25043            depth_bounds_test_enable: Bool32::default(),
25044            stencil_test_enable: Bool32::default(),
25045            front: StencilOpState::default(),
25046            back: StencilOpState::default(),
25047            min_depth_bounds: f32::default(),
25048            max_depth_bounds: f32::default(),
25049        }
25050    }
25051}
25052
25053unsafe impl Send for PipelineDepthStencilStateCreateInfo {}
25054unsafe impl Sync for PipelineDepthStencilStateCreateInfo {}
25055
25056/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html>
25057#[repr(C)]
25058#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25059pub struct PipelineDiscardRectangleStateCreateInfoEXT {
25060    pub s_type: StructureType,
25061    pub next: *const c_void,
25062    pub flags: PipelineDiscardRectangleStateCreateFlagsEXT,
25063    pub discard_rectangle_mode: DiscardRectangleModeEXT,
25064    pub discard_rectangle_count: u32,
25065    pub discard_rectangles: *const Rect2D,
25066}
25067
25068impl Default for PipelineDiscardRectangleStateCreateInfoEXT {
25069    #[inline]
25070    fn default() -> Self {
25071        Self {
25072            s_type: StructureType::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
25073            next: ptr::null(),
25074            flags: PipelineDiscardRectangleStateCreateFlagsEXT::default(),
25075            discard_rectangle_mode: DiscardRectangleModeEXT::default(),
25076            discard_rectangle_count: u32::default(),
25077            discard_rectangles: ptr::null(),
25078        }
25079    }
25080}
25081
25082unsafe impl Send for PipelineDiscardRectangleStateCreateInfoEXT {}
25083unsafe impl Sync for PipelineDiscardRectangleStateCreateInfoEXT {}
25084
25085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html>
25086#[repr(C)]
25087#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25088pub struct PipelineDynamicStateCreateInfo {
25089    pub s_type: StructureType,
25090    pub next: *const c_void,
25091    pub flags: PipelineDynamicStateCreateFlags,
25092    pub dynamic_state_count: u32,
25093    pub dynamic_states: *const DynamicState,
25094}
25095
25096impl Default for PipelineDynamicStateCreateInfo {
25097    #[inline]
25098    fn default() -> Self {
25099        Self {
25100            s_type: StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
25101            next: ptr::null(),
25102            flags: PipelineDynamicStateCreateFlags::default(),
25103            dynamic_state_count: u32::default(),
25104            dynamic_states: ptr::null(),
25105        }
25106    }
25107}
25108
25109unsafe impl Send for PipelineDynamicStateCreateInfo {}
25110unsafe impl Sync for PipelineDynamicStateCreateInfo {}
25111
25112/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html>
25113#[repr(C)]
25114#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25115pub struct PipelineExecutableInfoKHR {
25116    pub s_type: StructureType,
25117    pub next: *const c_void,
25118    pub pipeline: Pipeline,
25119    pub executable_index: u32,
25120}
25121
25122impl Default for PipelineExecutableInfoKHR {
25123    #[inline]
25124    fn default() -> Self {
25125        Self {
25126            s_type: StructureType::PIPELINE_EXECUTABLE_INFO_KHR,
25127            next: ptr::null(),
25128            pipeline: Pipeline::default(),
25129            executable_index: u32::default(),
25130        }
25131    }
25132}
25133
25134unsafe impl Send for PipelineExecutableInfoKHR {}
25135unsafe impl Sync for PipelineExecutableInfoKHR {}
25136
25137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html>
25138#[repr(C)]
25139#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25140pub struct PipelineExecutableInternalRepresentationKHR {
25141    pub s_type: StructureType,
25142    pub next: *mut c_void,
25143    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
25144    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
25145    pub is_text: Bool32,
25146    pub data_size: usize,
25147    pub data: *mut c_void,
25148}
25149
25150impl Default for PipelineExecutableInternalRepresentationKHR {
25151    #[inline]
25152    fn default() -> Self {
25153        Self {
25154            s_type: StructureType::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
25155            next: ptr::null_mut(),
25156            name: StringArray::default(),
25157            description: StringArray::default(),
25158            is_text: Bool32::default(),
25159            data_size: usize::default(),
25160            data: ptr::null_mut(),
25161        }
25162    }
25163}
25164
25165unsafe impl Send for PipelineExecutableInternalRepresentationKHR {}
25166unsafe impl Sync for PipelineExecutableInternalRepresentationKHR {}
25167
25168/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html>
25169#[repr(C)]
25170#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25171pub struct PipelineExecutablePropertiesKHR {
25172    pub s_type: StructureType,
25173    pub next: *mut c_void,
25174    pub stages: ShaderStageFlags,
25175    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
25176    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
25177    pub subgroup_size: u32,
25178}
25179
25180impl Default for PipelineExecutablePropertiesKHR {
25181    #[inline]
25182    fn default() -> Self {
25183        Self {
25184            s_type: StructureType::PIPELINE_EXECUTABLE_PROPERTIES_KHR,
25185            next: ptr::null_mut(),
25186            stages: ShaderStageFlags::default(),
25187            name: StringArray::default(),
25188            description: StringArray::default(),
25189            subgroup_size: u32::default(),
25190        }
25191    }
25192}
25193
25194unsafe impl Send for PipelineExecutablePropertiesKHR {}
25195unsafe impl Sync for PipelineExecutablePropertiesKHR {}
25196
25197/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html>
25198#[repr(C)]
25199#[derive(Copy, Clone, Debug)]
25200pub struct PipelineExecutableStatisticKHR {
25201    pub s_type: StructureType,
25202    pub next: *mut c_void,
25203    pub name: StringArray<MAX_DESCRIPTION_SIZE>,
25204    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
25205    pub format: PipelineExecutableStatisticFormatKHR,
25206    pub value: PipelineExecutableStatisticValueKHR,
25207}
25208
25209impl Default for PipelineExecutableStatisticKHR {
25210    #[inline]
25211    fn default() -> Self {
25212        Self {
25213            s_type: StructureType::PIPELINE_EXECUTABLE_STATISTIC_KHR,
25214            next: ptr::null_mut(),
25215            name: StringArray::default(),
25216            description: StringArray::default(),
25217            format: PipelineExecutableStatisticFormatKHR::default(),
25218            value: PipelineExecutableStatisticValueKHR::default(),
25219        }
25220    }
25221}
25222
25223unsafe impl Send for PipelineExecutableStatisticKHR {}
25224unsafe impl Sync for PipelineExecutableStatisticKHR {}
25225
25226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentDensityMapLayeredCreateInfoVALVE.html>
25227#[repr(C)]
25228#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25229pub struct PipelineFragmentDensityMapLayeredCreateInfoVALVE {
25230    pub s_type: StructureType,
25231    pub next: *const c_void,
25232    pub max_fragment_density_map_layers: u32,
25233}
25234
25235impl Default for PipelineFragmentDensityMapLayeredCreateInfoVALVE {
25236    #[inline]
25237    fn default() -> Self {
25238        Self {
25239            s_type: StructureType::PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE,
25240            next: ptr::null(),
25241            max_fragment_density_map_layers: u32::default(),
25242        }
25243    }
25244}
25245
25246unsafe impl Send for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
25247unsafe impl Sync for PipelineFragmentDensityMapLayeredCreateInfoVALVE {}
25248
25249/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html>
25250#[repr(C)]
25251#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25252pub struct PipelineFragmentShadingRateEnumStateCreateInfoNV {
25253    pub s_type: StructureType,
25254    pub next: *const c_void,
25255    pub shading_rate_type: FragmentShadingRateTypeNV,
25256    pub shading_rate: FragmentShadingRateNV,
25257    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
25258}
25259
25260impl Default for PipelineFragmentShadingRateEnumStateCreateInfoNV {
25261    #[inline]
25262    fn default() -> Self {
25263        Self {
25264            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
25265            next: ptr::null(),
25266            shading_rate_type: FragmentShadingRateTypeNV::default(),
25267            shading_rate: FragmentShadingRateNV::default(),
25268            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
25269        }
25270    }
25271}
25272
25273unsafe impl Send for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
25274unsafe impl Sync for PipelineFragmentShadingRateEnumStateCreateInfoNV {}
25275
25276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html>
25277#[repr(C)]
25278#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25279pub struct PipelineFragmentShadingRateStateCreateInfoKHR {
25280    pub s_type: StructureType,
25281    pub next: *const c_void,
25282    pub fragment_size: Extent2D,
25283    pub combiner_ops: [FragmentShadingRateCombinerOpKHR; 2],
25284}
25285
25286impl Default for PipelineFragmentShadingRateStateCreateInfoKHR {
25287    #[inline]
25288    fn default() -> Self {
25289        Self {
25290            s_type: StructureType::PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
25291            next: ptr::null(),
25292            fragment_size: Extent2D::default(),
25293            combiner_ops: [FragmentShadingRateCombinerOpKHR::default(); 2],
25294        }
25295    }
25296}
25297
25298unsafe impl Send for PipelineFragmentShadingRateStateCreateInfoKHR {}
25299unsafe impl Sync for PipelineFragmentShadingRateStateCreateInfoKHR {}
25300
25301/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html>
25302#[repr(C)]
25303#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25304pub struct PipelineIndirectDeviceAddressInfoNV {
25305    pub s_type: StructureType,
25306    pub next: *const c_void,
25307    pub pipeline_bind_point: PipelineBindPoint,
25308    pub pipeline: Pipeline,
25309}
25310
25311impl Default for PipelineIndirectDeviceAddressInfoNV {
25312    #[inline]
25313    fn default() -> Self {
25314        Self {
25315            s_type: StructureType::PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV,
25316            next: ptr::null(),
25317            pipeline_bind_point: PipelineBindPoint::default(),
25318            pipeline: Pipeline::default(),
25319        }
25320    }
25321}
25322
25323unsafe impl Send for PipelineIndirectDeviceAddressInfoNV {}
25324unsafe impl Sync for PipelineIndirectDeviceAddressInfoNV {}
25325
25326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html>
25327#[repr(C)]
25328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25329pub struct PipelineInfoKHR {
25330    pub s_type: StructureType,
25331    pub next: *const c_void,
25332    pub pipeline: Pipeline,
25333}
25334
25335impl Default for PipelineInfoKHR {
25336    #[inline]
25337    fn default() -> Self {
25338        Self {
25339            s_type: StructureType::PIPELINE_INFO_KHR,
25340            next: ptr::null(),
25341            pipeline: Pipeline::default(),
25342        }
25343    }
25344}
25345
25346unsafe impl Send for PipelineInfoKHR {}
25347unsafe impl Sync for PipelineInfoKHR {}
25348
25349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html>
25350#[repr(C)]
25351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25352pub struct PipelineInputAssemblyStateCreateInfo {
25353    pub s_type: StructureType,
25354    pub next: *const c_void,
25355    pub flags: PipelineInputAssemblyStateCreateFlags,
25356    pub topology: PrimitiveTopology,
25357    pub primitive_restart_enable: Bool32,
25358}
25359
25360impl Default for PipelineInputAssemblyStateCreateInfo {
25361    #[inline]
25362    fn default() -> Self {
25363        Self {
25364            s_type: StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
25365            next: ptr::null(),
25366            flags: PipelineInputAssemblyStateCreateFlags::default(),
25367            topology: PrimitiveTopology::default(),
25368            primitive_restart_enable: Bool32::default(),
25369        }
25370    }
25371}
25372
25373unsafe impl Send for PipelineInputAssemblyStateCreateInfo {}
25374unsafe impl Sync for PipelineInputAssemblyStateCreateInfo {}
25375
25376/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html>
25377#[repr(C)]
25378#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25379pub struct PipelineLayoutCreateInfo {
25380    pub s_type: StructureType,
25381    pub next: *const c_void,
25382    pub flags: PipelineLayoutCreateFlags,
25383    pub set_layout_count: u32,
25384    pub set_layouts: *const DescriptorSetLayout,
25385    pub push_constant_range_count: u32,
25386    pub push_constant_ranges: *const PushConstantRange,
25387}
25388
25389impl Default for PipelineLayoutCreateInfo {
25390    #[inline]
25391    fn default() -> Self {
25392        Self {
25393            s_type: StructureType::PIPELINE_LAYOUT_CREATE_INFO,
25394            next: ptr::null(),
25395            flags: PipelineLayoutCreateFlags::default(),
25396            set_layout_count: u32::default(),
25397            set_layouts: ptr::null(),
25398            push_constant_range_count: u32::default(),
25399            push_constant_ranges: ptr::null(),
25400        }
25401    }
25402}
25403
25404unsafe impl Send for PipelineLayoutCreateInfo {}
25405unsafe impl Sync for PipelineLayoutCreateInfo {}
25406
25407/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html>
25408#[repr(C)]
25409#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25410pub struct PipelineLibraryCreateInfoKHR {
25411    pub s_type: StructureType,
25412    pub next: *const c_void,
25413    pub library_count: u32,
25414    pub libraries: *const Pipeline,
25415}
25416
25417impl Default for PipelineLibraryCreateInfoKHR {
25418    #[inline]
25419    fn default() -> Self {
25420        Self {
25421            s_type: StructureType::PIPELINE_LIBRARY_CREATE_INFO_KHR,
25422            next: ptr::null(),
25423            library_count: u32::default(),
25424            libraries: ptr::null(),
25425        }
25426    }
25427}
25428
25429unsafe impl Send for PipelineLibraryCreateInfoKHR {}
25430unsafe impl Sync for PipelineLibraryCreateInfoKHR {}
25431
25432/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html>
25433#[repr(C)]
25434#[derive(Copy, Clone, Debug, PartialEq)]
25435pub struct PipelineMultisampleStateCreateInfo {
25436    pub s_type: StructureType,
25437    pub next: *const c_void,
25438    pub flags: PipelineMultisampleStateCreateFlags,
25439    pub rasterization_samples: SampleCountFlags,
25440    pub sample_shading_enable: Bool32,
25441    pub min_sample_shading: f32,
25442    pub sample_mask: *const SampleMask,
25443    pub alpha_to_coverage_enable: Bool32,
25444    pub alpha_to_one_enable: Bool32,
25445}
25446
25447impl Default for PipelineMultisampleStateCreateInfo {
25448    #[inline]
25449    fn default() -> Self {
25450        Self {
25451            s_type: StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
25452            next: ptr::null(),
25453            flags: PipelineMultisampleStateCreateFlags::default(),
25454            rasterization_samples: SampleCountFlags::default(),
25455            sample_shading_enable: Bool32::default(),
25456            min_sample_shading: f32::default(),
25457            sample_mask: ptr::null(),
25458            alpha_to_coverage_enable: Bool32::default(),
25459            alpha_to_one_enable: Bool32::default(),
25460        }
25461    }
25462}
25463
25464unsafe impl Send for PipelineMultisampleStateCreateInfo {}
25465unsafe impl Sync for PipelineMultisampleStateCreateInfo {}
25466
25467/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html>
25468#[repr(C)]
25469#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25470pub struct PipelinePropertiesIdentifierEXT {
25471    pub s_type: StructureType,
25472    pub next: *mut c_void,
25473    pub pipeline_identifier: ByteArray<UUID_SIZE>,
25474}
25475
25476impl Default for PipelinePropertiesIdentifierEXT {
25477    #[inline]
25478    fn default() -> Self {
25479        Self {
25480            s_type: StructureType::PIPELINE_PROPERTIES_IDENTIFIER_EXT,
25481            next: ptr::null_mut(),
25482            pipeline_identifier: ByteArray::default(),
25483        }
25484    }
25485}
25486
25487unsafe impl Send for PipelinePropertiesIdentifierEXT {}
25488unsafe impl Sync for PipelinePropertiesIdentifierEXT {}
25489
25490/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html>
25491#[repr(C)]
25492#[derive(Copy, Clone, Debug, PartialEq)]
25493pub struct PipelineRasterizationConservativeStateCreateInfoEXT {
25494    pub s_type: StructureType,
25495    pub next: *const c_void,
25496    pub flags: PipelineRasterizationConservativeStateCreateFlagsEXT,
25497    pub conservative_rasterization_mode: ConservativeRasterizationModeEXT,
25498    pub extra_primitive_overestimation_size: f32,
25499}
25500
25501impl Default for PipelineRasterizationConservativeStateCreateInfoEXT {
25502    #[inline]
25503    fn default() -> Self {
25504        Self {
25505            s_type: StructureType::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
25506            next: ptr::null(),
25507            flags: PipelineRasterizationConservativeStateCreateFlagsEXT::default(),
25508            conservative_rasterization_mode: ConservativeRasterizationModeEXT::default(),
25509            extra_primitive_overestimation_size: f32::default(),
25510        }
25511    }
25512}
25513
25514unsafe impl Send for PipelineRasterizationConservativeStateCreateInfoEXT {}
25515unsafe impl Sync for PipelineRasterizationConservativeStateCreateInfoEXT {}
25516
25517/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html>
25518#[repr(C)]
25519#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25520pub struct PipelineRasterizationDepthClipStateCreateInfoEXT {
25521    pub s_type: StructureType,
25522    pub next: *const c_void,
25523    pub flags: PipelineRasterizationDepthClipStateCreateFlagsEXT,
25524    pub depth_clip_enable: Bool32,
25525}
25526
25527impl Default for PipelineRasterizationDepthClipStateCreateInfoEXT {
25528    #[inline]
25529    fn default() -> Self {
25530        Self {
25531            s_type: StructureType::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
25532            next: ptr::null(),
25533            flags: PipelineRasterizationDepthClipStateCreateFlagsEXT::default(),
25534            depth_clip_enable: Bool32::default(),
25535        }
25536    }
25537}
25538
25539unsafe impl Send for PipelineRasterizationDepthClipStateCreateInfoEXT {}
25540unsafe impl Sync for PipelineRasterizationDepthClipStateCreateInfoEXT {}
25541
25542/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html>
25543#[repr(C)]
25544#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25545pub struct PipelineRasterizationLineStateCreateInfo {
25546    pub s_type: StructureType,
25547    pub next: *const c_void,
25548    pub line_rasterization_mode: LineRasterizationMode,
25549    pub stippled_line_enable: Bool32,
25550    pub line_stipple_factor: u32,
25551    pub line_stipple_pattern: u16,
25552}
25553
25554impl Default for PipelineRasterizationLineStateCreateInfo {
25555    #[inline]
25556    fn default() -> Self {
25557        Self {
25558            s_type: StructureType::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO,
25559            next: ptr::null(),
25560            line_rasterization_mode: LineRasterizationMode::default(),
25561            stippled_line_enable: Bool32::default(),
25562            line_stipple_factor: u32::default(),
25563            line_stipple_pattern: u16::default(),
25564        }
25565    }
25566}
25567
25568unsafe impl Send for PipelineRasterizationLineStateCreateInfo {}
25569unsafe impl Sync for PipelineRasterizationLineStateCreateInfo {}
25570
25571/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html>
25572#[repr(C)]
25573#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25574pub struct PipelineRasterizationProvokingVertexStateCreateInfoEXT {
25575    pub s_type: StructureType,
25576    pub next: *const c_void,
25577    pub provoking_vertex_mode: ProvokingVertexModeEXT,
25578}
25579
25580impl Default for PipelineRasterizationProvokingVertexStateCreateInfoEXT {
25581    #[inline]
25582    fn default() -> Self {
25583        Self {
25584            s_type: StructureType::PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
25585            next: ptr::null(),
25586            provoking_vertex_mode: ProvokingVertexModeEXT::default(),
25587        }
25588    }
25589}
25590
25591unsafe impl Send for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
25592unsafe impl Sync for PipelineRasterizationProvokingVertexStateCreateInfoEXT {}
25593
25594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html>
25595#[repr(C)]
25596#[derive(Copy, Clone, Debug, PartialEq)]
25597pub struct PipelineRasterizationStateCreateInfo {
25598    pub s_type: StructureType,
25599    pub next: *const c_void,
25600    pub flags: PipelineRasterizationStateCreateFlags,
25601    pub depth_clamp_enable: Bool32,
25602    pub rasterizer_discard_enable: Bool32,
25603    pub polygon_mode: PolygonMode,
25604    pub cull_mode: CullModeFlags,
25605    pub front_face: FrontFace,
25606    pub depth_bias_enable: Bool32,
25607    pub depth_bias_constant_factor: f32,
25608    pub depth_bias_clamp: f32,
25609    pub depth_bias_slope_factor: f32,
25610    pub line_width: f32,
25611}
25612
25613impl Default for PipelineRasterizationStateCreateInfo {
25614    #[inline]
25615    fn default() -> Self {
25616        Self {
25617            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
25618            next: ptr::null(),
25619            flags: PipelineRasterizationStateCreateFlags::default(),
25620            depth_clamp_enable: Bool32::default(),
25621            rasterizer_discard_enable: Bool32::default(),
25622            polygon_mode: PolygonMode::default(),
25623            cull_mode: CullModeFlags::default(),
25624            front_face: FrontFace::default(),
25625            depth_bias_enable: Bool32::default(),
25626            depth_bias_constant_factor: f32::default(),
25627            depth_bias_clamp: f32::default(),
25628            depth_bias_slope_factor: f32::default(),
25629            line_width: f32::default(),
25630        }
25631    }
25632}
25633
25634unsafe impl Send for PipelineRasterizationStateCreateInfo {}
25635unsafe impl Sync for PipelineRasterizationStateCreateInfo {}
25636
25637/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html>
25638#[repr(C)]
25639#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25640pub struct PipelineRasterizationStateRasterizationOrderAMD {
25641    pub s_type: StructureType,
25642    pub next: *const c_void,
25643    pub rasterization_order: RasterizationOrderAMD,
25644}
25645
25646impl Default for PipelineRasterizationStateRasterizationOrderAMD {
25647    #[inline]
25648    fn default() -> Self {
25649        Self {
25650            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
25651            next: ptr::null(),
25652            rasterization_order: RasterizationOrderAMD::default(),
25653        }
25654    }
25655}
25656
25657unsafe impl Send for PipelineRasterizationStateRasterizationOrderAMD {}
25658unsafe impl Sync for PipelineRasterizationStateRasterizationOrderAMD {}
25659
25660/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html>
25661#[repr(C)]
25662#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25663pub struct PipelineRasterizationStateStreamCreateInfoEXT {
25664    pub s_type: StructureType,
25665    pub next: *const c_void,
25666    pub flags: PipelineRasterizationStateStreamCreateFlagsEXT,
25667    pub rasterization_stream: u32,
25668}
25669
25670impl Default for PipelineRasterizationStateStreamCreateInfoEXT {
25671    #[inline]
25672    fn default() -> Self {
25673        Self {
25674            s_type: StructureType::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
25675            next: ptr::null(),
25676            flags: PipelineRasterizationStateStreamCreateFlagsEXT::default(),
25677            rasterization_stream: u32::default(),
25678        }
25679    }
25680}
25681
25682unsafe impl Send for PipelineRasterizationStateStreamCreateInfoEXT {}
25683unsafe impl Sync for PipelineRasterizationStateStreamCreateInfoEXT {}
25684
25685/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html>
25686#[repr(C)]
25687#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25688pub struct PipelineRenderingCreateInfo {
25689    pub s_type: StructureType,
25690    pub next: *const c_void,
25691    pub view_mask: u32,
25692    pub color_attachment_count: u32,
25693    pub color_attachment_formats: *const Format,
25694    pub depth_attachment_format: Format,
25695    pub stencil_attachment_format: Format,
25696}
25697
25698impl Default for PipelineRenderingCreateInfo {
25699    #[inline]
25700    fn default() -> Self {
25701        Self {
25702            s_type: StructureType::PIPELINE_RENDERING_CREATE_INFO,
25703            next: ptr::null(),
25704            view_mask: u32::default(),
25705            color_attachment_count: u32::default(),
25706            color_attachment_formats: ptr::null(),
25707            depth_attachment_format: Format::default(),
25708            stencil_attachment_format: Format::default(),
25709        }
25710    }
25711}
25712
25713unsafe impl Send for PipelineRenderingCreateInfo {}
25714unsafe impl Sync for PipelineRenderingCreateInfo {}
25715
25716/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html>
25717#[repr(C)]
25718#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25719pub struct PipelineRepresentativeFragmentTestStateCreateInfoNV {
25720    pub s_type: StructureType,
25721    pub next: *const c_void,
25722    pub representative_fragment_test_enable: Bool32,
25723}
25724
25725impl Default for PipelineRepresentativeFragmentTestStateCreateInfoNV {
25726    #[inline]
25727    fn default() -> Self {
25728        Self {
25729            s_type: StructureType::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
25730            next: ptr::null(),
25731            representative_fragment_test_enable: Bool32::default(),
25732        }
25733    }
25734}
25735
25736unsafe impl Send for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
25737unsafe impl Sync for PipelineRepresentativeFragmentTestStateCreateInfoNV {}
25738
25739/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html>
25740#[repr(C)]
25741#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25742pub struct PipelineRobustnessCreateInfo {
25743    pub s_type: StructureType,
25744    pub next: *const c_void,
25745    pub storage_buffers: PipelineRobustnessBufferBehavior,
25746    pub uniform_buffers: PipelineRobustnessBufferBehavior,
25747    pub vertex_inputs: PipelineRobustnessBufferBehavior,
25748    pub images: PipelineRobustnessImageBehavior,
25749}
25750
25751impl Default for PipelineRobustnessCreateInfo {
25752    #[inline]
25753    fn default() -> Self {
25754        Self {
25755            s_type: StructureType::PIPELINE_ROBUSTNESS_CREATE_INFO,
25756            next: ptr::null(),
25757            storage_buffers: PipelineRobustnessBufferBehavior::default(),
25758            uniform_buffers: PipelineRobustnessBufferBehavior::default(),
25759            vertex_inputs: PipelineRobustnessBufferBehavior::default(),
25760            images: PipelineRobustnessImageBehavior::default(),
25761        }
25762    }
25763}
25764
25765unsafe impl Send for PipelineRobustnessCreateInfo {}
25766unsafe impl Sync for PipelineRobustnessCreateInfo {}
25767
25768/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html>
25769#[repr(C)]
25770#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25771pub struct PipelineSampleLocationsStateCreateInfoEXT {
25772    pub s_type: StructureType,
25773    pub next: *const c_void,
25774    pub sample_locations_enable: Bool32,
25775    pub sample_locations_info: SampleLocationsInfoEXT,
25776}
25777
25778impl Default for PipelineSampleLocationsStateCreateInfoEXT {
25779    #[inline]
25780    fn default() -> Self {
25781        Self {
25782            s_type: StructureType::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
25783            next: ptr::null(),
25784            sample_locations_enable: Bool32::default(),
25785            sample_locations_info: SampleLocationsInfoEXT::default(),
25786        }
25787    }
25788}
25789
25790unsafe impl Send for PipelineSampleLocationsStateCreateInfoEXT {}
25791unsafe impl Sync for PipelineSampleLocationsStateCreateInfoEXT {}
25792
25793/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html>
25794#[repr(C)]
25795#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25796pub struct PipelineShaderStageCreateInfo {
25797    pub s_type: StructureType,
25798    pub next: *const c_void,
25799    pub flags: PipelineShaderStageCreateFlags,
25800    pub stage: ShaderStageFlags,
25801    pub module: ShaderModule,
25802    pub name: *const c_char,
25803    pub specialization_info: *const SpecializationInfo,
25804}
25805
25806impl Default for PipelineShaderStageCreateInfo {
25807    #[inline]
25808    fn default() -> Self {
25809        Self {
25810            s_type: StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
25811            next: ptr::null(),
25812            flags: PipelineShaderStageCreateFlags::default(),
25813            stage: ShaderStageFlags::default(),
25814            module: ShaderModule::default(),
25815            name: ptr::null(),
25816            specialization_info: ptr::null(),
25817        }
25818    }
25819}
25820
25821unsafe impl Send for PipelineShaderStageCreateInfo {}
25822unsafe impl Sync for PipelineShaderStageCreateInfo {}
25823
25824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html>
25825#[repr(C)]
25826#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25827pub struct PipelineShaderStageModuleIdentifierCreateInfoEXT {
25828    pub s_type: StructureType,
25829    pub next: *const c_void,
25830    pub identifier_size: u32,
25831    pub identifier: *const u8,
25832}
25833
25834impl Default for PipelineShaderStageModuleIdentifierCreateInfoEXT {
25835    #[inline]
25836    fn default() -> Self {
25837        Self {
25838            s_type: StructureType::PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT,
25839            next: ptr::null(),
25840            identifier_size: u32::default(),
25841            identifier: ptr::null(),
25842        }
25843    }
25844}
25845
25846unsafe impl Send for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
25847unsafe impl Sync for PipelineShaderStageModuleIdentifierCreateInfoEXT {}
25848
25849/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html>
25850#[repr(C)]
25851#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25852pub struct PipelineShaderStageNodeCreateInfoAMDX {
25853    pub s_type: StructureType,
25854    pub next: *const c_void,
25855    pub name: *const c_char,
25856    pub index: u32,
25857}
25858
25859impl Default for PipelineShaderStageNodeCreateInfoAMDX {
25860    #[inline]
25861    fn default() -> Self {
25862        Self {
25863            s_type: StructureType::PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX,
25864            next: ptr::null(),
25865            name: ptr::null(),
25866            index: u32::default(),
25867        }
25868    }
25869}
25870
25871unsafe impl Send for PipelineShaderStageNodeCreateInfoAMDX {}
25872unsafe impl Sync for PipelineShaderStageNodeCreateInfoAMDX {}
25873
25874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html>
25875#[repr(C)]
25876#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25877pub struct PipelineShaderStageRequiredSubgroupSizeCreateInfo {
25878    pub s_type: StructureType,
25879    pub next: *const c_void,
25880    pub required_subgroup_size: u32,
25881}
25882
25883impl Default for PipelineShaderStageRequiredSubgroupSizeCreateInfo {
25884    #[inline]
25885    fn default() -> Self {
25886        Self {
25887            s_type: StructureType::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
25888            next: ptr::null(),
25889            required_subgroup_size: u32::default(),
25890        }
25891    }
25892}
25893
25894unsafe impl Send for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
25895unsafe impl Sync for PipelineShaderStageRequiredSubgroupSizeCreateInfo {}
25896
25897/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html>
25898#[repr(C)]
25899#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25900pub struct PipelineTessellationDomainOriginStateCreateInfo {
25901    pub s_type: StructureType,
25902    pub next: *const c_void,
25903    pub domain_origin: TessellationDomainOrigin,
25904}
25905
25906impl Default for PipelineTessellationDomainOriginStateCreateInfo {
25907    #[inline]
25908    fn default() -> Self {
25909        Self {
25910            s_type: StructureType::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
25911            next: ptr::null(),
25912            domain_origin: TessellationDomainOrigin::default(),
25913        }
25914    }
25915}
25916
25917unsafe impl Send for PipelineTessellationDomainOriginStateCreateInfo {}
25918unsafe impl Sync for PipelineTessellationDomainOriginStateCreateInfo {}
25919
25920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html>
25921#[repr(C)]
25922#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25923pub struct PipelineTessellationStateCreateInfo {
25924    pub s_type: StructureType,
25925    pub next: *const c_void,
25926    pub flags: PipelineTessellationStateCreateFlags,
25927    pub patch_control_points: u32,
25928}
25929
25930impl Default for PipelineTessellationStateCreateInfo {
25931    #[inline]
25932    fn default() -> Self {
25933        Self {
25934            s_type: StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
25935            next: ptr::null(),
25936            flags: PipelineTessellationStateCreateFlags::default(),
25937            patch_control_points: u32::default(),
25938        }
25939    }
25940}
25941
25942unsafe impl Send for PipelineTessellationStateCreateInfo {}
25943unsafe impl Sync for PipelineTessellationStateCreateInfo {}
25944
25945/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html>
25946#[repr(C)]
25947#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25948pub struct PipelineVertexInputDivisorStateCreateInfo {
25949    pub s_type: StructureType,
25950    pub next: *const c_void,
25951    pub vertex_binding_divisor_count: u32,
25952    pub vertex_binding_divisors: *const VertexInputBindingDivisorDescription,
25953}
25954
25955impl Default for PipelineVertexInputDivisorStateCreateInfo {
25956    #[inline]
25957    fn default() -> Self {
25958        Self {
25959            s_type: StructureType::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO,
25960            next: ptr::null(),
25961            vertex_binding_divisor_count: u32::default(),
25962            vertex_binding_divisors: ptr::null(),
25963        }
25964    }
25965}
25966
25967unsafe impl Send for PipelineVertexInputDivisorStateCreateInfo {}
25968unsafe impl Sync for PipelineVertexInputDivisorStateCreateInfo {}
25969
25970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html>
25971#[repr(C)]
25972#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
25973pub struct PipelineVertexInputStateCreateInfo {
25974    pub s_type: StructureType,
25975    pub next: *const c_void,
25976    pub flags: PipelineVertexInputStateCreateFlags,
25977    pub vertex_binding_description_count: u32,
25978    pub vertex_binding_descriptions: *const VertexInputBindingDescription,
25979    pub vertex_attribute_description_count: u32,
25980    pub vertex_attribute_descriptions: *const VertexInputAttributeDescription,
25981}
25982
25983impl Default for PipelineVertexInputStateCreateInfo {
25984    #[inline]
25985    fn default() -> Self {
25986        Self {
25987            s_type: StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
25988            next: ptr::null(),
25989            flags: PipelineVertexInputStateCreateFlags::default(),
25990            vertex_binding_description_count: u32::default(),
25991            vertex_binding_descriptions: ptr::null(),
25992            vertex_attribute_description_count: u32::default(),
25993            vertex_attribute_descriptions: ptr::null(),
25994        }
25995    }
25996}
25997
25998unsafe impl Send for PipelineVertexInputStateCreateInfo {}
25999unsafe impl Sync for PipelineVertexInputStateCreateInfo {}
26000
26001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html>
26002#[repr(C)]
26003#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26004pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
26005    pub s_type: StructureType,
26006    pub next: *const c_void,
26007    pub sample_order_type: CoarseSampleOrderTypeNV,
26008    pub custom_sample_order_count: u32,
26009    pub custom_sample_orders: *const CoarseSampleOrderCustomNV,
26010}
26011
26012impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
26013    #[inline]
26014    fn default() -> Self {
26015        Self {
26016            s_type: StructureType::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
26017            next: ptr::null(),
26018            sample_order_type: CoarseSampleOrderTypeNV::default(),
26019            custom_sample_order_count: u32::default(),
26020            custom_sample_orders: ptr::null(),
26021        }
26022    }
26023}
26024
26025unsafe impl Send for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
26026unsafe impl Sync for PipelineViewportCoarseSampleOrderStateCreateInfoNV {}
26027
26028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html>
26029#[repr(C)]
26030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26031pub struct PipelineViewportDepthClampControlCreateInfoEXT {
26032    pub s_type: StructureType,
26033    pub next: *const c_void,
26034    pub depth_clamp_mode: DepthClampModeEXT,
26035    pub depth_clamp_range: *const DepthClampRangeEXT,
26036}
26037
26038impl Default for PipelineViewportDepthClampControlCreateInfoEXT {
26039    #[inline]
26040    fn default() -> Self {
26041        Self {
26042            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT,
26043            next: ptr::null(),
26044            depth_clamp_mode: DepthClampModeEXT::default(),
26045            depth_clamp_range: ptr::null(),
26046        }
26047    }
26048}
26049
26050unsafe impl Send for PipelineViewportDepthClampControlCreateInfoEXT {}
26051unsafe impl Sync for PipelineViewportDepthClampControlCreateInfoEXT {}
26052
26053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html>
26054#[repr(C)]
26055#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26056pub struct PipelineViewportDepthClipControlCreateInfoEXT {
26057    pub s_type: StructureType,
26058    pub next: *const c_void,
26059    pub negative_one_to_one: Bool32,
26060}
26061
26062impl Default for PipelineViewportDepthClipControlCreateInfoEXT {
26063    #[inline]
26064    fn default() -> Self {
26065        Self {
26066            s_type: StructureType::PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
26067            next: ptr::null(),
26068            negative_one_to_one: Bool32::default(),
26069        }
26070    }
26071}
26072
26073unsafe impl Send for PipelineViewportDepthClipControlCreateInfoEXT {}
26074unsafe impl Sync for PipelineViewportDepthClipControlCreateInfoEXT {}
26075
26076/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html>
26077#[repr(C)]
26078#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26079pub struct PipelineViewportExclusiveScissorStateCreateInfoNV {
26080    pub s_type: StructureType,
26081    pub next: *const c_void,
26082    pub exclusive_scissor_count: u32,
26083    pub exclusive_scissors: *const Rect2D,
26084}
26085
26086impl Default for PipelineViewportExclusiveScissorStateCreateInfoNV {
26087    #[inline]
26088    fn default() -> Self {
26089        Self {
26090            s_type: StructureType::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
26091            next: ptr::null(),
26092            exclusive_scissor_count: u32::default(),
26093            exclusive_scissors: ptr::null(),
26094        }
26095    }
26096}
26097
26098unsafe impl Send for PipelineViewportExclusiveScissorStateCreateInfoNV {}
26099unsafe impl Sync for PipelineViewportExclusiveScissorStateCreateInfoNV {}
26100
26101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html>
26102#[repr(C)]
26103#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26104pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
26105    pub s_type: StructureType,
26106    pub next: *const c_void,
26107    pub shading_rate_image_enable: Bool32,
26108    pub viewport_count: u32,
26109    pub shading_rate_palettes: *const ShadingRatePaletteNV,
26110}
26111
26112impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
26113    #[inline]
26114    fn default() -> Self {
26115        Self {
26116            s_type: StructureType::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
26117            next: ptr::null(),
26118            shading_rate_image_enable: Bool32::default(),
26119            viewport_count: u32::default(),
26120            shading_rate_palettes: ptr::null(),
26121        }
26122    }
26123}
26124
26125unsafe impl Send for PipelineViewportShadingRateImageStateCreateInfoNV {}
26126unsafe impl Sync for PipelineViewportShadingRateImageStateCreateInfoNV {}
26127
26128/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html>
26129#[repr(C)]
26130#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26131pub struct PipelineViewportStateCreateInfo {
26132    pub s_type: StructureType,
26133    pub next: *const c_void,
26134    pub flags: PipelineViewportStateCreateFlags,
26135    pub viewport_count: u32,
26136    pub viewports: *const Viewport,
26137    pub scissor_count: u32,
26138    pub scissors: *const Rect2D,
26139}
26140
26141impl Default for PipelineViewportStateCreateInfo {
26142    #[inline]
26143    fn default() -> Self {
26144        Self {
26145            s_type: StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
26146            next: ptr::null(),
26147            flags: PipelineViewportStateCreateFlags::default(),
26148            viewport_count: u32::default(),
26149            viewports: ptr::null(),
26150            scissor_count: u32::default(),
26151            scissors: ptr::null(),
26152        }
26153    }
26154}
26155
26156unsafe impl Send for PipelineViewportStateCreateInfo {}
26157unsafe impl Sync for PipelineViewportStateCreateInfo {}
26158
26159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html>
26160#[repr(C)]
26161#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26162pub struct PipelineViewportSwizzleStateCreateInfoNV {
26163    pub s_type: StructureType,
26164    pub next: *const c_void,
26165    pub flags: PipelineViewportSwizzleStateCreateFlagsNV,
26166    pub viewport_count: u32,
26167    pub viewport_swizzles: *const ViewportSwizzleNV,
26168}
26169
26170impl Default for PipelineViewportSwizzleStateCreateInfoNV {
26171    #[inline]
26172    fn default() -> Self {
26173        Self {
26174            s_type: StructureType::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
26175            next: ptr::null(),
26176            flags: PipelineViewportSwizzleStateCreateFlagsNV::default(),
26177            viewport_count: u32::default(),
26178            viewport_swizzles: ptr::null(),
26179        }
26180    }
26181}
26182
26183unsafe impl Send for PipelineViewportSwizzleStateCreateInfoNV {}
26184unsafe impl Sync for PipelineViewportSwizzleStateCreateInfoNV {}
26185
26186/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html>
26187#[repr(C)]
26188#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26189pub struct PipelineViewportWScalingStateCreateInfoNV {
26190    pub s_type: StructureType,
26191    pub next: *const c_void,
26192    pub viewport_w_scaling_enable: Bool32,
26193    pub viewport_count: u32,
26194    pub viewport_w_scalings: *const ViewportWScalingNV,
26195}
26196
26197impl Default for PipelineViewportWScalingStateCreateInfoNV {
26198    #[inline]
26199    fn default() -> Self {
26200        Self {
26201            s_type: StructureType::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
26202            next: ptr::null(),
26203            viewport_w_scaling_enable: Bool32::default(),
26204            viewport_count: u32::default(),
26205            viewport_w_scalings: ptr::null(),
26206        }
26207    }
26208}
26209
26210unsafe impl Send for PipelineViewportWScalingStateCreateInfoNV {}
26211unsafe impl Sync for PipelineViewportWScalingStateCreateInfoNV {}
26212
26213/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html>
26214#[repr(C)]
26215#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26216pub struct PresentFrameTokenGGP {
26217    pub s_type: StructureType,
26218    pub next: *const c_void,
26219    pub frame_token: GgpFrameToken,
26220}
26221
26222impl Default for PresentFrameTokenGGP {
26223    #[inline]
26224    fn default() -> Self {
26225        Self {
26226            s_type: StructureType::PRESENT_FRAME_TOKEN_GGP,
26227            next: ptr::null(),
26228            frame_token: GgpFrameToken::default(),
26229        }
26230    }
26231}
26232
26233unsafe impl Send for PresentFrameTokenGGP {}
26234unsafe impl Sync for PresentFrameTokenGGP {}
26235
26236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentId2KHR.html>
26237#[repr(C)]
26238#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26239pub struct PresentId2KHR {
26240    pub s_type: StructureType,
26241    pub next: *const c_void,
26242    pub swapchain_count: u32,
26243    pub present_ids: *const u64,
26244}
26245
26246impl Default for PresentId2KHR {
26247    #[inline]
26248    fn default() -> Self {
26249        Self {
26250            s_type: StructureType::PRESENT_ID_2_KHR,
26251            next: ptr::null(),
26252            swapchain_count: u32::default(),
26253            present_ids: ptr::null(),
26254        }
26255    }
26256}
26257
26258unsafe impl Send for PresentId2KHR {}
26259unsafe impl Sync for PresentId2KHR {}
26260
26261/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentIdKHR.html>
26262#[repr(C)]
26263#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26264pub struct PresentIdKHR {
26265    pub s_type: StructureType,
26266    pub next: *const c_void,
26267    pub swapchain_count: u32,
26268    pub present_ids: *const u64,
26269}
26270
26271impl Default for PresentIdKHR {
26272    #[inline]
26273    fn default() -> Self {
26274        Self {
26275            s_type: StructureType::PRESENT_ID_KHR,
26276            next: ptr::null(),
26277            swapchain_count: u32::default(),
26278            present_ids: ptr::null(),
26279        }
26280    }
26281}
26282
26283unsafe impl Send for PresentIdKHR {}
26284unsafe impl Sync for PresentIdKHR {}
26285
26286/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentInfoKHR.html>
26287#[repr(C)]
26288#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26289pub struct PresentInfoKHR {
26290    pub s_type: StructureType,
26291    pub next: *const c_void,
26292    pub wait_semaphore_count: u32,
26293    pub wait_semaphores: *const Semaphore,
26294    pub swapchain_count: u32,
26295    pub swapchains: *const SwapchainKHR,
26296    pub image_indices: *const u32,
26297    pub results: *mut Result,
26298}
26299
26300impl Default for PresentInfoKHR {
26301    #[inline]
26302    fn default() -> Self {
26303        Self {
26304            s_type: StructureType::PRESENT_INFO_KHR,
26305            next: ptr::null(),
26306            wait_semaphore_count: u32::default(),
26307            wait_semaphores: ptr::null(),
26308            swapchain_count: u32::default(),
26309            swapchains: ptr::null(),
26310            image_indices: ptr::null(),
26311            results: ptr::null_mut(),
26312        }
26313    }
26314}
26315
26316unsafe impl Send for PresentInfoKHR {}
26317unsafe impl Sync for PresentInfoKHR {}
26318
26319/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionKHR.html>
26320#[repr(C)]
26321#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26322pub struct PresentRegionKHR {
26323    pub rectangle_count: u32,
26324    pub rectangles: *const RectLayerKHR,
26325}
26326
26327impl Default for PresentRegionKHR {
26328    #[inline]
26329    fn default() -> Self {
26330        Self {
26331            rectangle_count: u32::default(),
26332            rectangles: ptr::null(),
26333        }
26334    }
26335}
26336
26337unsafe impl Send for PresentRegionKHR {}
26338unsafe impl Sync for PresentRegionKHR {}
26339
26340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html>
26341#[repr(C)]
26342#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26343pub struct PresentRegionsKHR {
26344    pub s_type: StructureType,
26345    pub next: *const c_void,
26346    pub swapchain_count: u32,
26347    pub regions: *const PresentRegionKHR,
26348}
26349
26350impl Default for PresentRegionsKHR {
26351    #[inline]
26352    fn default() -> Self {
26353        Self {
26354            s_type: StructureType::PRESENT_REGIONS_KHR,
26355            next: ptr::null(),
26356            swapchain_count: u32::default(),
26357            regions: ptr::null(),
26358        }
26359    }
26360}
26361
26362unsafe impl Send for PresentRegionsKHR {}
26363unsafe impl Sync for PresentRegionsKHR {}
26364
26365/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentStageTimeEXT.html>
26366#[repr(C)]
26367#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26368pub struct PresentStageTimeEXT {
26369    pub stage: PresentStageFlagsEXT,
26370    pub time: u64,
26371}
26372
26373/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html>
26374#[repr(C)]
26375#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26376pub struct PresentTimeGOOGLE {
26377    pub present_id: u32,
26378    pub desired_present_time: u64,
26379}
26380
26381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html>
26382#[repr(C)]
26383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26384pub struct PresentTimesInfoGOOGLE {
26385    pub s_type: StructureType,
26386    pub next: *const c_void,
26387    pub swapchain_count: u32,
26388    pub times: *const PresentTimeGOOGLE,
26389}
26390
26391impl Default for PresentTimesInfoGOOGLE {
26392    #[inline]
26393    fn default() -> Self {
26394        Self {
26395            s_type: StructureType::PRESENT_TIMES_INFO_GOOGLE,
26396            next: ptr::null(),
26397            swapchain_count: u32::default(),
26398            times: ptr::null(),
26399        }
26400    }
26401}
26402
26403unsafe impl Send for PresentTimesInfoGOOGLE {}
26404unsafe impl Sync for PresentTimesInfoGOOGLE {}
26405
26406/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimingInfoEXT.html>
26407#[repr(C)]
26408#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26409pub struct PresentTimingInfoEXT {
26410    pub s_type: StructureType,
26411    pub next: *const c_void,
26412    pub flags: PresentTimingInfoFlagsEXT,
26413    pub target_time: u64,
26414    pub time_domain_id: u64,
26415    pub present_stage_queries: PresentStageFlagsEXT,
26416    pub target_time_domain_present_stage: PresentStageFlagsEXT,
26417}
26418
26419impl Default for PresentTimingInfoEXT {
26420    #[inline]
26421    fn default() -> Self {
26422        Self {
26423            s_type: StructureType::PRESENT_TIMING_INFO_EXT,
26424            next: ptr::null(),
26425            flags: PresentTimingInfoFlagsEXT::default(),
26426            target_time: u64::default(),
26427            time_domain_id: u64::default(),
26428            present_stage_queries: PresentStageFlagsEXT::default(),
26429            target_time_domain_present_stage: PresentStageFlagsEXT::default(),
26430        }
26431    }
26432}
26433
26434unsafe impl Send for PresentTimingInfoEXT {}
26435unsafe impl Sync for PresentTimingInfoEXT {}
26436
26437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimingSurfaceCapabilitiesEXT.html>
26438#[repr(C)]
26439#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26440pub struct PresentTimingSurfaceCapabilitiesEXT {
26441    pub s_type: StructureType,
26442    pub next: *mut c_void,
26443    pub present_timing_supported: Bool32,
26444    pub present_at_absolute_time_supported: Bool32,
26445    pub present_at_relative_time_supported: Bool32,
26446    pub present_stage_queries: PresentStageFlagsEXT,
26447}
26448
26449impl Default for PresentTimingSurfaceCapabilitiesEXT {
26450    #[inline]
26451    fn default() -> Self {
26452        Self {
26453            s_type: StructureType::PRESENT_TIMING_SURFACE_CAPABILITIES_EXT,
26454            next: ptr::null_mut(),
26455            present_timing_supported: Bool32::default(),
26456            present_at_absolute_time_supported: Bool32::default(),
26457            present_at_relative_time_supported: Bool32::default(),
26458            present_stage_queries: PresentStageFlagsEXT::default(),
26459        }
26460    }
26461}
26462
26463unsafe impl Send for PresentTimingSurfaceCapabilitiesEXT {}
26464unsafe impl Sync for PresentTimingSurfaceCapabilitiesEXT {}
26465
26466/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentTimingsInfoEXT.html>
26467#[repr(C)]
26468#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26469pub struct PresentTimingsInfoEXT {
26470    pub s_type: StructureType,
26471    pub next: *const c_void,
26472    pub swapchain_count: u32,
26473    pub timing_infos: *const PresentTimingInfoEXT,
26474}
26475
26476impl Default for PresentTimingsInfoEXT {
26477    #[inline]
26478    fn default() -> Self {
26479        Self {
26480            s_type: StructureType::PRESENT_TIMINGS_INFO_EXT,
26481            next: ptr::null(),
26482            swapchain_count: u32::default(),
26483            timing_infos: ptr::null(),
26484        }
26485    }
26486}
26487
26488unsafe impl Send for PresentTimingsInfoEXT {}
26489unsafe impl Sync for PresentTimingsInfoEXT {}
26490
26491/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPresentWait2InfoKHR.html>
26492#[repr(C)]
26493#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26494pub struct PresentWait2InfoKHR {
26495    pub s_type: StructureType,
26496    pub next: *const c_void,
26497    pub present_id: u64,
26498    pub timeout: u64,
26499}
26500
26501impl Default for PresentWait2InfoKHR {
26502    #[inline]
26503    fn default() -> Self {
26504        Self {
26505            s_type: StructureType::PRESENT_WAIT_2_INFO_KHR,
26506            next: ptr::null(),
26507            present_id: u64::default(),
26508            timeout: u64::default(),
26509        }
26510    }
26511}
26512
26513unsafe impl Send for PresentWait2InfoKHR {}
26514unsafe impl Sync for PresentWait2InfoKHR {}
26515
26516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html>
26517#[repr(C)]
26518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26519pub struct PrivateDataSlotCreateInfo {
26520    pub s_type: StructureType,
26521    pub next: *const c_void,
26522    pub flags: PrivateDataSlotCreateFlags,
26523}
26524
26525impl Default for PrivateDataSlotCreateInfo {
26526    #[inline]
26527    fn default() -> Self {
26528        Self {
26529            s_type: StructureType::PRIVATE_DATA_SLOT_CREATE_INFO,
26530            next: ptr::null(),
26531            flags: PrivateDataSlotCreateFlags::default(),
26532        }
26533    }
26534}
26535
26536unsafe impl Send for PrivateDataSlotCreateInfo {}
26537unsafe impl Sync for PrivateDataSlotCreateInfo {}
26538
26539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html>
26540#[repr(C)]
26541#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26542pub struct ProtectedSubmitInfo {
26543    pub s_type: StructureType,
26544    pub next: *const c_void,
26545    pub protected_submit: Bool32,
26546}
26547
26548impl Default for ProtectedSubmitInfo {
26549    #[inline]
26550    fn default() -> Self {
26551        Self {
26552            s_type: StructureType::PROTECTED_SUBMIT_INFO,
26553            next: ptr::null(),
26554            protected_submit: Bool32::default(),
26555        }
26556    }
26557}
26558
26559unsafe impl Send for ProtectedSubmitInfo {}
26560unsafe impl Sync for ProtectedSubmitInfo {}
26561
26562/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantBankInfoNV.html>
26563#[repr(C)]
26564#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26565pub struct PushConstantBankInfoNV {
26566    pub s_type: StructureType,
26567    pub next: *const c_void,
26568    pub bank: u32,
26569}
26570
26571impl Default for PushConstantBankInfoNV {
26572    #[inline]
26573    fn default() -> Self {
26574        Self {
26575            s_type: StructureType::PUSH_CONSTANT_BANK_INFO_NV,
26576            next: ptr::null(),
26577            bank: u32::default(),
26578        }
26579    }
26580}
26581
26582unsafe impl Send for PushConstantBankInfoNV {}
26583unsafe impl Sync for PushConstantBankInfoNV {}
26584
26585/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantRange.html>
26586#[repr(C)]
26587#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26588pub struct PushConstantRange {
26589    pub stage_flags: ShaderStageFlags,
26590    pub offset: u32,
26591    pub size: u32,
26592}
26593
26594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfo.html>
26595#[repr(C)]
26596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26597pub struct PushConstantsInfo {
26598    pub s_type: StructureType,
26599    pub next: *const c_void,
26600    pub layout: PipelineLayout,
26601    pub stage_flags: ShaderStageFlags,
26602    pub offset: u32,
26603    pub size: u32,
26604    pub values: *const c_void,
26605}
26606
26607impl Default for PushConstantsInfo {
26608    #[inline]
26609    fn default() -> Self {
26610        Self {
26611            s_type: StructureType::PUSH_CONSTANTS_INFO,
26612            next: ptr::null(),
26613            layout: PipelineLayout::default(),
26614            stage_flags: ShaderStageFlags::default(),
26615            offset: u32::default(),
26616            size: u32::default(),
26617            values: ptr::null(),
26618        }
26619    }
26620}
26621
26622unsafe impl Send for PushConstantsInfo {}
26623unsafe impl Sync for PushConstantsInfo {}
26624
26625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDataInfoEXT.html>
26626#[repr(C)]
26627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26628pub struct PushDataInfoEXT {
26629    pub s_type: StructureType,
26630    pub next: *const c_void,
26631    pub offset: u32,
26632    pub data: HostAddressRangeConstEXT,
26633}
26634
26635impl Default for PushDataInfoEXT {
26636    #[inline]
26637    fn default() -> Self {
26638        Self {
26639            s_type: StructureType::PUSH_DATA_INFO_EXT,
26640            next: ptr::null(),
26641            offset: u32::default(),
26642            data: HostAddressRangeConstEXT::default(),
26643        }
26644    }
26645}
26646
26647unsafe impl Send for PushDataInfoEXT {}
26648unsafe impl Sync for PushDataInfoEXT {}
26649
26650/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html>
26651#[repr(C)]
26652#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26653pub struct PushDescriptorSetInfo {
26654    pub s_type: StructureType,
26655    pub next: *const c_void,
26656    pub stage_flags: ShaderStageFlags,
26657    pub layout: PipelineLayout,
26658    pub set: u32,
26659    pub descriptor_write_count: u32,
26660    pub descriptor_writes: *const WriteDescriptorSet,
26661}
26662
26663impl Default for PushDescriptorSetInfo {
26664    #[inline]
26665    fn default() -> Self {
26666        Self {
26667            s_type: StructureType::PUSH_DESCRIPTOR_SET_INFO,
26668            next: ptr::null(),
26669            stage_flags: ShaderStageFlags::default(),
26670            layout: PipelineLayout::default(),
26671            set: u32::default(),
26672            descriptor_write_count: u32::default(),
26673            descriptor_writes: ptr::null(),
26674        }
26675    }
26676}
26677
26678unsafe impl Send for PushDescriptorSetInfo {}
26679unsafe impl Sync for PushDescriptorSetInfo {}
26680
26681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html>
26682#[repr(C)]
26683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26684pub struct PushDescriptorSetWithTemplateInfo {
26685    pub s_type: StructureType,
26686    pub next: *const c_void,
26687    pub descriptor_update_template: DescriptorUpdateTemplate,
26688    pub layout: PipelineLayout,
26689    pub set: u32,
26690    pub data: *const c_void,
26691}
26692
26693impl Default for PushDescriptorSetWithTemplateInfo {
26694    #[inline]
26695    fn default() -> Self {
26696        Self {
26697            s_type: StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO,
26698            next: ptr::null(),
26699            descriptor_update_template: DescriptorUpdateTemplate::default(),
26700            layout: PipelineLayout::default(),
26701            set: u32::default(),
26702            data: ptr::null(),
26703        }
26704    }
26705}
26706
26707unsafe impl Send for PushDescriptorSetWithTemplateInfo {}
26708unsafe impl Sync for PushDescriptorSetWithTemplateInfo {}
26709
26710/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html>
26711#[repr(C)]
26712#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26713pub struct QueryLowLatencySupportNV {
26714    pub s_type: StructureType,
26715    pub next: *const c_void,
26716    pub queried_low_latency_data: *mut c_void,
26717}
26718
26719impl Default for QueryLowLatencySupportNV {
26720    #[inline]
26721    fn default() -> Self {
26722        Self {
26723            s_type: StructureType::QUERY_LOW_LATENCY_SUPPORT_NV,
26724            next: ptr::null(),
26725            queried_low_latency_data: ptr::null_mut(),
26726        }
26727    }
26728}
26729
26730unsafe impl Send for QueryLowLatencySupportNV {}
26731unsafe impl Sync for QueryLowLatencySupportNV {}
26732
26733/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html>
26734#[repr(C)]
26735#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26736pub struct QueryPoolCreateInfo {
26737    pub s_type: StructureType,
26738    pub next: *const c_void,
26739    pub flags: QueryPoolCreateFlags,
26740    pub query_type: QueryType,
26741    pub query_count: u32,
26742    pub pipeline_statistics: QueryPipelineStatisticFlags,
26743}
26744
26745impl Default for QueryPoolCreateInfo {
26746    #[inline]
26747    fn default() -> Self {
26748        Self {
26749            s_type: StructureType::QUERY_POOL_CREATE_INFO,
26750            next: ptr::null(),
26751            flags: QueryPoolCreateFlags::default(),
26752            query_type: QueryType::default(),
26753            query_count: u32::default(),
26754            pipeline_statistics: QueryPipelineStatisticFlags::default(),
26755        }
26756    }
26757}
26758
26759unsafe impl Send for QueryPoolCreateInfo {}
26760unsafe impl Sync for QueryPoolCreateInfo {}
26761
26762/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html>
26763#[repr(C)]
26764#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26765pub struct QueryPoolPerformanceCreateInfoKHR {
26766    pub s_type: StructureType,
26767    pub next: *const c_void,
26768    pub queue_family_index: u32,
26769    pub counter_index_count: u32,
26770    pub counter_indices: *const u32,
26771}
26772
26773impl Default for QueryPoolPerformanceCreateInfoKHR {
26774    #[inline]
26775    fn default() -> Self {
26776        Self {
26777            s_type: StructureType::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
26778            next: ptr::null(),
26779            queue_family_index: u32::default(),
26780            counter_index_count: u32::default(),
26781            counter_indices: ptr::null(),
26782        }
26783    }
26784}
26785
26786unsafe impl Send for QueryPoolPerformanceCreateInfoKHR {}
26787unsafe impl Sync for QueryPoolPerformanceCreateInfoKHR {}
26788
26789/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html>
26790#[repr(C)]
26791#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26792pub struct QueryPoolPerformanceQueryCreateInfoINTEL {
26793    pub s_type: StructureType,
26794    pub next: *const c_void,
26795    pub performance_counters_sampling: QueryPoolSamplingModeINTEL,
26796}
26797
26798impl Default for QueryPoolPerformanceQueryCreateInfoINTEL {
26799    #[inline]
26800    fn default() -> Self {
26801        Self {
26802            s_type: StructureType::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
26803            next: ptr::null(),
26804            performance_counters_sampling: QueryPoolSamplingModeINTEL::default(),
26805        }
26806    }
26807}
26808
26809unsafe impl Send for QueryPoolPerformanceQueryCreateInfoINTEL {}
26810unsafe impl Sync for QueryPoolPerformanceQueryCreateInfoINTEL {}
26811
26812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html>
26813#[repr(C)]
26814#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26815pub struct QueryPoolVideoEncodeFeedbackCreateInfoKHR {
26816    pub s_type: StructureType,
26817    pub next: *const c_void,
26818    pub encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
26819}
26820
26821impl Default for QueryPoolVideoEncodeFeedbackCreateInfoKHR {
26822    #[inline]
26823    fn default() -> Self {
26824        Self {
26825            s_type: StructureType::QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR,
26826            next: ptr::null(),
26827            encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
26828        }
26829    }
26830}
26831
26832unsafe impl Send for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
26833unsafe impl Sync for QueryPoolVideoEncodeFeedbackCreateInfoKHR {}
26834
26835/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html>
26836#[repr(C)]
26837#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26838pub struct QueueFamilyCheckpointProperties2NV {
26839    pub s_type: StructureType,
26840    pub next: *mut c_void,
26841    pub checkpoint_execution_stage_mask: PipelineStageFlags2,
26842}
26843
26844impl Default for QueueFamilyCheckpointProperties2NV {
26845    #[inline]
26846    fn default() -> Self {
26847        Self {
26848            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
26849            next: ptr::null_mut(),
26850            checkpoint_execution_stage_mask: PipelineStageFlags2::default(),
26851        }
26852    }
26853}
26854
26855unsafe impl Send for QueueFamilyCheckpointProperties2NV {}
26856unsafe impl Sync for QueueFamilyCheckpointProperties2NV {}
26857
26858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html>
26859#[repr(C)]
26860#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26861pub struct QueueFamilyCheckpointPropertiesNV {
26862    pub s_type: StructureType,
26863    pub next: *mut c_void,
26864    pub checkpoint_execution_stage_mask: PipelineStageFlags,
26865}
26866
26867impl Default for QueueFamilyCheckpointPropertiesNV {
26868    #[inline]
26869    fn default() -> Self {
26870        Self {
26871            s_type: StructureType::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
26872            next: ptr::null_mut(),
26873            checkpoint_execution_stage_mask: PipelineStageFlags::default(),
26874        }
26875    }
26876}
26877
26878unsafe impl Send for QueueFamilyCheckpointPropertiesNV {}
26879unsafe impl Sync for QueueFamilyCheckpointPropertiesNV {}
26880
26881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphProcessingEnginePropertiesARM.html>
26882#[repr(C)]
26883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26884pub struct QueueFamilyDataGraphProcessingEnginePropertiesARM {
26885    pub s_type: StructureType,
26886    pub next: *mut c_void,
26887    pub foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags,
26888    pub foreign_memory_handle_types: ExternalMemoryHandleTypeFlags,
26889}
26890
26891impl Default for QueueFamilyDataGraphProcessingEnginePropertiesARM {
26892    #[inline]
26893    fn default() -> Self {
26894        Self {
26895            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM,
26896            next: ptr::null_mut(),
26897            foreign_semaphore_handle_types: ExternalSemaphoreHandleTypeFlags::default(),
26898            foreign_memory_handle_types: ExternalMemoryHandleTypeFlags::default(),
26899        }
26900    }
26901}
26902
26903unsafe impl Send for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
26904unsafe impl Sync for QueueFamilyDataGraphProcessingEnginePropertiesARM {}
26905
26906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphPropertiesARM.html>
26907#[repr(C)]
26908#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26909pub struct QueueFamilyDataGraphPropertiesARM {
26910    pub s_type: StructureType,
26911    pub next: *mut c_void,
26912    pub engine: PhysicalDeviceDataGraphProcessingEngineARM,
26913    pub operation: PhysicalDeviceDataGraphOperationSupportARM,
26914}
26915
26916impl Default for QueueFamilyDataGraphPropertiesARM {
26917    #[inline]
26918    fn default() -> Self {
26919        Self {
26920            s_type: StructureType::QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM,
26921            next: ptr::null_mut(),
26922            engine: PhysicalDeviceDataGraphProcessingEngineARM::default(),
26923            operation: PhysicalDeviceDataGraphOperationSupportARM::default(),
26924        }
26925    }
26926}
26927
26928unsafe impl Send for QueueFamilyDataGraphPropertiesARM {}
26929unsafe impl Sync for QueueFamilyDataGraphPropertiesARM {}
26930
26931/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html>
26932#[repr(C)]
26933#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26934pub struct QueueFamilyGlobalPriorityProperties {
26935    pub s_type: StructureType,
26936    pub next: *mut c_void,
26937    pub priority_count: u32,
26938    pub priorities: [QueueGlobalPriority; MAX_GLOBAL_PRIORITY_SIZE as usize],
26939}
26940
26941impl Default for QueueFamilyGlobalPriorityProperties {
26942    #[inline]
26943    fn default() -> Self {
26944        Self {
26945            s_type: StructureType::QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES,
26946            next: ptr::null_mut(),
26947            priority_count: u32::default(),
26948            priorities: [QueueGlobalPriority::default(); MAX_GLOBAL_PRIORITY_SIZE],
26949        }
26950    }
26951}
26952
26953unsafe impl Send for QueueFamilyGlobalPriorityProperties {}
26954unsafe impl Sync for QueueFamilyGlobalPriorityProperties {}
26955
26956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyOwnershipTransferPropertiesKHR.html>
26957#[repr(C)]
26958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26959pub struct QueueFamilyOwnershipTransferPropertiesKHR {
26960    pub s_type: StructureType,
26961    pub next: *mut c_void,
26962    pub optimal_image_transfer_to_queue_families: u32,
26963}
26964
26965impl Default for QueueFamilyOwnershipTransferPropertiesKHR {
26966    #[inline]
26967    fn default() -> Self {
26968        Self {
26969            s_type: StructureType::QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR,
26970            next: ptr::null_mut(),
26971            optimal_image_transfer_to_queue_families: u32::default(),
26972        }
26973    }
26974}
26975
26976unsafe impl Send for QueueFamilyOwnershipTransferPropertiesKHR {}
26977unsafe impl Sync for QueueFamilyOwnershipTransferPropertiesKHR {}
26978
26979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html>
26980#[repr(C)]
26981#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
26982pub struct QueueFamilyProperties {
26983    pub queue_flags: QueueFlags,
26984    pub queue_count: u32,
26985    pub timestamp_valid_bits: u32,
26986    pub min_image_transfer_granularity: Extent3D,
26987}
26988
26989/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html>
26990#[repr(C)]
26991#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
26992pub struct QueueFamilyProperties2 {
26993    pub s_type: StructureType,
26994    pub next: *mut c_void,
26995    pub queue_family_properties: QueueFamilyProperties,
26996}
26997
26998impl Default for QueueFamilyProperties2 {
26999    #[inline]
27000    fn default() -> Self {
27001        Self {
27002            s_type: StructureType::QUEUE_FAMILY_PROPERTIES_2,
27003            next: ptr::null_mut(),
27004            queue_family_properties: QueueFamilyProperties::default(),
27005        }
27006    }
27007}
27008
27009unsafe impl Send for QueueFamilyProperties2 {}
27010unsafe impl Sync for QueueFamilyProperties2 {}
27011
27012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html>
27013#[repr(C)]
27014#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27015pub struct QueueFamilyQueryResultStatusPropertiesKHR {
27016    pub s_type: StructureType,
27017    pub next: *mut c_void,
27018    pub query_result_status_support: Bool32,
27019}
27020
27021impl Default for QueueFamilyQueryResultStatusPropertiesKHR {
27022    #[inline]
27023    fn default() -> Self {
27024        Self {
27025            s_type: StructureType::QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR,
27026            next: ptr::null_mut(),
27027            query_result_status_support: Bool32::default(),
27028        }
27029    }
27030}
27031
27032unsafe impl Send for QueueFamilyQueryResultStatusPropertiesKHR {}
27033unsafe impl Sync for QueueFamilyQueryResultStatusPropertiesKHR {}
27034
27035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html>
27036#[repr(C)]
27037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27038pub struct QueueFamilyVideoPropertiesKHR {
27039    pub s_type: StructureType,
27040    pub next: *mut c_void,
27041    pub video_codec_operations: VideoCodecOperationFlagsKHR,
27042}
27043
27044impl Default for QueueFamilyVideoPropertiesKHR {
27045    #[inline]
27046    fn default() -> Self {
27047        Self {
27048            s_type: StructureType::QUEUE_FAMILY_VIDEO_PROPERTIES_KHR,
27049            next: ptr::null_mut(),
27050            video_codec_operations: VideoCodecOperationFlagsKHR::default(),
27051        }
27052    }
27053}
27054
27055unsafe impl Send for QueueFamilyVideoPropertiesKHR {}
27056unsafe impl Sync for QueueFamilyVideoPropertiesKHR {}
27057
27058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html>
27059#[repr(C)]
27060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27061pub struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
27062    pub s_type: StructureType,
27063    pub next: *mut c_void,
27064    pub allow_cluster_acceleration_structure: Bool32,
27065}
27066
27067impl Default for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {
27068    #[inline]
27069    fn default() -> Self {
27070        Self {
27071            s_type:
27072                StructureType::RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV,
27073            next: ptr::null_mut(),
27074            allow_cluster_acceleration_structure: Bool32::default(),
27075        }
27076    }
27077}
27078
27079unsafe impl Send for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
27080unsafe impl Sync for RayTracingPipelineClusterAccelerationStructureCreateInfoNV {}
27081
27082/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html>
27083#[repr(C)]
27084#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27085pub struct RayTracingPipelineCreateInfoKHR {
27086    pub s_type: StructureType,
27087    pub next: *const c_void,
27088    pub flags: PipelineCreateFlags,
27089    pub stage_count: u32,
27090    pub stages: *const PipelineShaderStageCreateInfo,
27091    pub group_count: u32,
27092    pub groups: *const RayTracingShaderGroupCreateInfoKHR,
27093    pub max_pipeline_ray_recursion_depth: u32,
27094    pub library_info: *const PipelineLibraryCreateInfoKHR,
27095    pub library_interface: *const RayTracingPipelineInterfaceCreateInfoKHR,
27096    pub dynamic_state: *const PipelineDynamicStateCreateInfo,
27097    pub layout: PipelineLayout,
27098    pub base_pipeline_handle: Pipeline,
27099    pub base_pipeline_index: i32,
27100}
27101
27102impl Default for RayTracingPipelineCreateInfoKHR {
27103    #[inline]
27104    fn default() -> Self {
27105        Self {
27106            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
27107            next: ptr::null(),
27108            flags: PipelineCreateFlags::default(),
27109            stage_count: u32::default(),
27110            stages: ptr::null(),
27111            group_count: u32::default(),
27112            groups: ptr::null(),
27113            max_pipeline_ray_recursion_depth: u32::default(),
27114            library_info: ptr::null(),
27115            library_interface: ptr::null(),
27116            dynamic_state: ptr::null(),
27117            layout: PipelineLayout::default(),
27118            base_pipeline_handle: Pipeline::default(),
27119            base_pipeline_index: i32::default(),
27120        }
27121    }
27122}
27123
27124unsafe impl Send for RayTracingPipelineCreateInfoKHR {}
27125unsafe impl Sync for RayTracingPipelineCreateInfoKHR {}
27126
27127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html>
27128#[repr(C)]
27129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27130pub struct RayTracingPipelineCreateInfoNV {
27131    pub s_type: StructureType,
27132    pub next: *const c_void,
27133    pub flags: PipelineCreateFlags,
27134    pub stage_count: u32,
27135    pub stages: *const PipelineShaderStageCreateInfo,
27136    pub group_count: u32,
27137    pub groups: *const RayTracingShaderGroupCreateInfoNV,
27138    pub max_recursion_depth: u32,
27139    pub layout: PipelineLayout,
27140    pub base_pipeline_handle: Pipeline,
27141    pub base_pipeline_index: i32,
27142}
27143
27144impl Default for RayTracingPipelineCreateInfoNV {
27145    #[inline]
27146    fn default() -> Self {
27147        Self {
27148            s_type: StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV,
27149            next: ptr::null(),
27150            flags: PipelineCreateFlags::default(),
27151            stage_count: u32::default(),
27152            stages: ptr::null(),
27153            group_count: u32::default(),
27154            groups: ptr::null(),
27155            max_recursion_depth: u32::default(),
27156            layout: PipelineLayout::default(),
27157            base_pipeline_handle: Pipeline::default(),
27158            base_pipeline_index: i32::default(),
27159        }
27160    }
27161}
27162
27163unsafe impl Send for RayTracingPipelineCreateInfoNV {}
27164unsafe impl Sync for RayTracingPipelineCreateInfoNV {}
27165
27166/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html>
27167#[repr(C)]
27168#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27169pub struct RayTracingPipelineInterfaceCreateInfoKHR {
27170    pub s_type: StructureType,
27171    pub next: *const c_void,
27172    pub max_pipeline_ray_payload_size: u32,
27173    pub max_pipeline_ray_hit_attribute_size: u32,
27174}
27175
27176impl Default for RayTracingPipelineInterfaceCreateInfoKHR {
27177    #[inline]
27178    fn default() -> Self {
27179        Self {
27180            s_type: StructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
27181            next: ptr::null(),
27182            max_pipeline_ray_payload_size: u32::default(),
27183            max_pipeline_ray_hit_attribute_size: u32::default(),
27184        }
27185    }
27186}
27187
27188unsafe impl Send for RayTracingPipelineInterfaceCreateInfoKHR {}
27189unsafe impl Sync for RayTracingPipelineInterfaceCreateInfoKHR {}
27190
27191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html>
27192#[repr(C)]
27193#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27194pub struct RayTracingShaderGroupCreateInfoKHR {
27195    pub s_type: StructureType,
27196    pub next: *const c_void,
27197    pub type_: RayTracingShaderGroupTypeKHR,
27198    pub general_shader: u32,
27199    pub closest_hit_shader: u32,
27200    pub any_hit_shader: u32,
27201    pub intersection_shader: u32,
27202    pub shader_group_capture_replay_handle: *const c_void,
27203}
27204
27205impl Default for RayTracingShaderGroupCreateInfoKHR {
27206    #[inline]
27207    fn default() -> Self {
27208        Self {
27209            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
27210            next: ptr::null(),
27211            type_: RayTracingShaderGroupTypeKHR::default(),
27212            general_shader: u32::default(),
27213            closest_hit_shader: u32::default(),
27214            any_hit_shader: u32::default(),
27215            intersection_shader: u32::default(),
27216            shader_group_capture_replay_handle: ptr::null(),
27217        }
27218    }
27219}
27220
27221unsafe impl Send for RayTracingShaderGroupCreateInfoKHR {}
27222unsafe impl Sync for RayTracingShaderGroupCreateInfoKHR {}
27223
27224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html>
27225#[repr(C)]
27226#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27227pub struct RayTracingShaderGroupCreateInfoNV {
27228    pub s_type: StructureType,
27229    pub next: *const c_void,
27230    pub type_: RayTracingShaderGroupTypeKHR,
27231    pub general_shader: u32,
27232    pub closest_hit_shader: u32,
27233    pub any_hit_shader: u32,
27234    pub intersection_shader: u32,
27235}
27236
27237impl Default for RayTracingShaderGroupCreateInfoNV {
27238    #[inline]
27239    fn default() -> Self {
27240        Self {
27241            s_type: StructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
27242            next: ptr::null(),
27243            type_: RayTracingShaderGroupTypeKHR::default(),
27244            general_shader: u32::default(),
27245            closest_hit_shader: u32::default(),
27246            any_hit_shader: u32::default(),
27247            intersection_shader: u32::default(),
27248        }
27249    }
27250}
27251
27252unsafe impl Send for RayTracingShaderGroupCreateInfoNV {}
27253unsafe impl Sync for RayTracingShaderGroupCreateInfoNV {}
27254
27255/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRect2D.html>
27256#[repr(C)]
27257#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27258pub struct Rect2D {
27259    pub offset: Offset2D,
27260    pub extent: Extent2D,
27261}
27262
27263/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRectLayerKHR.html>
27264#[repr(C)]
27265#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27266pub struct RectLayerKHR {
27267    pub offset: Offset2D,
27268    pub extent: Extent2D,
27269    pub layer: u32,
27270}
27271
27272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html>
27273#[repr(C)]
27274#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27275pub struct RefreshCycleDurationGOOGLE {
27276    pub refresh_duration: u64,
27277}
27278
27279/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectKHR.html>
27280#[repr(C)]
27281#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27282pub struct RefreshObjectKHR {
27283    pub object_type: ObjectType,
27284    pub object_handle: u64,
27285    pub flags: RefreshObjectFlagsKHR,
27286}
27287
27288/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRefreshObjectListKHR.html>
27289#[repr(C)]
27290#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27291pub struct RefreshObjectListKHR {
27292    pub s_type: StructureType,
27293    pub next: *const c_void,
27294    pub object_count: u32,
27295    pub objects: *const RefreshObjectKHR,
27296}
27297
27298impl Default for RefreshObjectListKHR {
27299    #[inline]
27300    fn default() -> Self {
27301        Self {
27302            s_type: StructureType::REFRESH_OBJECT_LIST_KHR,
27303            next: ptr::null(),
27304            object_count: u32::default(),
27305            objects: ptr::null(),
27306        }
27307    }
27308}
27309
27310unsafe impl Send for RefreshObjectListKHR {}
27311unsafe impl Sync for RefreshObjectListKHR {}
27312
27313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html>
27314#[repr(C)]
27315#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27316pub struct ReleaseCapturedPipelineDataInfoKHR {
27317    pub s_type: StructureType,
27318    pub next: *mut c_void,
27319    pub pipeline: Pipeline,
27320}
27321
27322impl Default for ReleaseCapturedPipelineDataInfoKHR {
27323    #[inline]
27324    fn default() -> Self {
27325        Self {
27326            s_type: StructureType::RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR,
27327            next: ptr::null_mut(),
27328            pipeline: Pipeline::default(),
27329        }
27330    }
27331}
27332
27333unsafe impl Send for ReleaseCapturedPipelineDataInfoKHR {}
27334unsafe impl Sync for ReleaseCapturedPipelineDataInfoKHR {}
27335
27336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoKHR.html>
27337#[repr(C)]
27338#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27339pub struct ReleaseSwapchainImagesInfoKHR {
27340    pub s_type: StructureType,
27341    pub next: *const c_void,
27342    pub swapchain: SwapchainKHR,
27343    pub image_index_count: u32,
27344    pub image_indices: *const u32,
27345}
27346
27347impl Default for ReleaseSwapchainImagesInfoKHR {
27348    #[inline]
27349    fn default() -> Self {
27350        Self {
27351            s_type: StructureType::RELEASE_SWAPCHAIN_IMAGES_INFO_KHR,
27352            next: ptr::null(),
27353            swapchain: SwapchainKHR::default(),
27354            image_index_count: u32::default(),
27355            image_indices: ptr::null(),
27356        }
27357    }
27358}
27359
27360unsafe impl Send for ReleaseSwapchainImagesInfoKHR {}
27361unsafe impl Sync for ReleaseSwapchainImagesInfoKHR {}
27362
27363/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html>
27364#[repr(C)]
27365#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27366pub struct RenderPassAttachmentBeginInfo {
27367    pub s_type: StructureType,
27368    pub next: *const c_void,
27369    pub attachment_count: u32,
27370    pub attachments: *const ImageView,
27371}
27372
27373impl Default for RenderPassAttachmentBeginInfo {
27374    #[inline]
27375    fn default() -> Self {
27376        Self {
27377            s_type: StructureType::RENDER_PASS_ATTACHMENT_BEGIN_INFO,
27378            next: ptr::null(),
27379            attachment_count: u32::default(),
27380            attachments: ptr::null(),
27381        }
27382    }
27383}
27384
27385unsafe impl Send for RenderPassAttachmentBeginInfo {}
27386unsafe impl Sync for RenderPassAttachmentBeginInfo {}
27387
27388/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html>
27389#[repr(C)]
27390#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27391pub struct RenderPassBeginInfo {
27392    pub s_type: StructureType,
27393    pub next: *const c_void,
27394    pub render_pass: RenderPass,
27395    pub framebuffer: Framebuffer,
27396    pub render_area: Rect2D,
27397    pub clear_value_count: u32,
27398    pub clear_values: *const ClearValue,
27399}
27400
27401impl Default for RenderPassBeginInfo {
27402    #[inline]
27403    fn default() -> Self {
27404        Self {
27405            s_type: StructureType::RENDER_PASS_BEGIN_INFO,
27406            next: ptr::null(),
27407            render_pass: RenderPass::default(),
27408            framebuffer: Framebuffer::default(),
27409            render_area: Rect2D::default(),
27410            clear_value_count: u32::default(),
27411            clear_values: ptr::null(),
27412        }
27413    }
27414}
27415
27416unsafe impl Send for RenderPassBeginInfo {}
27417unsafe impl Sync for RenderPassBeginInfo {}
27418
27419/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html>
27420#[repr(C)]
27421#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27422pub struct RenderPassCreateInfo {
27423    pub s_type: StructureType,
27424    pub next: *const c_void,
27425    pub flags: RenderPassCreateFlags,
27426    pub attachment_count: u32,
27427    pub attachments: *const AttachmentDescription,
27428    pub subpass_count: u32,
27429    pub subpasses: *const SubpassDescription,
27430    pub dependency_count: u32,
27431    pub dependencies: *const SubpassDependency,
27432}
27433
27434impl Default for RenderPassCreateInfo {
27435    #[inline]
27436    fn default() -> Self {
27437        Self {
27438            s_type: StructureType::RENDER_PASS_CREATE_INFO,
27439            next: ptr::null(),
27440            flags: RenderPassCreateFlags::default(),
27441            attachment_count: u32::default(),
27442            attachments: ptr::null(),
27443            subpass_count: u32::default(),
27444            subpasses: ptr::null(),
27445            dependency_count: u32::default(),
27446            dependencies: ptr::null(),
27447        }
27448    }
27449}
27450
27451unsafe impl Send for RenderPassCreateInfo {}
27452unsafe impl Sync for RenderPassCreateInfo {}
27453
27454/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html>
27455#[repr(C)]
27456#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27457pub struct RenderPassCreateInfo2 {
27458    pub s_type: StructureType,
27459    pub next: *const c_void,
27460    pub flags: RenderPassCreateFlags,
27461    pub attachment_count: u32,
27462    pub attachments: *const AttachmentDescription2,
27463    pub subpass_count: u32,
27464    pub subpasses: *const SubpassDescription2,
27465    pub dependency_count: u32,
27466    pub dependencies: *const SubpassDependency2,
27467    pub correlated_view_mask_count: u32,
27468    pub correlated_view_masks: *const u32,
27469}
27470
27471impl Default for RenderPassCreateInfo2 {
27472    #[inline]
27473    fn default() -> Self {
27474        Self {
27475            s_type: StructureType::RENDER_PASS_CREATE_INFO_2,
27476            next: ptr::null(),
27477            flags: RenderPassCreateFlags::default(),
27478            attachment_count: u32::default(),
27479            attachments: ptr::null(),
27480            subpass_count: u32::default(),
27481            subpasses: ptr::null(),
27482            dependency_count: u32::default(),
27483            dependencies: ptr::null(),
27484            correlated_view_mask_count: u32::default(),
27485            correlated_view_masks: ptr::null(),
27486        }
27487    }
27488}
27489
27490unsafe impl Send for RenderPassCreateInfo2 {}
27491unsafe impl Sync for RenderPassCreateInfo2 {}
27492
27493/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html>
27494#[repr(C)]
27495#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27496pub struct RenderPassCreationControlEXT {
27497    pub s_type: StructureType,
27498    pub next: *const c_void,
27499    pub disallow_merging: Bool32,
27500}
27501
27502impl Default for RenderPassCreationControlEXT {
27503    #[inline]
27504    fn default() -> Self {
27505        Self {
27506            s_type: StructureType::RENDER_PASS_CREATION_CONTROL_EXT,
27507            next: ptr::null(),
27508            disallow_merging: Bool32::default(),
27509        }
27510    }
27511}
27512
27513unsafe impl Send for RenderPassCreationControlEXT {}
27514unsafe impl Sync for RenderPassCreationControlEXT {}
27515
27516/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html>
27517#[repr(C)]
27518#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27519pub struct RenderPassCreationFeedbackCreateInfoEXT {
27520    pub s_type: StructureType,
27521    pub next: *const c_void,
27522    pub render_pass_feedback: *mut RenderPassCreationFeedbackInfoEXT,
27523}
27524
27525impl Default for RenderPassCreationFeedbackCreateInfoEXT {
27526    #[inline]
27527    fn default() -> Self {
27528        Self {
27529            s_type: StructureType::RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT,
27530            next: ptr::null(),
27531            render_pass_feedback: ptr::null_mut(),
27532        }
27533    }
27534}
27535
27536unsafe impl Send for RenderPassCreationFeedbackCreateInfoEXT {}
27537unsafe impl Sync for RenderPassCreationFeedbackCreateInfoEXT {}
27538
27539/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html>
27540#[repr(C)]
27541#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27542pub struct RenderPassCreationFeedbackInfoEXT {
27543    pub post_merge_subpass_count: u32,
27544}
27545
27546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html>
27547#[repr(C)]
27548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27549pub struct RenderPassFragmentDensityMapCreateInfoEXT {
27550    pub s_type: StructureType,
27551    pub next: *const c_void,
27552    pub fragment_density_map_attachment: AttachmentReference,
27553}
27554
27555impl Default for RenderPassFragmentDensityMapCreateInfoEXT {
27556    #[inline]
27557    fn default() -> Self {
27558        Self {
27559            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
27560            next: ptr::null(),
27561            fragment_density_map_attachment: AttachmentReference::default(),
27562        }
27563    }
27564}
27565
27566unsafe impl Send for RenderPassFragmentDensityMapCreateInfoEXT {}
27567unsafe impl Sync for RenderPassFragmentDensityMapCreateInfoEXT {}
27568
27569/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapOffsetEndInfoEXT.html>
27570#[repr(C)]
27571#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27572pub struct RenderPassFragmentDensityMapOffsetEndInfoEXT {
27573    pub s_type: StructureType,
27574    pub next: *const c_void,
27575    pub fragment_density_offset_count: u32,
27576    pub fragment_density_offsets: *const Offset2D,
27577}
27578
27579impl Default for RenderPassFragmentDensityMapOffsetEndInfoEXT {
27580    #[inline]
27581    fn default() -> Self {
27582        Self {
27583            s_type: StructureType::RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,
27584            next: ptr::null(),
27585            fragment_density_offset_count: u32::default(),
27586            fragment_density_offsets: ptr::null(),
27587        }
27588    }
27589}
27590
27591unsafe impl Send for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
27592unsafe impl Sync for RenderPassFragmentDensityMapOffsetEndInfoEXT {}
27593
27594/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html>
27595#[repr(C)]
27596#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27597pub struct RenderPassInputAttachmentAspectCreateInfo {
27598    pub s_type: StructureType,
27599    pub next: *const c_void,
27600    pub aspect_reference_count: u32,
27601    pub aspect_references: *const InputAttachmentAspectReference,
27602}
27603
27604impl Default for RenderPassInputAttachmentAspectCreateInfo {
27605    #[inline]
27606    fn default() -> Self {
27607        Self {
27608            s_type: StructureType::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
27609            next: ptr::null(),
27610            aspect_reference_count: u32::default(),
27611            aspect_references: ptr::null(),
27612        }
27613    }
27614}
27615
27616unsafe impl Send for RenderPassInputAttachmentAspectCreateInfo {}
27617unsafe impl Sync for RenderPassInputAttachmentAspectCreateInfo {}
27618
27619/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html>
27620#[repr(C)]
27621#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27622pub struct RenderPassMultiviewCreateInfo {
27623    pub s_type: StructureType,
27624    pub next: *const c_void,
27625    pub subpass_count: u32,
27626    pub view_masks: *const u32,
27627    pub dependency_count: u32,
27628    pub view_offsets: *const i32,
27629    pub correlation_mask_count: u32,
27630    pub correlation_masks: *const u32,
27631}
27632
27633impl Default for RenderPassMultiviewCreateInfo {
27634    #[inline]
27635    fn default() -> Self {
27636        Self {
27637            s_type: StructureType::RENDER_PASS_MULTIVIEW_CREATE_INFO,
27638            next: ptr::null(),
27639            subpass_count: u32::default(),
27640            view_masks: ptr::null(),
27641            dependency_count: u32::default(),
27642            view_offsets: ptr::null(),
27643            correlation_mask_count: u32::default(),
27644            correlation_masks: ptr::null(),
27645        }
27646    }
27647}
27648
27649unsafe impl Send for RenderPassMultiviewCreateInfo {}
27650unsafe impl Sync for RenderPassMultiviewCreateInfo {}
27651
27652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassPerformanceCountersByRegionBeginInfoARM.html>
27653#[repr(C)]
27654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27655pub struct RenderPassPerformanceCountersByRegionBeginInfoARM {
27656    pub s_type: StructureType,
27657    pub next: *mut c_void,
27658    pub counter_address_count: u32,
27659    pub counter_addresses: *const DeviceAddress,
27660    pub serialize_regions: Bool32,
27661    pub counter_index_count: u32,
27662    pub counter_indices: *mut u32,
27663}
27664
27665impl Default for RenderPassPerformanceCountersByRegionBeginInfoARM {
27666    #[inline]
27667    fn default() -> Self {
27668        Self {
27669            s_type: StructureType::RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM,
27670            next: ptr::null_mut(),
27671            counter_address_count: u32::default(),
27672            counter_addresses: ptr::null(),
27673            serialize_regions: Bool32::default(),
27674            counter_index_count: u32::default(),
27675            counter_indices: ptr::null_mut(),
27676        }
27677    }
27678}
27679
27680unsafe impl Send for RenderPassPerformanceCountersByRegionBeginInfoARM {}
27681unsafe impl Sync for RenderPassPerformanceCountersByRegionBeginInfoARM {}
27682
27683/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html>
27684#[repr(C)]
27685#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27686pub struct RenderPassSampleLocationsBeginInfoEXT {
27687    pub s_type: StructureType,
27688    pub next: *const c_void,
27689    pub attachment_initial_sample_locations_count: u32,
27690    pub attachment_initial_sample_locations: *const AttachmentSampleLocationsEXT,
27691    pub post_subpass_sample_locations_count: u32,
27692    pub post_subpass_sample_locations: *const SubpassSampleLocationsEXT,
27693}
27694
27695impl Default for RenderPassSampleLocationsBeginInfoEXT {
27696    #[inline]
27697    fn default() -> Self {
27698        Self {
27699            s_type: StructureType::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
27700            next: ptr::null(),
27701            attachment_initial_sample_locations_count: u32::default(),
27702            attachment_initial_sample_locations: ptr::null(),
27703            post_subpass_sample_locations_count: u32::default(),
27704            post_subpass_sample_locations: ptr::null(),
27705        }
27706    }
27707}
27708
27709unsafe impl Send for RenderPassSampleLocationsBeginInfoEXT {}
27710unsafe impl Sync for RenderPassSampleLocationsBeginInfoEXT {}
27711
27712/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html>
27713#[repr(C)]
27714#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27715pub struct RenderPassStripeBeginInfoARM {
27716    pub s_type: StructureType,
27717    pub next: *const c_void,
27718    pub stripe_info_count: u32,
27719    pub stripe_infos: *const RenderPassStripeInfoARM,
27720}
27721
27722impl Default for RenderPassStripeBeginInfoARM {
27723    #[inline]
27724    fn default() -> Self {
27725        Self {
27726            s_type: StructureType::RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
27727            next: ptr::null(),
27728            stripe_info_count: u32::default(),
27729            stripe_infos: ptr::null(),
27730        }
27731    }
27732}
27733
27734unsafe impl Send for RenderPassStripeBeginInfoARM {}
27735unsafe impl Sync for RenderPassStripeBeginInfoARM {}
27736
27737/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html>
27738#[repr(C)]
27739#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27740pub struct RenderPassStripeInfoARM {
27741    pub s_type: StructureType,
27742    pub next: *const c_void,
27743    pub stripe_area: Rect2D,
27744}
27745
27746impl Default for RenderPassStripeInfoARM {
27747    #[inline]
27748    fn default() -> Self {
27749        Self {
27750            s_type: StructureType::RENDER_PASS_STRIPE_INFO_ARM,
27751            next: ptr::null(),
27752            stripe_area: Rect2D::default(),
27753        }
27754    }
27755}
27756
27757unsafe impl Send for RenderPassStripeInfoARM {}
27758unsafe impl Sync for RenderPassStripeInfoARM {}
27759
27760/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html>
27761#[repr(C)]
27762#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27763pub struct RenderPassStripeSubmitInfoARM {
27764    pub s_type: StructureType,
27765    pub next: *const c_void,
27766    pub stripe_semaphore_info_count: u32,
27767    pub stripe_semaphore_infos: *const SemaphoreSubmitInfo,
27768}
27769
27770impl Default for RenderPassStripeSubmitInfoARM {
27771    #[inline]
27772    fn default() -> Self {
27773        Self {
27774            s_type: StructureType::RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
27775            next: ptr::null(),
27776            stripe_semaphore_info_count: u32::default(),
27777            stripe_semaphore_infos: ptr::null(),
27778        }
27779    }
27780}
27781
27782unsafe impl Send for RenderPassStripeSubmitInfoARM {}
27783unsafe impl Sync for RenderPassStripeSubmitInfoARM {}
27784
27785/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html>
27786#[repr(C)]
27787#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27788pub struct RenderPassSubpassFeedbackCreateInfoEXT {
27789    pub s_type: StructureType,
27790    pub next: *const c_void,
27791    pub subpass_feedback: *mut RenderPassSubpassFeedbackInfoEXT,
27792}
27793
27794impl Default for RenderPassSubpassFeedbackCreateInfoEXT {
27795    #[inline]
27796    fn default() -> Self {
27797        Self {
27798            s_type: StructureType::RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT,
27799            next: ptr::null(),
27800            subpass_feedback: ptr::null_mut(),
27801        }
27802    }
27803}
27804
27805unsafe impl Send for RenderPassSubpassFeedbackCreateInfoEXT {}
27806unsafe impl Sync for RenderPassSubpassFeedbackCreateInfoEXT {}
27807
27808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html>
27809#[repr(C)]
27810#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
27811pub struct RenderPassSubpassFeedbackInfoEXT {
27812    pub subpass_merge_status: SubpassMergeStatusEXT,
27813    pub description: StringArray<MAX_DESCRIPTION_SIZE>,
27814    pub post_merge_index: u32,
27815}
27816
27817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTileShadingCreateInfoQCOM.html>
27818#[repr(C)]
27819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27820pub struct RenderPassTileShadingCreateInfoQCOM {
27821    pub s_type: StructureType,
27822    pub next: *const c_void,
27823    pub flags: TileShadingRenderPassFlagsQCOM,
27824    pub tile_apron_size: Extent2D,
27825}
27826
27827impl Default for RenderPassTileShadingCreateInfoQCOM {
27828    #[inline]
27829    fn default() -> Self {
27830        Self {
27831            s_type: StructureType::RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM,
27832            next: ptr::null(),
27833            flags: TileShadingRenderPassFlagsQCOM::default(),
27834            tile_apron_size: Extent2D::default(),
27835        }
27836    }
27837}
27838
27839unsafe impl Send for RenderPassTileShadingCreateInfoQCOM {}
27840unsafe impl Sync for RenderPassTileShadingCreateInfoQCOM {}
27841
27842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html>
27843#[repr(C)]
27844#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27845pub struct RenderPassTransformBeginInfoQCOM {
27846    pub s_type: StructureType,
27847    pub next: *const c_void,
27848    pub transform: SurfaceTransformFlagsKHR,
27849}
27850
27851impl Default for RenderPassTransformBeginInfoQCOM {
27852    #[inline]
27853    fn default() -> Self {
27854        Self {
27855            s_type: StructureType::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
27856            next: ptr::null(),
27857            transform: SurfaceTransformFlagsKHR::default(),
27858        }
27859    }
27860}
27861
27862unsafe impl Send for RenderPassTransformBeginInfoQCOM {}
27863unsafe impl Sync for RenderPassTransformBeginInfoQCOM {}
27864
27865/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html>
27866#[repr(C)]
27867#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27868pub struct RenderingAreaInfo {
27869    pub s_type: StructureType,
27870    pub next: *const c_void,
27871    pub view_mask: u32,
27872    pub color_attachment_count: u32,
27873    pub color_attachment_formats: *const Format,
27874    pub depth_attachment_format: Format,
27875    pub stencil_attachment_format: Format,
27876}
27877
27878impl Default for RenderingAreaInfo {
27879    #[inline]
27880    fn default() -> Self {
27881        Self {
27882            s_type: StructureType::RENDERING_AREA_INFO,
27883            next: ptr::null(),
27884            view_mask: u32::default(),
27885            color_attachment_count: u32::default(),
27886            color_attachment_formats: ptr::null(),
27887            depth_attachment_format: Format::default(),
27888            stencil_attachment_format: Format::default(),
27889        }
27890    }
27891}
27892
27893unsafe impl Send for RenderingAreaInfo {}
27894unsafe impl Sync for RenderingAreaInfo {}
27895
27896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagsInfoKHR.html>
27897#[repr(C)]
27898#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27899pub struct RenderingAttachmentFlagsInfoKHR {
27900    pub s_type: StructureType,
27901    pub next: *const c_void,
27902    pub flags: RenderingAttachmentFlagsKHR,
27903}
27904
27905impl Default for RenderingAttachmentFlagsInfoKHR {
27906    #[inline]
27907    fn default() -> Self {
27908        Self {
27909            s_type: StructureType::RENDERING_ATTACHMENT_FLAGS_INFO_KHR,
27910            next: ptr::null(),
27911            flags: RenderingAttachmentFlagsKHR::default(),
27912        }
27913    }
27914}
27915
27916unsafe impl Send for RenderingAttachmentFlagsInfoKHR {}
27917unsafe impl Sync for RenderingAttachmentFlagsInfoKHR {}
27918
27919/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html>
27920#[repr(C)]
27921#[derive(Copy, Clone, Debug)]
27922pub struct RenderingAttachmentInfo {
27923    pub s_type: StructureType,
27924    pub next: *const c_void,
27925    pub image_view: ImageView,
27926    pub image_layout: ImageLayout,
27927    pub resolve_mode: ResolveModeFlags,
27928    pub resolve_image_view: ImageView,
27929    pub resolve_image_layout: ImageLayout,
27930    pub load_op: AttachmentLoadOp,
27931    pub store_op: AttachmentStoreOp,
27932    pub clear_value: ClearValue,
27933}
27934
27935impl Default for RenderingAttachmentInfo {
27936    #[inline]
27937    fn default() -> Self {
27938        Self {
27939            s_type: StructureType::RENDERING_ATTACHMENT_INFO,
27940            next: ptr::null(),
27941            image_view: ImageView::default(),
27942            image_layout: ImageLayout::default(),
27943            resolve_mode: ResolveModeFlags::default(),
27944            resolve_image_view: ImageView::default(),
27945            resolve_image_layout: ImageLayout::default(),
27946            load_op: AttachmentLoadOp::default(),
27947            store_op: AttachmentStoreOp::default(),
27948            clear_value: ClearValue::default(),
27949        }
27950    }
27951}
27952
27953unsafe impl Send for RenderingAttachmentInfo {}
27954unsafe impl Sync for RenderingAttachmentInfo {}
27955
27956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html>
27957#[repr(C)]
27958#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27959pub struct RenderingAttachmentLocationInfo {
27960    pub s_type: StructureType,
27961    pub next: *const c_void,
27962    pub color_attachment_count: u32,
27963    pub color_attachment_locations: *const u32,
27964}
27965
27966impl Default for RenderingAttachmentLocationInfo {
27967    #[inline]
27968    fn default() -> Self {
27969        Self {
27970            s_type: StructureType::RENDERING_ATTACHMENT_LOCATION_INFO,
27971            next: ptr::null(),
27972            color_attachment_count: u32::default(),
27973            color_attachment_locations: ptr::null(),
27974        }
27975    }
27976}
27977
27978unsafe impl Send for RenderingAttachmentLocationInfo {}
27979unsafe impl Sync for RenderingAttachmentLocationInfo {}
27980
27981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoKHR.html>
27982#[repr(C)]
27983#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
27984pub struct RenderingEndInfoKHR {
27985    pub s_type: StructureType,
27986    pub next: *const c_void,
27987}
27988
27989impl Default for RenderingEndInfoKHR {
27990    #[inline]
27991    fn default() -> Self {
27992        Self {
27993            s_type: StructureType::RENDERING_END_INFO_KHR,
27994            next: ptr::null(),
27995        }
27996    }
27997}
27998
27999unsafe impl Send for RenderingEndInfoKHR {}
28000unsafe impl Sync for RenderingEndInfoKHR {}
28001
28002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html>
28003#[repr(C)]
28004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28005pub struct RenderingFragmentDensityMapAttachmentInfoEXT {
28006    pub s_type: StructureType,
28007    pub next: *const c_void,
28008    pub image_view: ImageView,
28009    pub image_layout: ImageLayout,
28010}
28011
28012impl Default for RenderingFragmentDensityMapAttachmentInfoEXT {
28013    #[inline]
28014    fn default() -> Self {
28015        Self {
28016            s_type: StructureType::RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
28017            next: ptr::null(),
28018            image_view: ImageView::default(),
28019            image_layout: ImageLayout::default(),
28020        }
28021    }
28022}
28023
28024unsafe impl Send for RenderingFragmentDensityMapAttachmentInfoEXT {}
28025unsafe impl Sync for RenderingFragmentDensityMapAttachmentInfoEXT {}
28026
28027/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html>
28028#[repr(C)]
28029#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28030pub struct RenderingFragmentShadingRateAttachmentInfoKHR {
28031    pub s_type: StructureType,
28032    pub next: *const c_void,
28033    pub image_view: ImageView,
28034    pub image_layout: ImageLayout,
28035    pub shading_rate_attachment_texel_size: Extent2D,
28036}
28037
28038impl Default for RenderingFragmentShadingRateAttachmentInfoKHR {
28039    #[inline]
28040    fn default() -> Self {
28041        Self {
28042            s_type: StructureType::RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
28043            next: ptr::null(),
28044            image_view: ImageView::default(),
28045            image_layout: ImageLayout::default(),
28046            shading_rate_attachment_texel_size: Extent2D::default(),
28047        }
28048    }
28049}
28050
28051unsafe impl Send for RenderingFragmentShadingRateAttachmentInfoKHR {}
28052unsafe impl Sync for RenderingFragmentShadingRateAttachmentInfoKHR {}
28053
28054/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfo.html>
28055#[repr(C)]
28056#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28057pub struct RenderingInfo {
28058    pub s_type: StructureType,
28059    pub next: *const c_void,
28060    pub flags: RenderingFlags,
28061    pub render_area: Rect2D,
28062    pub layer_count: u32,
28063    pub view_mask: u32,
28064    pub color_attachment_count: u32,
28065    pub color_attachments: *const RenderingAttachmentInfo,
28066    pub depth_attachment: *const RenderingAttachmentInfo,
28067    pub stencil_attachment: *const RenderingAttachmentInfo,
28068}
28069
28070impl Default for RenderingInfo {
28071    #[inline]
28072    fn default() -> Self {
28073        Self {
28074            s_type: StructureType::RENDERING_INFO,
28075            next: ptr::null(),
28076            flags: RenderingFlags::default(),
28077            render_area: Rect2D::default(),
28078            layer_count: u32::default(),
28079            view_mask: u32::default(),
28080            color_attachment_count: u32::default(),
28081            color_attachments: ptr::null(),
28082            depth_attachment: ptr::null(),
28083            stencil_attachment: ptr::null(),
28084        }
28085    }
28086}
28087
28088unsafe impl Send for RenderingInfo {}
28089unsafe impl Sync for RenderingInfo {}
28090
28091/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html>
28092#[repr(C)]
28093#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28094pub struct RenderingInputAttachmentIndexInfo {
28095    pub s_type: StructureType,
28096    pub next: *const c_void,
28097    pub color_attachment_count: u32,
28098    pub color_attachment_input_indices: *const u32,
28099    pub depth_input_attachment_index: *const u32,
28100    pub stencil_input_attachment_index: *const u32,
28101}
28102
28103impl Default for RenderingInputAttachmentIndexInfo {
28104    #[inline]
28105    fn default() -> Self {
28106        Self {
28107            s_type: StructureType::RENDERING_INPUT_ATTACHMENT_INDEX_INFO,
28108            next: ptr::null(),
28109            color_attachment_count: u32::default(),
28110            color_attachment_input_indices: ptr::null(),
28111            depth_input_attachment_index: ptr::null(),
28112            stencil_input_attachment_index: ptr::null(),
28113        }
28114    }
28115}
28116
28117unsafe impl Send for RenderingInputAttachmentIndexInfo {}
28118unsafe impl Sync for RenderingInputAttachmentIndexInfo {}
28119
28120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2.html>
28121#[repr(C)]
28122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28123pub struct ResolveImageInfo2 {
28124    pub s_type: StructureType,
28125    pub next: *const c_void,
28126    pub src_image: Image,
28127    pub src_image_layout: ImageLayout,
28128    pub dst_image: Image,
28129    pub dst_image_layout: ImageLayout,
28130    pub region_count: u32,
28131    pub regions: *const ImageResolve2,
28132}
28133
28134impl Default for ResolveImageInfo2 {
28135    #[inline]
28136    fn default() -> Self {
28137        Self {
28138            s_type: StructureType::RESOLVE_IMAGE_INFO_2,
28139            next: ptr::null(),
28140            src_image: Image::default(),
28141            src_image_layout: ImageLayout::default(),
28142            dst_image: Image::default(),
28143            dst_image_layout: ImageLayout::default(),
28144            region_count: u32::default(),
28145            regions: ptr::null(),
28146        }
28147    }
28148}
28149
28150unsafe impl Send for ResolveImageInfo2 {}
28151unsafe impl Sync for ResolveImageInfo2 {}
28152
28153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageModeInfoKHR.html>
28154#[repr(C)]
28155#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28156pub struct ResolveImageModeInfoKHR {
28157    pub s_type: StructureType,
28158    pub next: *const c_void,
28159    pub flags: ResolveImageFlagsKHR,
28160    pub resolve_mode: ResolveModeFlags,
28161    pub stencil_resolve_mode: ResolveModeFlags,
28162}
28163
28164impl Default for ResolveImageModeInfoKHR {
28165    #[inline]
28166    fn default() -> Self {
28167        Self {
28168            s_type: StructureType::RESOLVE_IMAGE_MODE_INFO_KHR,
28169            next: ptr::null(),
28170            flags: ResolveImageFlagsKHR::default(),
28171            resolve_mode: ResolveModeFlags::default(),
28172            stencil_resolve_mode: ResolveModeFlags::default(),
28173        }
28174    }
28175}
28176
28177unsafe impl Send for ResolveImageModeInfoKHR {}
28178unsafe impl Sync for ResolveImageModeInfoKHR {}
28179
28180/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResourceDescriptorInfoEXT.html>
28181#[repr(C)]
28182#[derive(Copy, Clone, Debug)]
28183pub struct ResourceDescriptorInfoEXT {
28184    pub s_type: StructureType,
28185    pub next: *const c_void,
28186    pub type_: DescriptorType,
28187    pub data: ResourceDescriptorDataEXT,
28188}
28189
28190impl Default for ResourceDescriptorInfoEXT {
28191    #[inline]
28192    fn default() -> Self {
28193        Self {
28194            s_type: StructureType::RESOURCE_DESCRIPTOR_INFO_EXT,
28195            next: ptr::null(),
28196            type_: DescriptorType::default(),
28197            data: ResourceDescriptorDataEXT::default(),
28198        }
28199    }
28200}
28201
28202unsafe impl Send for ResourceDescriptorInfoEXT {}
28203unsafe impl Sync for ResourceDescriptorInfoEXT {}
28204
28205/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSRTDataNV.html>
28206#[repr(C)]
28207#[derive(Copy, Clone, Default, Debug, PartialEq)]
28208pub struct SRTDataNV {
28209    pub sx: f32,
28210    pub a: f32,
28211    pub b: f32,
28212    pub pvx: f32,
28213    pub sy: f32,
28214    pub c: f32,
28215    pub pvy: f32,
28216    pub sz: f32,
28217    pub pvz: f32,
28218    pub qx: f32,
28219    pub qy: f32,
28220    pub qz: f32,
28221    pub qw: f32,
28222    pub tx: f32,
28223    pub ty: f32,
28224    pub tz: f32,
28225}
28226
28227/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationEXT.html>
28228#[repr(C)]
28229#[derive(Copy, Clone, Default, Debug, PartialEq)]
28230pub struct SampleLocationEXT {
28231    pub x: f32,
28232    pub y: f32,
28233}
28234
28235/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html>
28236#[repr(C)]
28237#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28238pub struct SampleLocationsInfoEXT {
28239    pub s_type: StructureType,
28240    pub next: *const c_void,
28241    pub sample_locations_per_pixel: SampleCountFlags,
28242    pub sample_location_grid_size: Extent2D,
28243    pub sample_locations_count: u32,
28244    pub sample_locations: *const SampleLocationEXT,
28245}
28246
28247impl Default for SampleLocationsInfoEXT {
28248    #[inline]
28249    fn default() -> Self {
28250        Self {
28251            s_type: StructureType::SAMPLE_LOCATIONS_INFO_EXT,
28252            next: ptr::null(),
28253            sample_locations_per_pixel: SampleCountFlags::default(),
28254            sample_location_grid_size: Extent2D::default(),
28255            sample_locations_count: u32::default(),
28256            sample_locations: ptr::null(),
28257        }
28258    }
28259}
28260
28261unsafe impl Send for SampleLocationsInfoEXT {}
28262unsafe impl Sync for SampleLocationsInfoEXT {}
28263
28264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html>
28265#[repr(C)]
28266#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28267pub struct SamplerBlockMatchWindowCreateInfoQCOM {
28268    pub s_type: StructureType,
28269    pub next: *const c_void,
28270    pub window_extent: Extent2D,
28271    pub window_compare_mode: BlockMatchWindowCompareModeQCOM,
28272}
28273
28274impl Default for SamplerBlockMatchWindowCreateInfoQCOM {
28275    #[inline]
28276    fn default() -> Self {
28277        Self {
28278            s_type: StructureType::SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM,
28279            next: ptr::null(),
28280            window_extent: Extent2D::default(),
28281            window_compare_mode: BlockMatchWindowCompareModeQCOM::default(),
28282        }
28283    }
28284}
28285
28286unsafe impl Send for SamplerBlockMatchWindowCreateInfoQCOM {}
28287unsafe impl Sync for SamplerBlockMatchWindowCreateInfoQCOM {}
28288
28289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html>
28290#[repr(C)]
28291#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28292pub struct SamplerBorderColorComponentMappingCreateInfoEXT {
28293    pub s_type: StructureType,
28294    pub next: *const c_void,
28295    pub components: ComponentMapping,
28296    pub srgb: Bool32,
28297}
28298
28299impl Default for SamplerBorderColorComponentMappingCreateInfoEXT {
28300    #[inline]
28301    fn default() -> Self {
28302        Self {
28303            s_type: StructureType::SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
28304            next: ptr::null(),
28305            components: ComponentMapping::default(),
28306            srgb: Bool32::default(),
28307        }
28308    }
28309}
28310
28311unsafe impl Send for SamplerBorderColorComponentMappingCreateInfoEXT {}
28312unsafe impl Sync for SamplerBorderColorComponentMappingCreateInfoEXT {}
28313
28314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html>
28315#[repr(C)]
28316#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28317pub struct SamplerCaptureDescriptorDataInfoEXT {
28318    pub s_type: StructureType,
28319    pub next: *const c_void,
28320    pub sampler: Sampler,
28321}
28322
28323impl Default for SamplerCaptureDescriptorDataInfoEXT {
28324    #[inline]
28325    fn default() -> Self {
28326        Self {
28327            s_type: StructureType::SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT,
28328            next: ptr::null(),
28329            sampler: Sampler::default(),
28330        }
28331    }
28332}
28333
28334unsafe impl Send for SamplerCaptureDescriptorDataInfoEXT {}
28335unsafe impl Sync for SamplerCaptureDescriptorDataInfoEXT {}
28336
28337/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html>
28338#[repr(C)]
28339#[derive(Copy, Clone, Debug, PartialEq)]
28340pub struct SamplerCreateInfo {
28341    pub s_type: StructureType,
28342    pub next: *const c_void,
28343    pub flags: SamplerCreateFlags,
28344    pub mag_filter: Filter,
28345    pub min_filter: Filter,
28346    pub mipmap_mode: SamplerMipmapMode,
28347    pub address_mode_u: SamplerAddressMode,
28348    pub address_mode_v: SamplerAddressMode,
28349    pub address_mode_w: SamplerAddressMode,
28350    pub mip_lod_bias: f32,
28351    pub anisotropy_enable: Bool32,
28352    pub max_anisotropy: f32,
28353    pub compare_enable: Bool32,
28354    pub compare_op: CompareOp,
28355    pub min_lod: f32,
28356    pub max_lod: f32,
28357    pub border_color: BorderColor,
28358    pub unnormalized_coordinates: Bool32,
28359}
28360
28361impl Default for SamplerCreateInfo {
28362    #[inline]
28363    fn default() -> Self {
28364        Self {
28365            s_type: StructureType::SAMPLER_CREATE_INFO,
28366            next: ptr::null(),
28367            flags: SamplerCreateFlags::default(),
28368            mag_filter: Filter::default(),
28369            min_filter: Filter::default(),
28370            mipmap_mode: SamplerMipmapMode::default(),
28371            address_mode_u: SamplerAddressMode::default(),
28372            address_mode_v: SamplerAddressMode::default(),
28373            address_mode_w: SamplerAddressMode::default(),
28374            mip_lod_bias: f32::default(),
28375            anisotropy_enable: Bool32::default(),
28376            max_anisotropy: f32::default(),
28377            compare_enable: Bool32::default(),
28378            compare_op: CompareOp::default(),
28379            min_lod: f32::default(),
28380            max_lod: f32::default(),
28381            border_color: BorderColor::default(),
28382            unnormalized_coordinates: Bool32::default(),
28383        }
28384    }
28385}
28386
28387unsafe impl Send for SamplerCreateInfo {}
28388unsafe impl Sync for SamplerCreateInfo {}
28389
28390/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html>
28391#[repr(C)]
28392#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28393pub struct SamplerCubicWeightsCreateInfoQCOM {
28394    pub s_type: StructureType,
28395    pub next: *const c_void,
28396    pub cubic_weights: CubicFilterWeightsQCOM,
28397}
28398
28399impl Default for SamplerCubicWeightsCreateInfoQCOM {
28400    #[inline]
28401    fn default() -> Self {
28402        Self {
28403            s_type: StructureType::SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM,
28404            next: ptr::null(),
28405            cubic_weights: CubicFilterWeightsQCOM::default(),
28406        }
28407    }
28408}
28409
28410unsafe impl Send for SamplerCubicWeightsCreateInfoQCOM {}
28411unsafe impl Sync for SamplerCubicWeightsCreateInfoQCOM {}
28412
28413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html>
28414#[repr(C)]
28415#[derive(Copy, Clone, Debug)]
28416pub struct SamplerCustomBorderColorCreateInfoEXT {
28417    pub s_type: StructureType,
28418    pub next: *const c_void,
28419    pub custom_border_color: ClearColorValue,
28420    pub format: Format,
28421}
28422
28423impl Default for SamplerCustomBorderColorCreateInfoEXT {
28424    #[inline]
28425    fn default() -> Self {
28426        Self {
28427            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT,
28428            next: ptr::null(),
28429            custom_border_color: ClearColorValue::default(),
28430            format: Format::default(),
28431        }
28432    }
28433}
28434
28435unsafe impl Send for SamplerCustomBorderColorCreateInfoEXT {}
28436unsafe impl Sync for SamplerCustomBorderColorCreateInfoEXT {}
28437
28438/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorIndexCreateInfoEXT.html>
28439#[repr(C)]
28440#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28441pub struct SamplerCustomBorderColorIndexCreateInfoEXT {
28442    pub s_type: StructureType,
28443    pub next: *const c_void,
28444    pub index: u32,
28445}
28446
28447impl Default for SamplerCustomBorderColorIndexCreateInfoEXT {
28448    #[inline]
28449    fn default() -> Self {
28450        Self {
28451            s_type: StructureType::SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT,
28452            next: ptr::null(),
28453            index: u32::default(),
28454        }
28455    }
28456}
28457
28458unsafe impl Send for SamplerCustomBorderColorIndexCreateInfoEXT {}
28459unsafe impl Sync for SamplerCustomBorderColorIndexCreateInfoEXT {}
28460
28461/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html>
28462#[repr(C)]
28463#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28464pub struct SamplerReductionModeCreateInfo {
28465    pub s_type: StructureType,
28466    pub next: *const c_void,
28467    pub reduction_mode: SamplerReductionMode,
28468}
28469
28470impl Default for SamplerReductionModeCreateInfo {
28471    #[inline]
28472    fn default() -> Self {
28473        Self {
28474            s_type: StructureType::SAMPLER_REDUCTION_MODE_CREATE_INFO,
28475            next: ptr::null(),
28476            reduction_mode: SamplerReductionMode::default(),
28477        }
28478    }
28479}
28480
28481unsafe impl Send for SamplerReductionModeCreateInfo {}
28482unsafe impl Sync for SamplerReductionModeCreateInfo {}
28483
28484/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html>
28485#[repr(C)]
28486#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28487pub struct SamplerYcbcrConversionCreateInfo {
28488    pub s_type: StructureType,
28489    pub next: *const c_void,
28490    pub format: Format,
28491    pub ycbcr_model: SamplerYcbcrModelConversion,
28492    pub ycbcr_range: SamplerYcbcrRange,
28493    pub components: ComponentMapping,
28494    pub x_chroma_offset: ChromaLocation,
28495    pub y_chroma_offset: ChromaLocation,
28496    pub chroma_filter: Filter,
28497    pub force_explicit_reconstruction: Bool32,
28498}
28499
28500impl Default for SamplerYcbcrConversionCreateInfo {
28501    #[inline]
28502    fn default() -> Self {
28503        Self {
28504            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
28505            next: ptr::null(),
28506            format: Format::default(),
28507            ycbcr_model: SamplerYcbcrModelConversion::default(),
28508            ycbcr_range: SamplerYcbcrRange::default(),
28509            components: ComponentMapping::default(),
28510            x_chroma_offset: ChromaLocation::default(),
28511            y_chroma_offset: ChromaLocation::default(),
28512            chroma_filter: Filter::default(),
28513            force_explicit_reconstruction: Bool32::default(),
28514        }
28515    }
28516}
28517
28518unsafe impl Send for SamplerYcbcrConversionCreateInfo {}
28519unsafe impl Sync for SamplerYcbcrConversionCreateInfo {}
28520
28521/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html>
28522#[repr(C)]
28523#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28524pub struct SamplerYcbcrConversionImageFormatProperties {
28525    pub s_type: StructureType,
28526    pub next: *mut c_void,
28527    pub combined_image_sampler_descriptor_count: u32,
28528}
28529
28530impl Default for SamplerYcbcrConversionImageFormatProperties {
28531    #[inline]
28532    fn default() -> Self {
28533        Self {
28534            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
28535            next: ptr::null_mut(),
28536            combined_image_sampler_descriptor_count: u32::default(),
28537        }
28538    }
28539}
28540
28541unsafe impl Send for SamplerYcbcrConversionImageFormatProperties {}
28542unsafe impl Sync for SamplerYcbcrConversionImageFormatProperties {}
28543
28544/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html>
28545#[repr(C)]
28546#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28547pub struct SamplerYcbcrConversionInfo {
28548    pub s_type: StructureType,
28549    pub next: *const c_void,
28550    pub conversion: SamplerYcbcrConversion,
28551}
28552
28553impl Default for SamplerYcbcrConversionInfo {
28554    #[inline]
28555    fn default() -> Self {
28556        Self {
28557            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_INFO,
28558            next: ptr::null(),
28559            conversion: SamplerYcbcrConversion::default(),
28560        }
28561    }
28562}
28563
28564unsafe impl Send for SamplerYcbcrConversionInfo {}
28565unsafe impl Sync for SamplerYcbcrConversionInfo {}
28566
28567/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html>
28568#[repr(C)]
28569#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28570pub struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
28571    pub s_type: StructureType,
28572    pub next: *mut c_void,
28573    pub enable_y_degamma: Bool32,
28574    pub enable_cb_cr_degamma: Bool32,
28575}
28576
28577impl Default for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
28578    #[inline]
28579    fn default() -> Self {
28580        Self {
28581            s_type: StructureType::SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM,
28582            next: ptr::null_mut(),
28583            enable_y_degamma: Bool32::default(),
28584            enable_cb_cr_degamma: Bool32::default(),
28585        }
28586    }
28587}
28588
28589unsafe impl Send for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
28590unsafe impl Sync for SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {}
28591
28592/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSciSyncAttributesInfoNV.html>
28593#[repr(C)]
28594#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28595pub struct SciSyncAttributesInfoNV {
28596    pub s_type: StructureType,
28597    pub next: *const c_void,
28598    pub client_type: SciSyncClientTypeNV,
28599    pub primitive_type: SciSyncPrimitiveTypeNV,
28600}
28601
28602impl Default for SciSyncAttributesInfoNV {
28603    #[inline]
28604    fn default() -> Self {
28605        Self {
28606            s_type: StructureType::SCI_SYNC_ATTRIBUTES_INFO_NV,
28607            next: ptr::null(),
28608            client_type: SciSyncClientTypeNV::default(),
28609            primitive_type: SciSyncPrimitiveTypeNV::default(),
28610        }
28611    }
28612}
28613
28614unsafe impl Send for SciSyncAttributesInfoNV {}
28615unsafe impl Sync for SciSyncAttributesInfoNV {}
28616
28617/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html>
28618#[repr(C)]
28619#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28620pub struct ScreenBufferFormatPropertiesQNX {
28621    pub s_type: StructureType,
28622    pub next: *mut c_void,
28623    pub format: Format,
28624    pub external_format: u64,
28625    pub screen_usage: u64,
28626    pub format_features: FormatFeatureFlags,
28627    pub sampler_ycbcr_conversion_components: ComponentMapping,
28628    pub suggested_ycbcr_model: SamplerYcbcrModelConversion,
28629    pub suggested_ycbcr_range: SamplerYcbcrRange,
28630    pub suggested_x_chroma_offset: ChromaLocation,
28631    pub suggested_y_chroma_offset: ChromaLocation,
28632}
28633
28634impl Default for ScreenBufferFormatPropertiesQNX {
28635    #[inline]
28636    fn default() -> Self {
28637        Self {
28638            s_type: StructureType::SCREEN_BUFFER_FORMAT_PROPERTIES_QNX,
28639            next: ptr::null_mut(),
28640            format: Format::default(),
28641            external_format: u64::default(),
28642            screen_usage: u64::default(),
28643            format_features: FormatFeatureFlags::default(),
28644            sampler_ycbcr_conversion_components: ComponentMapping::default(),
28645            suggested_ycbcr_model: SamplerYcbcrModelConversion::default(),
28646            suggested_ycbcr_range: SamplerYcbcrRange::default(),
28647            suggested_x_chroma_offset: ChromaLocation::default(),
28648            suggested_y_chroma_offset: ChromaLocation::default(),
28649        }
28650    }
28651}
28652
28653unsafe impl Send for ScreenBufferFormatPropertiesQNX {}
28654unsafe impl Sync for ScreenBufferFormatPropertiesQNX {}
28655
28656/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html>
28657#[repr(C)]
28658#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28659pub struct ScreenBufferPropertiesQNX {
28660    pub s_type: StructureType,
28661    pub next: *mut c_void,
28662    pub allocation_size: DeviceSize,
28663    pub memory_type_bits: u32,
28664}
28665
28666impl Default for ScreenBufferPropertiesQNX {
28667    #[inline]
28668    fn default() -> Self {
28669        Self {
28670            s_type: StructureType::SCREEN_BUFFER_PROPERTIES_QNX,
28671            next: ptr::null_mut(),
28672            allocation_size: DeviceSize::default(),
28673            memory_type_bits: u32::default(),
28674        }
28675    }
28676}
28677
28678unsafe impl Send for ScreenBufferPropertiesQNX {}
28679unsafe impl Sync for ScreenBufferPropertiesQNX {}
28680
28681/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html>
28682#[repr(C)]
28683#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28684pub struct ScreenSurfaceCreateInfoQNX {
28685    pub s_type: StructureType,
28686    pub next: *const c_void,
28687    pub flags: ScreenSurfaceCreateFlagsQNX,
28688    pub context: *mut _screen_context,
28689    pub window: *mut _screen_window,
28690}
28691
28692impl Default for ScreenSurfaceCreateInfoQNX {
28693    #[inline]
28694    fn default() -> Self {
28695        Self {
28696            s_type: StructureType::SCREEN_SURFACE_CREATE_INFO_QNX,
28697            next: ptr::null(),
28698            flags: ScreenSurfaceCreateFlagsQNX::default(),
28699            context: ptr::null_mut(),
28700            window: ptr::null_mut(),
28701        }
28702    }
28703}
28704
28705unsafe impl Send for ScreenSurfaceCreateInfoQNX {}
28706unsafe impl Sync for ScreenSurfaceCreateInfoQNX {}
28707
28708/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html>
28709#[repr(C)]
28710#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28711pub struct SemaphoreCreateInfo {
28712    pub s_type: StructureType,
28713    pub next: *const c_void,
28714    pub flags: SemaphoreCreateFlags,
28715}
28716
28717impl Default for SemaphoreCreateInfo {
28718    #[inline]
28719    fn default() -> Self {
28720        Self {
28721            s_type: StructureType::SEMAPHORE_CREATE_INFO,
28722            next: ptr::null(),
28723            flags: SemaphoreCreateFlags::default(),
28724        }
28725    }
28726}
28727
28728unsafe impl Send for SemaphoreCreateInfo {}
28729unsafe impl Sync for SemaphoreCreateInfo {}
28730
28731/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html>
28732#[repr(C)]
28733#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28734pub struct SemaphoreGetFdInfoKHR {
28735    pub s_type: StructureType,
28736    pub next: *const c_void,
28737    pub semaphore: Semaphore,
28738    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28739}
28740
28741impl Default for SemaphoreGetFdInfoKHR {
28742    #[inline]
28743    fn default() -> Self {
28744        Self {
28745            s_type: StructureType::SEMAPHORE_GET_FD_INFO_KHR,
28746            next: ptr::null(),
28747            semaphore: Semaphore::default(),
28748            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28749        }
28750    }
28751}
28752
28753unsafe impl Send for SemaphoreGetFdInfoKHR {}
28754unsafe impl Sync for SemaphoreGetFdInfoKHR {}
28755
28756/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetSciSyncInfoNV.html>
28757#[repr(C)]
28758#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28759pub struct SemaphoreGetSciSyncInfoNV {
28760    pub s_type: StructureType,
28761    pub next: *const c_void,
28762    pub semaphore: Semaphore,
28763    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28764}
28765
28766impl Default for SemaphoreGetSciSyncInfoNV {
28767    #[inline]
28768    fn default() -> Self {
28769        Self {
28770            s_type: StructureType::SEMAPHORE_GET_SCI_SYNC_INFO_NV,
28771            next: ptr::null(),
28772            semaphore: Semaphore::default(),
28773            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28774        }
28775    }
28776}
28777
28778unsafe impl Send for SemaphoreGetSciSyncInfoNV {}
28779unsafe impl Sync for SemaphoreGetSciSyncInfoNV {}
28780
28781/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html>
28782#[repr(C)]
28783#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28784pub struct SemaphoreGetWin32HandleInfoKHR {
28785    pub s_type: StructureType,
28786    pub next: *const c_void,
28787    pub semaphore: Semaphore,
28788    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28789}
28790
28791impl Default for SemaphoreGetWin32HandleInfoKHR {
28792    #[inline]
28793    fn default() -> Self {
28794        Self {
28795            s_type: StructureType::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
28796            next: ptr::null(),
28797            semaphore: Semaphore::default(),
28798            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28799        }
28800    }
28801}
28802
28803unsafe impl Send for SemaphoreGetWin32HandleInfoKHR {}
28804unsafe impl Sync for SemaphoreGetWin32HandleInfoKHR {}
28805
28806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html>
28807#[repr(C)]
28808#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28809pub struct SemaphoreGetZirconHandleInfoFUCHSIA {
28810    pub s_type: StructureType,
28811    pub next: *const c_void,
28812    pub semaphore: Semaphore,
28813    pub handle_type: ExternalSemaphoreHandleTypeFlags,
28814}
28815
28816impl Default for SemaphoreGetZirconHandleInfoFUCHSIA {
28817    #[inline]
28818    fn default() -> Self {
28819        Self {
28820            s_type: StructureType::SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
28821            next: ptr::null(),
28822            semaphore: Semaphore::default(),
28823            handle_type: ExternalSemaphoreHandleTypeFlags::default(),
28824        }
28825    }
28826}
28827
28828unsafe impl Send for SemaphoreGetZirconHandleInfoFUCHSIA {}
28829unsafe impl Sync for SemaphoreGetZirconHandleInfoFUCHSIA {}
28830
28831/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncCreateInfoNV.html>
28832#[repr(C)]
28833#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28834pub struct SemaphoreSciSyncCreateInfoNV {
28835    pub s_type: StructureType,
28836    pub next: *const c_void,
28837    pub semaphore_pool: SemaphoreSciSyncPoolNV,
28838    pub fence: *const NvSciSyncFence,
28839}
28840
28841impl Default for SemaphoreSciSyncCreateInfoNV {
28842    #[inline]
28843    fn default() -> Self {
28844        Self {
28845            s_type: StructureType::SEMAPHORE_SCI_SYNC_CREATE_INFO_NV,
28846            next: ptr::null(),
28847            semaphore_pool: SemaphoreSciSyncPoolNV::default(),
28848            fence: ptr::null(),
28849        }
28850    }
28851}
28852
28853unsafe impl Send for SemaphoreSciSyncCreateInfoNV {}
28854unsafe impl Sync for SemaphoreSciSyncCreateInfoNV {}
28855
28856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSciSyncPoolCreateInfoNV.html>
28857#[repr(C)]
28858#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28859pub struct SemaphoreSciSyncPoolCreateInfoNV {
28860    pub s_type: StructureType,
28861    pub next: *const c_void,
28862    pub handle: NvSciSyncObj,
28863}
28864
28865impl Default for SemaphoreSciSyncPoolCreateInfoNV {
28866    #[inline]
28867    fn default() -> Self {
28868        Self {
28869            s_type: StructureType::SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV,
28870            next: ptr::null(),
28871            handle: ptr::null_mut(),
28872        }
28873    }
28874}
28875
28876unsafe impl Send for SemaphoreSciSyncPoolCreateInfoNV {}
28877unsafe impl Sync for SemaphoreSciSyncPoolCreateInfoNV {}
28878
28879/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html>
28880#[repr(C)]
28881#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28882pub struct SemaphoreSignalInfo {
28883    pub s_type: StructureType,
28884    pub next: *const c_void,
28885    pub semaphore: Semaphore,
28886    pub value: u64,
28887}
28888
28889impl Default for SemaphoreSignalInfo {
28890    #[inline]
28891    fn default() -> Self {
28892        Self {
28893            s_type: StructureType::SEMAPHORE_SIGNAL_INFO,
28894            next: ptr::null(),
28895            semaphore: Semaphore::default(),
28896            value: u64::default(),
28897        }
28898    }
28899}
28900
28901unsafe impl Send for SemaphoreSignalInfo {}
28902unsafe impl Sync for SemaphoreSignalInfo {}
28903
28904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html>
28905#[repr(C)]
28906#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28907pub struct SemaphoreSubmitInfo {
28908    pub s_type: StructureType,
28909    pub next: *const c_void,
28910    pub semaphore: Semaphore,
28911    pub value: u64,
28912    pub stage_mask: PipelineStageFlags2,
28913    pub device_index: u32,
28914}
28915
28916impl Default for SemaphoreSubmitInfo {
28917    #[inline]
28918    fn default() -> Self {
28919        Self {
28920            s_type: StructureType::SEMAPHORE_SUBMIT_INFO,
28921            next: ptr::null(),
28922            semaphore: Semaphore::default(),
28923            value: u64::default(),
28924            stage_mask: PipelineStageFlags2::default(),
28925            device_index: u32::default(),
28926        }
28927    }
28928}
28929
28930unsafe impl Send for SemaphoreSubmitInfo {}
28931unsafe impl Sync for SemaphoreSubmitInfo {}
28932
28933/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html>
28934#[repr(C)]
28935#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28936pub struct SemaphoreTypeCreateInfo {
28937    pub s_type: StructureType,
28938    pub next: *const c_void,
28939    pub semaphore_type: SemaphoreType,
28940    pub initial_value: u64,
28941}
28942
28943impl Default for SemaphoreTypeCreateInfo {
28944    #[inline]
28945    fn default() -> Self {
28946        Self {
28947            s_type: StructureType::SEMAPHORE_TYPE_CREATE_INFO,
28948            next: ptr::null(),
28949            semaphore_type: SemaphoreType::default(),
28950            initial_value: u64::default(),
28951        }
28952    }
28953}
28954
28955unsafe impl Send for SemaphoreTypeCreateInfo {}
28956unsafe impl Sync for SemaphoreTypeCreateInfo {}
28957
28958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html>
28959#[repr(C)]
28960#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28961pub struct SemaphoreWaitInfo {
28962    pub s_type: StructureType,
28963    pub next: *const c_void,
28964    pub flags: SemaphoreWaitFlags,
28965    pub semaphore_count: u32,
28966    pub semaphores: *const Semaphore,
28967    pub values: *const u64,
28968}
28969
28970impl Default for SemaphoreWaitInfo {
28971    #[inline]
28972    fn default() -> Self {
28973        Self {
28974            s_type: StructureType::SEMAPHORE_WAIT_INFO,
28975            next: ptr::null(),
28976            flags: SemaphoreWaitFlags::default(),
28977            semaphore_count: u32::default(),
28978            semaphores: ptr::null(),
28979            values: ptr::null(),
28980        }
28981    }
28982}
28983
28984unsafe impl Send for SemaphoreWaitInfo {}
28985unsafe impl Sync for SemaphoreWaitInfo {}
28986
28987/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html>
28988#[repr(C)]
28989#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
28990pub struct SetDescriptorBufferOffsetsInfoEXT {
28991    pub s_type: StructureType,
28992    pub next: *const c_void,
28993    pub stage_flags: ShaderStageFlags,
28994    pub layout: PipelineLayout,
28995    pub first_set: u32,
28996    pub set_count: u32,
28997    pub buffer_indices: *const u32,
28998    pub offsets: *const DeviceSize,
28999}
29000
29001impl Default for SetDescriptorBufferOffsetsInfoEXT {
29002    #[inline]
29003    fn default() -> Self {
29004        Self {
29005            s_type: StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT,
29006            next: ptr::null(),
29007            stage_flags: ShaderStageFlags::default(),
29008            layout: PipelineLayout::default(),
29009            first_set: u32::default(),
29010            set_count: u32::default(),
29011            buffer_indices: ptr::null(),
29012            offsets: ptr::null(),
29013        }
29014    }
29015}
29016
29017unsafe impl Send for SetDescriptorBufferOffsetsInfoEXT {}
29018unsafe impl Sync for SetDescriptorBufferOffsetsInfoEXT {}
29019
29020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html>
29021#[repr(C)]
29022#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29023pub struct SetLatencyMarkerInfoNV {
29024    pub s_type: StructureType,
29025    pub next: *const c_void,
29026    pub present_id: u64,
29027    pub marker: LatencyMarkerNV,
29028}
29029
29030impl Default for SetLatencyMarkerInfoNV {
29031    #[inline]
29032    fn default() -> Self {
29033        Self {
29034            s_type: StructureType::SET_LATENCY_MARKER_INFO_NV,
29035            next: ptr::null(),
29036            present_id: u64::default(),
29037            marker: LatencyMarkerNV::default(),
29038        }
29039    }
29040}
29041
29042unsafe impl Send for SetLatencyMarkerInfoNV {}
29043unsafe impl Sync for SetLatencyMarkerInfoNV {}
29044
29045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html>
29046#[repr(C)]
29047#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29048pub struct SetPresentConfigNV {
29049    pub s_type: StructureType,
29050    pub next: *const c_void,
29051    pub num_frames_per_batch: u32,
29052    pub present_config_feedback: u32,
29053}
29054
29055impl Default for SetPresentConfigNV {
29056    #[inline]
29057    fn default() -> Self {
29058        Self {
29059            s_type: StructureType::SET_PRESENT_CONFIG_NV,
29060            next: ptr::null(),
29061            num_frames_per_batch: u32::default(),
29062            present_config_feedback: u32::default(),
29063        }
29064    }
29065}
29066
29067unsafe impl Send for SetPresentConfigNV {}
29068unsafe impl Sync for SetPresentConfigNV {}
29069
29070/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html>
29071#[repr(C)]
29072#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29073pub struct SetStateFlagsIndirectCommandNV {
29074    pub data: u32,
29075}
29076
29077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html>
29078#[repr(C)]
29079#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29080pub struct ShaderCreateInfoEXT {
29081    pub s_type: StructureType,
29082    pub next: *const c_void,
29083    pub flags: ShaderCreateFlagsEXT,
29084    pub stage: ShaderStageFlags,
29085    pub next_stage: ShaderStageFlags,
29086    pub code_type: ShaderCodeTypeEXT,
29087    pub code_size: usize,
29088    pub code: *const c_void,
29089    pub name: *const c_char,
29090    pub set_layout_count: u32,
29091    pub set_layouts: *const DescriptorSetLayout,
29092    pub push_constant_range_count: u32,
29093    pub push_constant_ranges: *const PushConstantRange,
29094    pub specialization_info: *const SpecializationInfo,
29095}
29096
29097impl Default for ShaderCreateInfoEXT {
29098    #[inline]
29099    fn default() -> Self {
29100        Self {
29101            s_type: StructureType::SHADER_CREATE_INFO_EXT,
29102            next: ptr::null(),
29103            flags: ShaderCreateFlagsEXT::default(),
29104            stage: ShaderStageFlags::default(),
29105            next_stage: ShaderStageFlags::default(),
29106            code_type: ShaderCodeTypeEXT::default(),
29107            code_size: usize::default(),
29108            code: ptr::null(),
29109            name: ptr::null(),
29110            set_layout_count: u32::default(),
29111            set_layouts: ptr::null(),
29112            push_constant_range_count: u32::default(),
29113            push_constant_ranges: ptr::null(),
29114            specialization_info: ptr::null(),
29115        }
29116    }
29117}
29118
29119unsafe impl Send for ShaderCreateInfoEXT {}
29120unsafe impl Sync for ShaderCreateInfoEXT {}
29121
29122/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderDescriptorSetAndBindingMappingInfoEXT.html>
29123#[repr(C)]
29124#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29125pub struct ShaderDescriptorSetAndBindingMappingInfoEXT {
29126    pub s_type: StructureType,
29127    pub next: *const c_void,
29128    pub mapping_count: u32,
29129    pub mappings: *const DescriptorSetAndBindingMappingEXT,
29130}
29131
29132impl Default for ShaderDescriptorSetAndBindingMappingInfoEXT {
29133    #[inline]
29134    fn default() -> Self {
29135        Self {
29136            s_type: StructureType::SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT,
29137            next: ptr::null(),
29138            mapping_count: u32::default(),
29139            mappings: ptr::null(),
29140        }
29141    }
29142}
29143
29144unsafe impl Send for ShaderDescriptorSetAndBindingMappingInfoEXT {}
29145unsafe impl Sync for ShaderDescriptorSetAndBindingMappingInfoEXT {}
29146
29147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html>
29148#[repr(C)]
29149#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29150pub struct ShaderModuleCreateInfo {
29151    pub s_type: StructureType,
29152    pub next: *const c_void,
29153    pub flags: ShaderModuleCreateFlags,
29154    pub code_size: usize,
29155    pub code: *const u32,
29156}
29157
29158impl Default for ShaderModuleCreateInfo {
29159    #[inline]
29160    fn default() -> Self {
29161        Self {
29162            s_type: StructureType::SHADER_MODULE_CREATE_INFO,
29163            next: ptr::null(),
29164            flags: ShaderModuleCreateFlags::default(),
29165            code_size: usize::default(),
29166            code: ptr::null(),
29167        }
29168    }
29169}
29170
29171unsafe impl Send for ShaderModuleCreateInfo {}
29172unsafe impl Sync for ShaderModuleCreateInfo {}
29173
29174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html>
29175#[repr(C)]
29176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29177pub struct ShaderModuleIdentifierEXT {
29178    pub s_type: StructureType,
29179    pub next: *mut c_void,
29180    pub identifier_size: u32,
29181    pub identifier: ByteArray<MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT>,
29182}
29183
29184impl Default for ShaderModuleIdentifierEXT {
29185    #[inline]
29186    fn default() -> Self {
29187        Self {
29188            s_type: StructureType::SHADER_MODULE_IDENTIFIER_EXT,
29189            next: ptr::null_mut(),
29190            identifier_size: u32::default(),
29191            identifier: ByteArray::default(),
29192        }
29193    }
29194}
29195
29196unsafe impl Send for ShaderModuleIdentifierEXT {}
29197unsafe impl Sync for ShaderModuleIdentifierEXT {}
29198
29199/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html>
29200#[repr(C)]
29201#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29202pub struct ShaderModuleValidationCacheCreateInfoEXT {
29203    pub s_type: StructureType,
29204    pub next: *const c_void,
29205    pub validation_cache: ValidationCacheEXT,
29206}
29207
29208impl Default for ShaderModuleValidationCacheCreateInfoEXT {
29209    #[inline]
29210    fn default() -> Self {
29211        Self {
29212            s_type: StructureType::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
29213            next: ptr::null(),
29214            validation_cache: ValidationCacheEXT::default(),
29215        }
29216    }
29217}
29218
29219unsafe impl Send for ShaderModuleValidationCacheCreateInfoEXT {}
29220unsafe impl Sync for ShaderModuleValidationCacheCreateInfoEXT {}
29221
29222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html>
29223#[repr(C)]
29224#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29225pub struct ShaderResourceUsageAMD {
29226    pub num_used_vgprs: u32,
29227    pub num_used_sgprs: u32,
29228    pub lds_size_per_local_work_group: u32,
29229    pub lds_usage_size_in_bytes: usize,
29230    pub scratch_mem_usage_in_bytes: usize,
29231}
29232
29233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html>
29234#[repr(C)]
29235#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29236pub struct ShaderStatisticsInfoAMD {
29237    pub shader_stage_mask: ShaderStageFlags,
29238    pub resource_usage: ShaderResourceUsageAMD,
29239    pub num_physical_vgprs: u32,
29240    pub num_physical_sgprs: u32,
29241    pub num_available_vgprs: u32,
29242    pub num_available_sgprs: u32,
29243    pub compute_work_group_size: [u32; 3],
29244}
29245
29246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html>
29247#[repr(C)]
29248#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29249pub struct ShadingRatePaletteNV {
29250    pub shading_rate_palette_entry_count: u32,
29251    pub shading_rate_palette_entries: *const ShadingRatePaletteEntryNV,
29252}
29253
29254impl Default for ShadingRatePaletteNV {
29255    #[inline]
29256    fn default() -> Self {
29257        Self {
29258            shading_rate_palette_entry_count: u32::default(),
29259            shading_rate_palette_entries: ptr::null(),
29260        }
29261    }
29262}
29263
29264unsafe impl Send for ShadingRatePaletteNV {}
29265unsafe impl Sync for ShadingRatePaletteNV {}
29266
29267/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html>
29268#[repr(C)]
29269#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29270pub struct SharedPresentSurfaceCapabilitiesKHR {
29271    pub s_type: StructureType,
29272    pub next: *mut c_void,
29273    pub shared_present_supported_usage_flags: ImageUsageFlags,
29274}
29275
29276impl Default for SharedPresentSurfaceCapabilitiesKHR {
29277    #[inline]
29278    fn default() -> Self {
29279        Self {
29280            s_type: StructureType::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
29281            next: ptr::null_mut(),
29282            shared_present_supported_usage_flags: ImageUsageFlags::default(),
29283        }
29284    }
29285}
29286
29287unsafe impl Send for SharedPresentSurfaceCapabilitiesKHR {}
29288unsafe impl Sync for SharedPresentSurfaceCapabilitiesKHR {}
29289
29290/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html>
29291#[repr(C)]
29292#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29293pub struct SparseBufferMemoryBindInfo {
29294    pub buffer: Buffer,
29295    pub bind_count: u32,
29296    pub binds: *const SparseMemoryBind,
29297}
29298
29299impl Default for SparseBufferMemoryBindInfo {
29300    #[inline]
29301    fn default() -> Self {
29302        Self {
29303            buffer: Buffer::default(),
29304            bind_count: u32::default(),
29305            binds: ptr::null(),
29306        }
29307    }
29308}
29309
29310unsafe impl Send for SparseBufferMemoryBindInfo {}
29311unsafe impl Sync for SparseBufferMemoryBindInfo {}
29312
29313/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html>
29314#[repr(C)]
29315#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29316pub struct SparseImageFormatProperties {
29317    pub aspect_mask: ImageAspectFlags,
29318    pub image_granularity: Extent3D,
29319    pub flags: SparseImageFormatFlags,
29320}
29321
29322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html>
29323#[repr(C)]
29324#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29325pub struct SparseImageFormatProperties2 {
29326    pub s_type: StructureType,
29327    pub next: *mut c_void,
29328    pub properties: SparseImageFormatProperties,
29329}
29330
29331impl Default for SparseImageFormatProperties2 {
29332    #[inline]
29333    fn default() -> Self {
29334        Self {
29335            s_type: StructureType::SPARSE_IMAGE_FORMAT_PROPERTIES_2,
29336            next: ptr::null_mut(),
29337            properties: SparseImageFormatProperties::default(),
29338        }
29339    }
29340}
29341
29342unsafe impl Send for SparseImageFormatProperties2 {}
29343unsafe impl Sync for SparseImageFormatProperties2 {}
29344
29345/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html>
29346#[repr(C)]
29347#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29348pub struct SparseImageMemoryBind {
29349    pub subresource: ImageSubresource,
29350    pub offset: Offset3D,
29351    pub extent: Extent3D,
29352    pub memory: DeviceMemory,
29353    pub memory_offset: DeviceSize,
29354    pub flags: SparseMemoryBindFlags,
29355}
29356
29357/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html>
29358#[repr(C)]
29359#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29360pub struct SparseImageMemoryBindInfo {
29361    pub image: Image,
29362    pub bind_count: u32,
29363    pub binds: *const SparseImageMemoryBind,
29364}
29365
29366impl Default for SparseImageMemoryBindInfo {
29367    #[inline]
29368    fn default() -> Self {
29369        Self {
29370            image: Image::default(),
29371            bind_count: u32::default(),
29372            binds: ptr::null(),
29373        }
29374    }
29375}
29376
29377unsafe impl Send for SparseImageMemoryBindInfo {}
29378unsafe impl Sync for SparseImageMemoryBindInfo {}
29379
29380/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html>
29381#[repr(C)]
29382#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29383pub struct SparseImageMemoryRequirements {
29384    pub format_properties: SparseImageFormatProperties,
29385    pub image_mip_tail_first_lod: u32,
29386    pub image_mip_tail_size: DeviceSize,
29387    pub image_mip_tail_offset: DeviceSize,
29388    pub image_mip_tail_stride: DeviceSize,
29389}
29390
29391/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html>
29392#[repr(C)]
29393#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29394pub struct SparseImageMemoryRequirements2 {
29395    pub s_type: StructureType,
29396    pub next: *mut c_void,
29397    pub memory_requirements: SparseImageMemoryRequirements,
29398}
29399
29400impl Default for SparseImageMemoryRequirements2 {
29401    #[inline]
29402    fn default() -> Self {
29403        Self {
29404            s_type: StructureType::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
29405            next: ptr::null_mut(),
29406            memory_requirements: SparseImageMemoryRequirements::default(),
29407        }
29408    }
29409}
29410
29411unsafe impl Send for SparseImageMemoryRequirements2 {}
29412unsafe impl Sync for SparseImageMemoryRequirements2 {}
29413
29414/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html>
29415#[repr(C)]
29416#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29417pub struct SparseImageOpaqueMemoryBindInfo {
29418    pub image: Image,
29419    pub bind_count: u32,
29420    pub binds: *const SparseMemoryBind,
29421}
29422
29423impl Default for SparseImageOpaqueMemoryBindInfo {
29424    #[inline]
29425    fn default() -> Self {
29426        Self {
29427            image: Image::default(),
29428            bind_count: u32::default(),
29429            binds: ptr::null(),
29430        }
29431    }
29432}
29433
29434unsafe impl Send for SparseImageOpaqueMemoryBindInfo {}
29435unsafe impl Sync for SparseImageOpaqueMemoryBindInfo {}
29436
29437/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseMemoryBind.html>
29438#[repr(C)]
29439#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29440pub struct SparseMemoryBind {
29441    pub resource_offset: DeviceSize,
29442    pub size: DeviceSize,
29443    pub memory: DeviceMemory,
29444    pub memory_offset: DeviceSize,
29445    pub flags: SparseMemoryBindFlags,
29446}
29447
29448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationInfo.html>
29449#[repr(C)]
29450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29451pub struct SpecializationInfo {
29452    pub map_entry_count: u32,
29453    pub map_entries: *const SpecializationMapEntry,
29454    pub data_size: usize,
29455    pub data: *const c_void,
29456}
29457
29458impl Default for SpecializationInfo {
29459    #[inline]
29460    fn default() -> Self {
29461        Self {
29462            map_entry_count: u32::default(),
29463            map_entries: ptr::null(),
29464            data_size: usize::default(),
29465            data: ptr::null(),
29466        }
29467    }
29468}
29469
29470unsafe impl Send for SpecializationInfo {}
29471unsafe impl Sync for SpecializationInfo {}
29472
29473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html>
29474#[repr(C)]
29475#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29476pub struct SpecializationMapEntry {
29477    pub constant_id: u32,
29478    pub offset: u32,
29479    pub size: usize,
29480}
29481
29482/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStencilOpState.html>
29483#[repr(C)]
29484#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29485pub struct StencilOpState {
29486    pub fail_op: StencilOp,
29487    pub pass_op: StencilOp,
29488    pub depth_fail_op: StencilOp,
29489    pub compare_op: CompareOp,
29490    pub compare_mask: u32,
29491    pub write_mask: u32,
29492    pub reference: u32,
29493}
29494
29495/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html>
29496#[repr(C)]
29497#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29498pub struct StreamDescriptorSurfaceCreateInfoGGP {
29499    pub s_type: StructureType,
29500    pub next: *const c_void,
29501    pub flags: StreamDescriptorSurfaceCreateFlagsGGP,
29502    pub stream_descriptor: GgpStreamDescriptor,
29503}
29504
29505impl Default for StreamDescriptorSurfaceCreateInfoGGP {
29506    #[inline]
29507    fn default() -> Self {
29508        Self {
29509            s_type: StructureType::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,
29510            next: ptr::null(),
29511            flags: StreamDescriptorSurfaceCreateFlagsGGP::default(),
29512            stream_descriptor: GgpStreamDescriptor::default(),
29513        }
29514    }
29515}
29516
29517unsafe impl Send for StreamDescriptorSurfaceCreateInfoGGP {}
29518unsafe impl Sync for StreamDescriptorSurfaceCreateInfoGGP {}
29519
29520/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html>
29521#[repr(C)]
29522#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29523pub struct StridedDeviceAddressNV {
29524    pub start_address: DeviceAddress,
29525    pub stride_in_bytes: DeviceSize,
29526}
29527
29528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRangeKHR.html>
29529#[repr(C)]
29530#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29531pub struct StridedDeviceAddressRangeKHR {
29532    pub address: DeviceAddress,
29533    pub size: DeviceSize,
29534    pub stride: DeviceSize,
29535}
29536
29537/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html>
29538#[repr(C)]
29539#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29540pub struct StridedDeviceAddressRegionKHR {
29541    pub device_address: DeviceAddress,
29542    pub stride: DeviceSize,
29543    pub size: DeviceSize,
29544}
29545
29546/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo.html>
29547#[repr(C)]
29548#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29549pub struct SubmitInfo {
29550    pub s_type: StructureType,
29551    pub next: *const c_void,
29552    pub wait_semaphore_count: u32,
29553    pub wait_semaphores: *const Semaphore,
29554    pub wait_dst_stage_mask: *const PipelineStageFlags,
29555    pub command_buffer_count: u32,
29556    pub command_buffers: *const CommandBuffer,
29557    pub signal_semaphore_count: u32,
29558    pub signal_semaphores: *const Semaphore,
29559}
29560
29561impl Default for SubmitInfo {
29562    #[inline]
29563    fn default() -> Self {
29564        Self {
29565            s_type: StructureType::SUBMIT_INFO,
29566            next: ptr::null(),
29567            wait_semaphore_count: u32::default(),
29568            wait_semaphores: ptr::null(),
29569            wait_dst_stage_mask: ptr::null(),
29570            command_buffer_count: u32::default(),
29571            command_buffers: ptr::null(),
29572            signal_semaphore_count: u32::default(),
29573            signal_semaphores: ptr::null(),
29574        }
29575    }
29576}
29577
29578unsafe impl Send for SubmitInfo {}
29579unsafe impl Sync for SubmitInfo {}
29580
29581/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2.html>
29582#[repr(C)]
29583#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29584pub struct SubmitInfo2 {
29585    pub s_type: StructureType,
29586    pub next: *const c_void,
29587    pub flags: SubmitFlags,
29588    pub wait_semaphore_info_count: u32,
29589    pub wait_semaphore_infos: *const SemaphoreSubmitInfo,
29590    pub command_buffer_info_count: u32,
29591    pub command_buffer_infos: *const CommandBufferSubmitInfo,
29592    pub signal_semaphore_info_count: u32,
29593    pub signal_semaphore_infos: *const SemaphoreSubmitInfo,
29594}
29595
29596impl Default for SubmitInfo2 {
29597    #[inline]
29598    fn default() -> Self {
29599        Self {
29600            s_type: StructureType::SUBMIT_INFO_2,
29601            next: ptr::null(),
29602            flags: SubmitFlags::default(),
29603            wait_semaphore_info_count: u32::default(),
29604            wait_semaphore_infos: ptr::null(),
29605            command_buffer_info_count: u32::default(),
29606            command_buffer_infos: ptr::null(),
29607            signal_semaphore_info_count: u32::default(),
29608            signal_semaphore_infos: ptr::null(),
29609        }
29610    }
29611}
29612
29613unsafe impl Send for SubmitInfo2 {}
29614unsafe impl Sync for SubmitInfo2 {}
29615
29616/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html>
29617#[repr(C)]
29618#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29619pub struct SubpassBeginInfo {
29620    pub s_type: StructureType,
29621    pub next: *const c_void,
29622    pub contents: SubpassContents,
29623}
29624
29625impl Default for SubpassBeginInfo {
29626    #[inline]
29627    fn default() -> Self {
29628        Self {
29629            s_type: StructureType::SUBPASS_BEGIN_INFO,
29630            next: ptr::null(),
29631            contents: SubpassContents::default(),
29632        }
29633    }
29634}
29635
29636unsafe impl Send for SubpassBeginInfo {}
29637unsafe impl Sync for SubpassBeginInfo {}
29638
29639/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency.html>
29640#[repr(C)]
29641#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29642pub struct SubpassDependency {
29643    pub src_subpass: u32,
29644    pub dst_subpass: u32,
29645    pub src_stage_mask: PipelineStageFlags,
29646    pub dst_stage_mask: PipelineStageFlags,
29647    pub src_access_mask: AccessFlags,
29648    pub dst_access_mask: AccessFlags,
29649    pub dependency_flags: DependencyFlags,
29650}
29651
29652/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2.html>
29653#[repr(C)]
29654#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29655pub struct SubpassDependency2 {
29656    pub s_type: StructureType,
29657    pub next: *const c_void,
29658    pub src_subpass: u32,
29659    pub dst_subpass: u32,
29660    pub src_stage_mask: PipelineStageFlags,
29661    pub dst_stage_mask: PipelineStageFlags,
29662    pub src_access_mask: AccessFlags,
29663    pub dst_access_mask: AccessFlags,
29664    pub dependency_flags: DependencyFlags,
29665    pub view_offset: i32,
29666}
29667
29668impl Default for SubpassDependency2 {
29669    #[inline]
29670    fn default() -> Self {
29671        Self {
29672            s_type: StructureType::SUBPASS_DEPENDENCY_2,
29673            next: ptr::null(),
29674            src_subpass: u32::default(),
29675            dst_subpass: u32::default(),
29676            src_stage_mask: PipelineStageFlags::default(),
29677            dst_stage_mask: PipelineStageFlags::default(),
29678            src_access_mask: AccessFlags::default(),
29679            dst_access_mask: AccessFlags::default(),
29680            dependency_flags: DependencyFlags::default(),
29681            view_offset: i32::default(),
29682        }
29683    }
29684}
29685
29686unsafe impl Send for SubpassDependency2 {}
29687unsafe impl Sync for SubpassDependency2 {}
29688
29689/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription.html>
29690#[repr(C)]
29691#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29692pub struct SubpassDescription {
29693    pub flags: SubpassDescriptionFlags,
29694    pub pipeline_bind_point: PipelineBindPoint,
29695    pub input_attachment_count: u32,
29696    pub input_attachments: *const AttachmentReference,
29697    pub color_attachment_count: u32,
29698    pub color_attachments: *const AttachmentReference,
29699    pub resolve_attachments: *const AttachmentReference,
29700    pub depth_stencil_attachment: *const AttachmentReference,
29701    pub preserve_attachment_count: u32,
29702    pub preserve_attachments: *const u32,
29703}
29704
29705impl Default for SubpassDescription {
29706    #[inline]
29707    fn default() -> Self {
29708        Self {
29709            flags: SubpassDescriptionFlags::default(),
29710            pipeline_bind_point: PipelineBindPoint::default(),
29711            input_attachment_count: u32::default(),
29712            input_attachments: ptr::null(),
29713            color_attachment_count: u32::default(),
29714            color_attachments: ptr::null(),
29715            resolve_attachments: ptr::null(),
29716            depth_stencil_attachment: ptr::null(),
29717            preserve_attachment_count: u32::default(),
29718            preserve_attachments: ptr::null(),
29719        }
29720    }
29721}
29722
29723unsafe impl Send for SubpassDescription {}
29724unsafe impl Sync for SubpassDescription {}
29725
29726/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2.html>
29727#[repr(C)]
29728#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29729pub struct SubpassDescription2 {
29730    pub s_type: StructureType,
29731    pub next: *const c_void,
29732    pub flags: SubpassDescriptionFlags,
29733    pub pipeline_bind_point: PipelineBindPoint,
29734    pub view_mask: u32,
29735    pub input_attachment_count: u32,
29736    pub input_attachments: *const AttachmentReference2,
29737    pub color_attachment_count: u32,
29738    pub color_attachments: *const AttachmentReference2,
29739    pub resolve_attachments: *const AttachmentReference2,
29740    pub depth_stencil_attachment: *const AttachmentReference2,
29741    pub preserve_attachment_count: u32,
29742    pub preserve_attachments: *const u32,
29743}
29744
29745impl Default for SubpassDescription2 {
29746    #[inline]
29747    fn default() -> Self {
29748        Self {
29749            s_type: StructureType::SUBPASS_DESCRIPTION_2,
29750            next: ptr::null(),
29751            flags: SubpassDescriptionFlags::default(),
29752            pipeline_bind_point: PipelineBindPoint::default(),
29753            view_mask: u32::default(),
29754            input_attachment_count: u32::default(),
29755            input_attachments: ptr::null(),
29756            color_attachment_count: u32::default(),
29757            color_attachments: ptr::null(),
29758            resolve_attachments: ptr::null(),
29759            depth_stencil_attachment: ptr::null(),
29760            preserve_attachment_count: u32::default(),
29761            preserve_attachments: ptr::null(),
29762        }
29763    }
29764}
29765
29766unsafe impl Send for SubpassDescription2 {}
29767unsafe impl Sync for SubpassDescription2 {}
29768
29769/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html>
29770#[repr(C)]
29771#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29772pub struct SubpassDescriptionDepthStencilResolve {
29773    pub s_type: StructureType,
29774    pub next: *const c_void,
29775    pub depth_resolve_mode: ResolveModeFlags,
29776    pub stencil_resolve_mode: ResolveModeFlags,
29777    pub depth_stencil_resolve_attachment: *const AttachmentReference2,
29778}
29779
29780impl Default for SubpassDescriptionDepthStencilResolve {
29781    #[inline]
29782    fn default() -> Self {
29783        Self {
29784            s_type: StructureType::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
29785            next: ptr::null(),
29786            depth_resolve_mode: ResolveModeFlags::default(),
29787            stencil_resolve_mode: ResolveModeFlags::default(),
29788            depth_stencil_resolve_attachment: ptr::null(),
29789        }
29790    }
29791}
29792
29793unsafe impl Send for SubpassDescriptionDepthStencilResolve {}
29794unsafe impl Sync for SubpassDescriptionDepthStencilResolve {}
29795
29796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfo.html>
29797#[repr(C)]
29798#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29799pub struct SubpassEndInfo {
29800    pub s_type: StructureType,
29801    pub next: *const c_void,
29802}
29803
29804impl Default for SubpassEndInfo {
29805    #[inline]
29806    fn default() -> Self {
29807        Self {
29808            s_type: StructureType::SUBPASS_END_INFO,
29809            next: ptr::null(),
29810        }
29811    }
29812}
29813
29814unsafe impl Send for SubpassEndInfo {}
29815unsafe impl Sync for SubpassEndInfo {}
29816
29817/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html>
29818#[repr(C)]
29819#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29820pub struct SubpassResolvePerformanceQueryEXT {
29821    pub s_type: StructureType,
29822    pub next: *mut c_void,
29823    pub optimal: Bool32,
29824}
29825
29826impl Default for SubpassResolvePerformanceQueryEXT {
29827    #[inline]
29828    fn default() -> Self {
29829        Self {
29830            s_type: StructureType::SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT,
29831            next: ptr::null_mut(),
29832            optimal: Bool32::default(),
29833        }
29834    }
29835}
29836
29837unsafe impl Send for SubpassResolvePerformanceQueryEXT {}
29838unsafe impl Sync for SubpassResolvePerformanceQueryEXT {}
29839
29840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html>
29841#[repr(C)]
29842#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29843pub struct SubpassSampleLocationsEXT {
29844    pub subpass_index: u32,
29845    pub sample_locations_info: SampleLocationsInfoEXT,
29846}
29847
29848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html>
29849#[repr(C)]
29850#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29851pub struct SubpassShadingPipelineCreateInfoHUAWEI {
29852    pub s_type: StructureType,
29853    pub next: *mut c_void,
29854    pub render_pass: RenderPass,
29855    pub subpass: u32,
29856}
29857
29858impl Default for SubpassShadingPipelineCreateInfoHUAWEI {
29859    #[inline]
29860    fn default() -> Self {
29861        Self {
29862            s_type: StructureType::SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI,
29863            next: ptr::null_mut(),
29864            render_pass: RenderPass::default(),
29865            subpass: u32::default(),
29866        }
29867    }
29868}
29869
29870unsafe impl Send for SubpassShadingPipelineCreateInfoHUAWEI {}
29871unsafe impl Sync for SubpassShadingPipelineCreateInfoHUAWEI {}
29872
29873/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html>
29874#[repr(C)]
29875#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29876pub struct SubresourceHostMemcpySize {
29877    pub s_type: StructureType,
29878    pub next: *mut c_void,
29879    pub size: DeviceSize,
29880}
29881
29882impl Default for SubresourceHostMemcpySize {
29883    #[inline]
29884    fn default() -> Self {
29885        Self {
29886            s_type: StructureType::SUBRESOURCE_HOST_MEMCPY_SIZE,
29887            next: ptr::null_mut(),
29888            size: DeviceSize::default(),
29889        }
29890    }
29891}
29892
29893unsafe impl Send for SubresourceHostMemcpySize {}
29894unsafe impl Sync for SubresourceHostMemcpySize {}
29895
29896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout.html>
29897#[repr(C)]
29898#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
29899pub struct SubresourceLayout {
29900    pub offset: DeviceSize,
29901    pub size: DeviceSize,
29902    pub row_pitch: DeviceSize,
29903    pub array_pitch: DeviceSize,
29904    pub depth_pitch: DeviceSize,
29905}
29906
29907/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2.html>
29908#[repr(C)]
29909#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29910pub struct SubresourceLayout2 {
29911    pub s_type: StructureType,
29912    pub next: *mut c_void,
29913    pub subresource_layout: SubresourceLayout,
29914}
29915
29916impl Default for SubresourceLayout2 {
29917    #[inline]
29918    fn default() -> Self {
29919        Self {
29920            s_type: StructureType::SUBRESOURCE_LAYOUT_2,
29921            next: ptr::null_mut(),
29922            subresource_layout: SubresourceLayout::default(),
29923        }
29924    }
29925}
29926
29927unsafe impl Send for SubresourceLayout2 {}
29928unsafe impl Sync for SubresourceLayout2 {}
29929
29930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubsampledImageFormatPropertiesEXT.html>
29931#[repr(C)]
29932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29933pub struct SubsampledImageFormatPropertiesEXT {
29934    pub s_type: StructureType,
29935    pub next: *const c_void,
29936    pub subsampled_image_descriptor_count: u32,
29937}
29938
29939impl Default for SubsampledImageFormatPropertiesEXT {
29940    #[inline]
29941    fn default() -> Self {
29942        Self {
29943            s_type: StructureType::SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT,
29944            next: ptr::null(),
29945            subsampled_image_descriptor_count: u32::default(),
29946        }
29947    }
29948}
29949
29950unsafe impl Send for SubsampledImageFormatPropertiesEXT {}
29951unsafe impl Sync for SubsampledImageFormatPropertiesEXT {}
29952
29953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html>
29954#[repr(C)]
29955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29956pub struct SurfaceCapabilities2EXT {
29957    pub s_type: StructureType,
29958    pub next: *mut c_void,
29959    pub min_image_count: u32,
29960    pub max_image_count: u32,
29961    pub current_extent: Extent2D,
29962    pub min_image_extent: Extent2D,
29963    pub max_image_extent: Extent2D,
29964    pub max_image_array_layers: u32,
29965    pub supported_transforms: SurfaceTransformFlagsKHR,
29966    pub current_transform: SurfaceTransformFlagsKHR,
29967    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
29968    pub supported_usage_flags: ImageUsageFlags,
29969    pub supported_surface_counters: SurfaceCounterFlagsEXT,
29970}
29971
29972impl Default for SurfaceCapabilities2EXT {
29973    #[inline]
29974    fn default() -> Self {
29975        Self {
29976            s_type: StructureType::SURFACE_CAPABILITIES_2_EXT,
29977            next: ptr::null_mut(),
29978            min_image_count: u32::default(),
29979            max_image_count: u32::default(),
29980            current_extent: Extent2D::default(),
29981            min_image_extent: Extent2D::default(),
29982            max_image_extent: Extent2D::default(),
29983            max_image_array_layers: u32::default(),
29984            supported_transforms: SurfaceTransformFlagsKHR::default(),
29985            current_transform: SurfaceTransformFlagsKHR::default(),
29986            supported_composite_alpha: CompositeAlphaFlagsKHR::default(),
29987            supported_usage_flags: ImageUsageFlags::default(),
29988            supported_surface_counters: SurfaceCounterFlagsEXT::default(),
29989        }
29990    }
29991}
29992
29993unsafe impl Send for SurfaceCapabilities2EXT {}
29994unsafe impl Sync for SurfaceCapabilities2EXT {}
29995
29996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html>
29997#[repr(C)]
29998#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
29999pub struct SurfaceCapabilities2KHR {
30000    pub s_type: StructureType,
30001    pub next: *mut c_void,
30002    pub surface_capabilities: SurfaceCapabilitiesKHR,
30003}
30004
30005impl Default for SurfaceCapabilities2KHR {
30006    #[inline]
30007    fn default() -> Self {
30008        Self {
30009            s_type: StructureType::SURFACE_CAPABILITIES_2_KHR,
30010            next: ptr::null_mut(),
30011            surface_capabilities: SurfaceCapabilitiesKHR::default(),
30012        }
30013    }
30014}
30015
30016unsafe impl Send for SurfaceCapabilities2KHR {}
30017unsafe impl Sync for SurfaceCapabilities2KHR {}
30018
30019/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html>
30020#[repr(C)]
30021#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30022pub struct SurfaceCapabilitiesFullScreenExclusiveEXT {
30023    pub s_type: StructureType,
30024    pub next: *mut c_void,
30025    pub full_screen_exclusive_supported: Bool32,
30026}
30027
30028impl Default for SurfaceCapabilitiesFullScreenExclusiveEXT {
30029    #[inline]
30030    fn default() -> Self {
30031        Self {
30032            s_type: StructureType::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
30033            next: ptr::null_mut(),
30034            full_screen_exclusive_supported: Bool32::default(),
30035        }
30036    }
30037}
30038
30039unsafe impl Send for SurfaceCapabilitiesFullScreenExclusiveEXT {}
30040unsafe impl Sync for SurfaceCapabilitiesFullScreenExclusiveEXT {}
30041
30042/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html>
30043#[repr(C)]
30044#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30045pub struct SurfaceCapabilitiesKHR {
30046    pub min_image_count: u32,
30047    pub max_image_count: u32,
30048    pub current_extent: Extent2D,
30049    pub min_image_extent: Extent2D,
30050    pub max_image_extent: Extent2D,
30051    pub max_image_array_layers: u32,
30052    pub supported_transforms: SurfaceTransformFlagsKHR,
30053    pub current_transform: SurfaceTransformFlagsKHR,
30054    pub supported_composite_alpha: CompositeAlphaFlagsKHR,
30055    pub supported_usage_flags: ImageUsageFlags,
30056}
30057
30058/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html>
30059#[repr(C)]
30060#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30061pub struct SurfaceCapabilitiesPresentBarrierNV {
30062    pub s_type: StructureType,
30063    pub next: *mut c_void,
30064    pub present_barrier_supported: Bool32,
30065}
30066
30067impl Default for SurfaceCapabilitiesPresentBarrierNV {
30068    #[inline]
30069    fn default() -> Self {
30070        Self {
30071            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_BARRIER_NV,
30072            next: ptr::null_mut(),
30073            present_barrier_supported: Bool32::default(),
30074        }
30075    }
30076}
30077
30078unsafe impl Send for SurfaceCapabilitiesPresentBarrierNV {}
30079unsafe impl Sync for SurfaceCapabilitiesPresentBarrierNV {}
30080
30081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentId2KHR.html>
30082#[repr(C)]
30083#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30084pub struct SurfaceCapabilitiesPresentId2KHR {
30085    pub s_type: StructureType,
30086    pub next: *mut c_void,
30087    pub present_id2_supported: Bool32,
30088}
30089
30090impl Default for SurfaceCapabilitiesPresentId2KHR {
30091    #[inline]
30092    fn default() -> Self {
30093        Self {
30094            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_ID_2_KHR,
30095            next: ptr::null_mut(),
30096            present_id2_supported: Bool32::default(),
30097        }
30098    }
30099}
30100
30101unsafe impl Send for SurfaceCapabilitiesPresentId2KHR {}
30102unsafe impl Sync for SurfaceCapabilitiesPresentId2KHR {}
30103
30104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentWait2KHR.html>
30105#[repr(C)]
30106#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30107pub struct SurfaceCapabilitiesPresentWait2KHR {
30108    pub s_type: StructureType,
30109    pub next: *mut c_void,
30110    pub present_wait2_supported: Bool32,
30111}
30112
30113impl Default for SurfaceCapabilitiesPresentWait2KHR {
30114    #[inline]
30115    fn default() -> Self {
30116        Self {
30117            s_type: StructureType::SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR,
30118            next: ptr::null_mut(),
30119            present_wait2_supported: Bool32::default(),
30120        }
30121    }
30122}
30123
30124unsafe impl Send for SurfaceCapabilitiesPresentWait2KHR {}
30125unsafe impl Sync for SurfaceCapabilitiesPresentWait2KHR {}
30126
30127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceCreateInfoOHOS.html>
30128#[repr(C)]
30129#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30130pub struct SurfaceCreateInfoOHOS {
30131    pub s_type: StructureType,
30132    pub next: *const c_void,
30133    pub flags: SurfaceCreateFlagsOHOS,
30134    pub window: *mut OHNativeWindow,
30135}
30136
30137impl Default for SurfaceCreateInfoOHOS {
30138    #[inline]
30139    fn default() -> Self {
30140        Self {
30141            s_type: StructureType::SURFACE_CREATE_INFO_OHOS,
30142            next: ptr::null(),
30143            flags: SurfaceCreateFlagsOHOS::default(),
30144            window: ptr::null_mut(),
30145        }
30146    }
30147}
30148
30149unsafe impl Send for SurfaceCreateInfoOHOS {}
30150unsafe impl Sync for SurfaceCreateInfoOHOS {}
30151
30152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html>
30153#[repr(C)]
30154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30155pub struct SurfaceFormat2KHR {
30156    pub s_type: StructureType,
30157    pub next: *mut c_void,
30158    pub surface_format: SurfaceFormatKHR,
30159}
30160
30161impl Default for SurfaceFormat2KHR {
30162    #[inline]
30163    fn default() -> Self {
30164        Self {
30165            s_type: StructureType::SURFACE_FORMAT_2_KHR,
30166            next: ptr::null_mut(),
30167            surface_format: SurfaceFormatKHR::default(),
30168        }
30169    }
30170}
30171
30172unsafe impl Send for SurfaceFormat2KHR {}
30173unsafe impl Sync for SurfaceFormat2KHR {}
30174
30175/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html>
30176#[repr(C)]
30177#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
30178pub struct SurfaceFormatKHR {
30179    pub format: Format,
30180    pub color_space: ColorSpaceKHR,
30181}
30182
30183/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html>
30184#[repr(C)]
30185#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30186pub struct SurfaceFullScreenExclusiveInfoEXT {
30187    pub s_type: StructureType,
30188    pub next: *mut c_void,
30189    pub full_screen_exclusive: FullScreenExclusiveEXT,
30190}
30191
30192impl Default for SurfaceFullScreenExclusiveInfoEXT {
30193    #[inline]
30194    fn default() -> Self {
30195        Self {
30196            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
30197            next: ptr::null_mut(),
30198            full_screen_exclusive: FullScreenExclusiveEXT::default(),
30199        }
30200    }
30201}
30202
30203unsafe impl Send for SurfaceFullScreenExclusiveInfoEXT {}
30204unsafe impl Sync for SurfaceFullScreenExclusiveInfoEXT {}
30205
30206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html>
30207#[repr(C)]
30208#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30209pub struct SurfaceFullScreenExclusiveWin32InfoEXT {
30210    pub s_type: StructureType,
30211    pub next: *const c_void,
30212    pub hmonitor: HMONITOR,
30213}
30214
30215impl Default for SurfaceFullScreenExclusiveWin32InfoEXT {
30216    #[inline]
30217    fn default() -> Self {
30218        Self {
30219            s_type: StructureType::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
30220            next: ptr::null(),
30221            hmonitor: ptr::null_mut(),
30222        }
30223    }
30224}
30225
30226unsafe impl Send for SurfaceFullScreenExclusiveWin32InfoEXT {}
30227unsafe impl Sync for SurfaceFullScreenExclusiveWin32InfoEXT {}
30228
30229/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityKHR.html>
30230#[repr(C)]
30231#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30232pub struct SurfacePresentModeCompatibilityKHR {
30233    pub s_type: StructureType,
30234    pub next: *mut c_void,
30235    pub present_mode_count: u32,
30236    pub present_modes: *mut PresentModeKHR,
30237}
30238
30239impl Default for SurfacePresentModeCompatibilityKHR {
30240    #[inline]
30241    fn default() -> Self {
30242        Self {
30243            s_type: StructureType::SURFACE_PRESENT_MODE_COMPATIBILITY_KHR,
30244            next: ptr::null_mut(),
30245            present_mode_count: u32::default(),
30246            present_modes: ptr::null_mut(),
30247        }
30248    }
30249}
30250
30251unsafe impl Send for SurfacePresentModeCompatibilityKHR {}
30252unsafe impl Sync for SurfacePresentModeCompatibilityKHR {}
30253
30254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeKHR.html>
30255#[repr(C)]
30256#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30257pub struct SurfacePresentModeKHR {
30258    pub s_type: StructureType,
30259    pub next: *mut c_void,
30260    pub present_mode: PresentModeKHR,
30261}
30262
30263impl Default for SurfacePresentModeKHR {
30264    #[inline]
30265    fn default() -> Self {
30266        Self {
30267            s_type: StructureType::SURFACE_PRESENT_MODE_KHR,
30268            next: ptr::null_mut(),
30269            present_mode: PresentModeKHR::default(),
30270        }
30271    }
30272}
30273
30274unsafe impl Send for SurfacePresentModeKHR {}
30275unsafe impl Sync for SurfacePresentModeKHR {}
30276
30277/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesKHR.html>
30278#[repr(C)]
30279#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30280pub struct SurfacePresentScalingCapabilitiesKHR {
30281    pub s_type: StructureType,
30282    pub next: *mut c_void,
30283    pub supported_present_scaling: PresentScalingFlagsKHR,
30284    pub supported_present_gravity_x: PresentGravityFlagsKHR,
30285    pub supported_present_gravity_y: PresentGravityFlagsKHR,
30286    pub min_scaled_image_extent: Extent2D,
30287    pub max_scaled_image_extent: Extent2D,
30288}
30289
30290impl Default for SurfacePresentScalingCapabilitiesKHR {
30291    #[inline]
30292    fn default() -> Self {
30293        Self {
30294            s_type: StructureType::SURFACE_PRESENT_SCALING_CAPABILITIES_KHR,
30295            next: ptr::null_mut(),
30296            supported_present_scaling: PresentScalingFlagsKHR::default(),
30297            supported_present_gravity_x: PresentGravityFlagsKHR::default(),
30298            supported_present_gravity_y: PresentGravityFlagsKHR::default(),
30299            min_scaled_image_extent: Extent2D::default(),
30300            max_scaled_image_extent: Extent2D::default(),
30301        }
30302    }
30303}
30304
30305unsafe impl Send for SurfacePresentScalingCapabilitiesKHR {}
30306unsafe impl Sync for SurfacePresentScalingCapabilitiesKHR {}
30307
30308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html>
30309#[repr(C)]
30310#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30311pub struct SurfaceProtectedCapabilitiesKHR {
30312    pub s_type: StructureType,
30313    pub next: *mut c_void,
30314    pub supports_protected: Bool32,
30315}
30316
30317impl Default for SurfaceProtectedCapabilitiesKHR {
30318    #[inline]
30319    fn default() -> Self {
30320        Self {
30321            s_type: StructureType::SURFACE_PROTECTED_CAPABILITIES_KHR,
30322            next: ptr::null_mut(),
30323            supports_protected: Bool32::default(),
30324        }
30325    }
30326}
30327
30328unsafe impl Send for SurfaceProtectedCapabilitiesKHR {}
30329unsafe impl Sync for SurfaceProtectedCapabilitiesKHR {}
30330
30331/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCalibratedTimestampInfoEXT.html>
30332#[repr(C)]
30333#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30334pub struct SwapchainCalibratedTimestampInfoEXT {
30335    pub s_type: StructureType,
30336    pub next: *const c_void,
30337    pub swapchain: SwapchainKHR,
30338    pub present_stage: PresentStageFlagsEXT,
30339    pub time_domain_id: u64,
30340}
30341
30342impl Default for SwapchainCalibratedTimestampInfoEXT {
30343    #[inline]
30344    fn default() -> Self {
30345        Self {
30346            s_type: StructureType::SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT,
30347            next: ptr::null(),
30348            swapchain: SwapchainKHR::default(),
30349            present_stage: PresentStageFlagsEXT::default(),
30350            time_domain_id: u64::default(),
30351        }
30352    }
30353}
30354
30355unsafe impl Send for SwapchainCalibratedTimestampInfoEXT {}
30356unsafe impl Sync for SwapchainCalibratedTimestampInfoEXT {}
30357
30358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html>
30359#[repr(C)]
30360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30361pub struct SwapchainCounterCreateInfoEXT {
30362    pub s_type: StructureType,
30363    pub next: *const c_void,
30364    pub surface_counters: SurfaceCounterFlagsEXT,
30365}
30366
30367impl Default for SwapchainCounterCreateInfoEXT {
30368    #[inline]
30369    fn default() -> Self {
30370        Self {
30371            s_type: StructureType::SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
30372            next: ptr::null(),
30373            surface_counters: SurfaceCounterFlagsEXT::default(),
30374        }
30375    }
30376}
30377
30378unsafe impl Send for SwapchainCounterCreateInfoEXT {}
30379unsafe impl Sync for SwapchainCounterCreateInfoEXT {}
30380
30381/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html>
30382#[repr(C)]
30383#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30384pub struct SwapchainCreateInfoKHR {
30385    pub s_type: StructureType,
30386    pub next: *const c_void,
30387    pub flags: SwapchainCreateFlagsKHR,
30388    pub surface: SurfaceKHR,
30389    pub min_image_count: u32,
30390    pub image_format: Format,
30391    pub image_color_space: ColorSpaceKHR,
30392    pub image_extent: Extent2D,
30393    pub image_array_layers: u32,
30394    pub image_usage: ImageUsageFlags,
30395    pub image_sharing_mode: SharingMode,
30396    pub queue_family_index_count: u32,
30397    pub queue_family_indices: *const u32,
30398    pub pre_transform: SurfaceTransformFlagsKHR,
30399    pub composite_alpha: CompositeAlphaFlagsKHR,
30400    pub present_mode: PresentModeKHR,
30401    pub clipped: Bool32,
30402    pub old_swapchain: SwapchainKHR,
30403}
30404
30405impl Default for SwapchainCreateInfoKHR {
30406    #[inline]
30407    fn default() -> Self {
30408        Self {
30409            s_type: StructureType::SWAPCHAIN_CREATE_INFO_KHR,
30410            next: ptr::null(),
30411            flags: SwapchainCreateFlagsKHR::default(),
30412            surface: SurfaceKHR::default(),
30413            min_image_count: u32::default(),
30414            image_format: Format::default(),
30415            image_color_space: ColorSpaceKHR::default(),
30416            image_extent: Extent2D::default(),
30417            image_array_layers: u32::default(),
30418            image_usage: ImageUsageFlags::default(),
30419            image_sharing_mode: SharingMode::default(),
30420            queue_family_index_count: u32::default(),
30421            queue_family_indices: ptr::null(),
30422            pre_transform: SurfaceTransformFlagsKHR::default(),
30423            composite_alpha: CompositeAlphaFlagsKHR::default(),
30424            present_mode: PresentModeKHR::default(),
30425            clipped: Bool32::default(),
30426            old_swapchain: SwapchainKHR::default(),
30427        }
30428    }
30429}
30430
30431unsafe impl Send for SwapchainCreateInfoKHR {}
30432unsafe impl Sync for SwapchainCreateInfoKHR {}
30433
30434/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html>
30435#[repr(C)]
30436#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30437pub struct SwapchainDisplayNativeHdrCreateInfoAMD {
30438    pub s_type: StructureType,
30439    pub next: *const c_void,
30440    pub local_dimming_enable: Bool32,
30441}
30442
30443impl Default for SwapchainDisplayNativeHdrCreateInfoAMD {
30444    #[inline]
30445    fn default() -> Self {
30446        Self {
30447            s_type: StructureType::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
30448            next: ptr::null(),
30449            local_dimming_enable: Bool32::default(),
30450        }
30451    }
30452}
30453
30454unsafe impl Send for SwapchainDisplayNativeHdrCreateInfoAMD {}
30455unsafe impl Sync for SwapchainDisplayNativeHdrCreateInfoAMD {}
30456
30457/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html>
30458#[repr(C)]
30459#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30460pub struct SwapchainLatencyCreateInfoNV {
30461    pub s_type: StructureType,
30462    pub next: *const c_void,
30463    pub latency_mode_enable: Bool32,
30464}
30465
30466impl Default for SwapchainLatencyCreateInfoNV {
30467    #[inline]
30468    fn default() -> Self {
30469        Self {
30470            s_type: StructureType::SWAPCHAIN_LATENCY_CREATE_INFO_NV,
30471            next: ptr::null(),
30472            latency_mode_enable: Bool32::default(),
30473        }
30474    }
30475}
30476
30477unsafe impl Send for SwapchainLatencyCreateInfoNV {}
30478unsafe impl Sync for SwapchainLatencyCreateInfoNV {}
30479
30480/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html>
30481#[repr(C)]
30482#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30483pub struct SwapchainPresentBarrierCreateInfoNV {
30484    pub s_type: StructureType,
30485    pub next: *mut c_void,
30486    pub present_barrier_enable: Bool32,
30487}
30488
30489impl Default for SwapchainPresentBarrierCreateInfoNV {
30490    #[inline]
30491    fn default() -> Self {
30492        Self {
30493            s_type: StructureType::SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV,
30494            next: ptr::null_mut(),
30495            present_barrier_enable: Bool32::default(),
30496        }
30497    }
30498}
30499
30500unsafe impl Send for SwapchainPresentBarrierCreateInfoNV {}
30501unsafe impl Sync for SwapchainPresentBarrierCreateInfoNV {}
30502
30503/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoKHR.html>
30504#[repr(C)]
30505#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30506pub struct SwapchainPresentFenceInfoKHR {
30507    pub s_type: StructureType,
30508    pub next: *const c_void,
30509    pub swapchain_count: u32,
30510    pub fences: *const Fence,
30511}
30512
30513impl Default for SwapchainPresentFenceInfoKHR {
30514    #[inline]
30515    fn default() -> Self {
30516        Self {
30517            s_type: StructureType::SWAPCHAIN_PRESENT_FENCE_INFO_KHR,
30518            next: ptr::null(),
30519            swapchain_count: u32::default(),
30520            fences: ptr::null(),
30521        }
30522    }
30523}
30524
30525unsafe impl Send for SwapchainPresentFenceInfoKHR {}
30526unsafe impl Sync for SwapchainPresentFenceInfoKHR {}
30527
30528/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoKHR.html>
30529#[repr(C)]
30530#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30531pub struct SwapchainPresentModeInfoKHR {
30532    pub s_type: StructureType,
30533    pub next: *const c_void,
30534    pub swapchain_count: u32,
30535    pub present_modes: *const PresentModeKHR,
30536}
30537
30538impl Default for SwapchainPresentModeInfoKHR {
30539    #[inline]
30540    fn default() -> Self {
30541        Self {
30542            s_type: StructureType::SWAPCHAIN_PRESENT_MODE_INFO_KHR,
30543            next: ptr::null(),
30544            swapchain_count: u32::default(),
30545            present_modes: ptr::null(),
30546        }
30547    }
30548}
30549
30550unsafe impl Send for SwapchainPresentModeInfoKHR {}
30551unsafe impl Sync for SwapchainPresentModeInfoKHR {}
30552
30553/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoKHR.html>
30554#[repr(C)]
30555#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30556pub struct SwapchainPresentModesCreateInfoKHR {
30557    pub s_type: StructureType,
30558    pub next: *const c_void,
30559    pub present_mode_count: u32,
30560    pub present_modes: *const PresentModeKHR,
30561}
30562
30563impl Default for SwapchainPresentModesCreateInfoKHR {
30564    #[inline]
30565    fn default() -> Self {
30566        Self {
30567            s_type: StructureType::SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR,
30568            next: ptr::null(),
30569            present_mode_count: u32::default(),
30570            present_modes: ptr::null(),
30571        }
30572    }
30573}
30574
30575unsafe impl Send for SwapchainPresentModesCreateInfoKHR {}
30576unsafe impl Sync for SwapchainPresentModesCreateInfoKHR {}
30577
30578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoKHR.html>
30579#[repr(C)]
30580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30581pub struct SwapchainPresentScalingCreateInfoKHR {
30582    pub s_type: StructureType,
30583    pub next: *const c_void,
30584    pub scaling_behavior: PresentScalingFlagsKHR,
30585    pub present_gravity_x: PresentGravityFlagsKHR,
30586    pub present_gravity_y: PresentGravityFlagsKHR,
30587}
30588
30589impl Default for SwapchainPresentScalingCreateInfoKHR {
30590    #[inline]
30591    fn default() -> Self {
30592        Self {
30593            s_type: StructureType::SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR,
30594            next: ptr::null(),
30595            scaling_behavior: PresentScalingFlagsKHR::default(),
30596            present_gravity_x: PresentGravityFlagsKHR::default(),
30597            present_gravity_y: PresentGravityFlagsKHR::default(),
30598        }
30599    }
30600}
30601
30602unsafe impl Send for SwapchainPresentScalingCreateInfoKHR {}
30603unsafe impl Sync for SwapchainPresentScalingCreateInfoKHR {}
30604
30605/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainTimeDomainPropertiesEXT.html>
30606#[repr(C)]
30607#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30608pub struct SwapchainTimeDomainPropertiesEXT {
30609    pub s_type: StructureType,
30610    pub next: *mut c_void,
30611    pub time_domain_count: u32,
30612    pub time_domains: *mut TimeDomainKHR,
30613    pub time_domain_ids: *mut u64,
30614}
30615
30616impl Default for SwapchainTimeDomainPropertiesEXT {
30617    #[inline]
30618    fn default() -> Self {
30619        Self {
30620            s_type: StructureType::SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT,
30621            next: ptr::null_mut(),
30622            time_domain_count: u32::default(),
30623            time_domains: ptr::null_mut(),
30624            time_domain_ids: ptr::null_mut(),
30625        }
30626    }
30627}
30628
30629unsafe impl Send for SwapchainTimeDomainPropertiesEXT {}
30630unsafe impl Sync for SwapchainTimeDomainPropertiesEXT {}
30631
30632/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainTimingPropertiesEXT.html>
30633#[repr(C)]
30634#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30635pub struct SwapchainTimingPropertiesEXT {
30636    pub s_type: StructureType,
30637    pub next: *mut c_void,
30638    pub refresh_duration: u64,
30639    pub refresh_interval: u64,
30640}
30641
30642impl Default for SwapchainTimingPropertiesEXT {
30643    #[inline]
30644    fn default() -> Self {
30645        Self {
30646            s_type: StructureType::SWAPCHAIN_TIMING_PROPERTIES_EXT,
30647            next: ptr::null_mut(),
30648            refresh_duration: u64::default(),
30649            refresh_interval: u64::default(),
30650        }
30651    }
30652}
30653
30654unsafe impl Send for SwapchainTimingPropertiesEXT {}
30655unsafe impl Sync for SwapchainTimingPropertiesEXT {}
30656
30657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html>
30658#[repr(C)]
30659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30660pub struct SysmemColorSpaceFUCHSIA {
30661    pub s_type: StructureType,
30662    pub next: *const c_void,
30663    pub color_space: u32,
30664}
30665
30666impl Default for SysmemColorSpaceFUCHSIA {
30667    #[inline]
30668    fn default() -> Self {
30669        Self {
30670            s_type: StructureType::SYSMEM_COLOR_SPACE_FUCHSIA,
30671            next: ptr::null(),
30672            color_space: u32::default(),
30673        }
30674    }
30675}
30676
30677unsafe impl Send for SysmemColorSpaceFUCHSIA {}
30678unsafe impl Sync for SysmemColorSpaceFUCHSIA {}
30679
30680/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCaptureDescriptorDataInfoARM.html>
30681#[repr(C)]
30682#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30683pub struct TensorCaptureDescriptorDataInfoARM {
30684    pub s_type: StructureType,
30685    pub next: *const c_void,
30686    pub tensor: TensorARM,
30687}
30688
30689impl Default for TensorCaptureDescriptorDataInfoARM {
30690    #[inline]
30691    fn default() -> Self {
30692        Self {
30693            s_type: StructureType::TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
30694            next: ptr::null(),
30695            tensor: TensorARM::default(),
30696        }
30697    }
30698}
30699
30700unsafe impl Send for TensorCaptureDescriptorDataInfoARM {}
30701unsafe impl Sync for TensorCaptureDescriptorDataInfoARM {}
30702
30703/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCopyARM.html>
30704#[repr(C)]
30705#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30706pub struct TensorCopyARM {
30707    pub s_type: StructureType,
30708    pub next: *const c_void,
30709    pub dimension_count: u32,
30710    pub src_offset: *const u64,
30711    pub dst_offset: *const u64,
30712    pub extent: *const u64,
30713}
30714
30715impl Default for TensorCopyARM {
30716    #[inline]
30717    fn default() -> Self {
30718        Self {
30719            s_type: StructureType::TENSOR_COPY_ARM,
30720            next: ptr::null(),
30721            dimension_count: u32::default(),
30722            src_offset: ptr::null(),
30723            dst_offset: ptr::null(),
30724            extent: ptr::null(),
30725        }
30726    }
30727}
30728
30729unsafe impl Send for TensorCopyARM {}
30730unsafe impl Sync for TensorCopyARM {}
30731
30732/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorCreateInfoARM.html>
30733#[repr(C)]
30734#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30735pub struct TensorCreateInfoARM {
30736    pub s_type: StructureType,
30737    pub next: *const c_void,
30738    pub flags: TensorCreateFlagsARM,
30739    pub description: *const TensorDescriptionARM,
30740    pub sharing_mode: SharingMode,
30741    pub queue_family_index_count: u32,
30742    pub queue_family_indices: *const u32,
30743}
30744
30745impl Default for TensorCreateInfoARM {
30746    #[inline]
30747    fn default() -> Self {
30748        Self {
30749            s_type: StructureType::TENSOR_CREATE_INFO_ARM,
30750            next: ptr::null(),
30751            flags: TensorCreateFlagsARM::default(),
30752            description: ptr::null(),
30753            sharing_mode: SharingMode::default(),
30754            queue_family_index_count: u32::default(),
30755            queue_family_indices: ptr::null(),
30756        }
30757    }
30758}
30759
30760unsafe impl Send for TensorCreateInfoARM {}
30761unsafe impl Sync for TensorCreateInfoARM {}
30762
30763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDependencyInfoARM.html>
30764#[repr(C)]
30765#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30766pub struct TensorDependencyInfoARM {
30767    pub s_type: StructureType,
30768    pub next: *const c_void,
30769    pub tensor_memory_barrier_count: u32,
30770    pub tensor_memory_barriers: *const TensorMemoryBarrierARM,
30771}
30772
30773impl Default for TensorDependencyInfoARM {
30774    #[inline]
30775    fn default() -> Self {
30776        Self {
30777            s_type: StructureType::TENSOR_DEPENDENCY_INFO_ARM,
30778            next: ptr::null(),
30779            tensor_memory_barrier_count: u32::default(),
30780            tensor_memory_barriers: ptr::null(),
30781        }
30782    }
30783}
30784
30785unsafe impl Send for TensorDependencyInfoARM {}
30786unsafe impl Sync for TensorDependencyInfoARM {}
30787
30788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorDescriptionARM.html>
30789#[repr(C)]
30790#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30791pub struct TensorDescriptionARM {
30792    pub s_type: StructureType,
30793    pub next: *const c_void,
30794    pub tiling: TensorTilingARM,
30795    pub format: Format,
30796    pub dimension_count: u32,
30797    pub dimensions: *const i64,
30798    pub strides: *const i64,
30799    pub usage: TensorUsageFlagsARM,
30800}
30801
30802impl Default for TensorDescriptionARM {
30803    #[inline]
30804    fn default() -> Self {
30805        Self {
30806            s_type: StructureType::TENSOR_DESCRIPTION_ARM,
30807            next: ptr::null(),
30808            tiling: TensorTilingARM::default(),
30809            format: Format::default(),
30810            dimension_count: u32::default(),
30811            dimensions: ptr::null(),
30812            strides: ptr::null(),
30813            usage: TensorUsageFlagsARM::default(),
30814        }
30815    }
30816}
30817
30818unsafe impl Send for TensorDescriptionARM {}
30819unsafe impl Sync for TensorDescriptionARM {}
30820
30821/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorFormatPropertiesARM.html>
30822#[repr(C)]
30823#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30824pub struct TensorFormatPropertiesARM {
30825    pub s_type: StructureType,
30826    pub next: *mut c_void,
30827    pub optimal_tiling_tensor_features: FormatFeatureFlags2,
30828    pub linear_tiling_tensor_features: FormatFeatureFlags2,
30829}
30830
30831impl Default for TensorFormatPropertiesARM {
30832    #[inline]
30833    fn default() -> Self {
30834        Self {
30835            s_type: StructureType::TENSOR_FORMAT_PROPERTIES_ARM,
30836            next: ptr::null_mut(),
30837            optimal_tiling_tensor_features: FormatFeatureFlags2::default(),
30838            linear_tiling_tensor_features: FormatFeatureFlags2::default(),
30839        }
30840    }
30841}
30842
30843unsafe impl Send for TensorFormatPropertiesARM {}
30844unsafe impl Sync for TensorFormatPropertiesARM {}
30845
30846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryBarrierARM.html>
30847#[repr(C)]
30848#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30849pub struct TensorMemoryBarrierARM {
30850    pub s_type: StructureType,
30851    pub next: *const c_void,
30852    pub src_stage_mask: PipelineStageFlags2,
30853    pub src_access_mask: AccessFlags2,
30854    pub dst_stage_mask: PipelineStageFlags2,
30855    pub dst_access_mask: AccessFlags2,
30856    pub src_queue_family_index: u32,
30857    pub dst_queue_family_index: u32,
30858    pub tensor: TensorARM,
30859}
30860
30861impl Default for TensorMemoryBarrierARM {
30862    #[inline]
30863    fn default() -> Self {
30864        Self {
30865            s_type: StructureType::TENSOR_MEMORY_BARRIER_ARM,
30866            next: ptr::null(),
30867            src_stage_mask: PipelineStageFlags2::default(),
30868            src_access_mask: AccessFlags2::default(),
30869            dst_stage_mask: PipelineStageFlags2::default(),
30870            dst_access_mask: AccessFlags2::default(),
30871            src_queue_family_index: u32::default(),
30872            dst_queue_family_index: u32::default(),
30873            tensor: TensorARM::default(),
30874        }
30875    }
30876}
30877
30878unsafe impl Send for TensorMemoryBarrierARM {}
30879unsafe impl Sync for TensorMemoryBarrierARM {}
30880
30881/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorMemoryRequirementsInfoARM.html>
30882#[repr(C)]
30883#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30884pub struct TensorMemoryRequirementsInfoARM {
30885    pub s_type: StructureType,
30886    pub next: *const c_void,
30887    pub tensor: TensorARM,
30888}
30889
30890impl Default for TensorMemoryRequirementsInfoARM {
30891    #[inline]
30892    fn default() -> Self {
30893        Self {
30894            s_type: StructureType::TENSOR_MEMORY_REQUIREMENTS_INFO_ARM,
30895            next: ptr::null(),
30896            tensor: TensorARM::default(),
30897        }
30898    }
30899}
30900
30901unsafe impl Send for TensorMemoryRequirementsInfoARM {}
30902unsafe impl Sync for TensorMemoryRequirementsInfoARM {}
30903
30904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCaptureDescriptorDataInfoARM.html>
30905#[repr(C)]
30906#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30907pub struct TensorViewCaptureDescriptorDataInfoARM {
30908    pub s_type: StructureType,
30909    pub next: *const c_void,
30910    pub tensor_view: TensorViewARM,
30911}
30912
30913impl Default for TensorViewCaptureDescriptorDataInfoARM {
30914    #[inline]
30915    fn default() -> Self {
30916        Self {
30917            s_type: StructureType::TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM,
30918            next: ptr::null(),
30919            tensor_view: TensorViewARM::default(),
30920        }
30921    }
30922}
30923
30924unsafe impl Send for TensorViewCaptureDescriptorDataInfoARM {}
30925unsafe impl Sync for TensorViewCaptureDescriptorDataInfoARM {}
30926
30927/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTensorViewCreateInfoARM.html>
30928#[repr(C)]
30929#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30930pub struct TensorViewCreateInfoARM {
30931    pub s_type: StructureType,
30932    pub next: *const c_void,
30933    pub flags: TensorViewCreateFlagsARM,
30934    pub tensor: TensorARM,
30935    pub format: Format,
30936}
30937
30938impl Default for TensorViewCreateInfoARM {
30939    #[inline]
30940    fn default() -> Self {
30941        Self {
30942            s_type: StructureType::TENSOR_VIEW_CREATE_INFO_ARM,
30943            next: ptr::null(),
30944            flags: TensorViewCreateFlagsARM::default(),
30945            tensor: TensorARM::default(),
30946            format: Format::default(),
30947        }
30948    }
30949}
30950
30951unsafe impl Send for TensorViewCreateInfoARM {}
30952unsafe impl Sync for TensorViewCreateInfoARM {}
30953
30954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTexelBufferDescriptorInfoEXT.html>
30955#[repr(C)]
30956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30957pub struct TexelBufferDescriptorInfoEXT {
30958    pub s_type: StructureType,
30959    pub next: *const c_void,
30960    pub format: Format,
30961    pub address_range: DeviceAddressRangeEXT,
30962}
30963
30964impl Default for TexelBufferDescriptorInfoEXT {
30965    #[inline]
30966    fn default() -> Self {
30967        Self {
30968            s_type: StructureType::TEXEL_BUFFER_DESCRIPTOR_INFO_EXT,
30969            next: ptr::null(),
30970            format: Format::default(),
30971            address_range: DeviceAddressRangeEXT::default(),
30972        }
30973    }
30974}
30975
30976unsafe impl Send for TexelBufferDescriptorInfoEXT {}
30977unsafe impl Sync for TexelBufferDescriptorInfoEXT {}
30978
30979/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html>
30980#[repr(C)]
30981#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
30982pub struct TextureLODGatherFormatPropertiesAMD {
30983    pub s_type: StructureType,
30984    pub next: *mut c_void,
30985    pub supports_texture_gather_lod_bias_amd: Bool32,
30986}
30987
30988impl Default for TextureLODGatherFormatPropertiesAMD {
30989    #[inline]
30990    fn default() -> Self {
30991        Self {
30992            s_type: StructureType::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
30993            next: ptr::null_mut(),
30994            supports_texture_gather_lod_bias_amd: Bool32::default(),
30995        }
30996    }
30997}
30998
30999unsafe impl Send for TextureLODGatherFormatPropertiesAMD {}
31000unsafe impl Sync for TextureLODGatherFormatPropertiesAMD {}
31001
31002/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryBindInfoQCOM.html>
31003#[repr(C)]
31004#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31005pub struct TileMemoryBindInfoQCOM {
31006    pub s_type: StructureType,
31007    pub next: *const c_void,
31008    pub memory: DeviceMemory,
31009}
31010
31011impl Default for TileMemoryBindInfoQCOM {
31012    #[inline]
31013    fn default() -> Self {
31014        Self {
31015            s_type: StructureType::TILE_MEMORY_BIND_INFO_QCOM,
31016            next: ptr::null(),
31017            memory: DeviceMemory::default(),
31018        }
31019    }
31020}
31021
31022unsafe impl Send for TileMemoryBindInfoQCOM {}
31023unsafe impl Sync for TileMemoryBindInfoQCOM {}
31024
31025/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemoryRequirementsQCOM.html>
31026#[repr(C)]
31027#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31028pub struct TileMemoryRequirementsQCOM {
31029    pub s_type: StructureType,
31030    pub next: *mut c_void,
31031    pub size: DeviceSize,
31032    pub alignment: DeviceSize,
31033}
31034
31035impl Default for TileMemoryRequirementsQCOM {
31036    #[inline]
31037    fn default() -> Self {
31038        Self {
31039            s_type: StructureType::TILE_MEMORY_REQUIREMENTS_QCOM,
31040            next: ptr::null_mut(),
31041            size: DeviceSize::default(),
31042            alignment: DeviceSize::default(),
31043        }
31044    }
31045}
31046
31047unsafe impl Send for TileMemoryRequirementsQCOM {}
31048unsafe impl Sync for TileMemoryRequirementsQCOM {}
31049
31050/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTileMemorySizeInfoQCOM.html>
31051#[repr(C)]
31052#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31053pub struct TileMemorySizeInfoQCOM {
31054    pub s_type: StructureType,
31055    pub next: *const c_void,
31056    pub size: DeviceSize,
31057}
31058
31059impl Default for TileMemorySizeInfoQCOM {
31060    #[inline]
31061    fn default() -> Self {
31062        Self {
31063            s_type: StructureType::TILE_MEMORY_SIZE_INFO_QCOM,
31064            next: ptr::null(),
31065            size: DeviceSize::default(),
31066        }
31067    }
31068}
31069
31070unsafe impl Send for TileMemorySizeInfoQCOM {}
31071unsafe impl Sync for TileMemorySizeInfoQCOM {}
31072
31073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html>
31074#[repr(C)]
31075#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31076pub struct TilePropertiesQCOM {
31077    pub s_type: StructureType,
31078    pub next: *mut c_void,
31079    pub tile_size: Extent3D,
31080    pub apron_size: Extent2D,
31081    pub origin: Offset2D,
31082}
31083
31084impl Default for TilePropertiesQCOM {
31085    #[inline]
31086    fn default() -> Self {
31087        Self {
31088            s_type: StructureType::TILE_PROPERTIES_QCOM,
31089            next: ptr::null_mut(),
31090            tile_size: Extent3D::default(),
31091            apron_size: Extent2D::default(),
31092            origin: Offset2D::default(),
31093        }
31094    }
31095}
31096
31097unsafe impl Send for TilePropertiesQCOM {}
31098unsafe impl Sync for TilePropertiesQCOM {}
31099
31100/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html>
31101#[repr(C)]
31102#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31103pub struct TimelineSemaphoreSubmitInfo {
31104    pub s_type: StructureType,
31105    pub next: *const c_void,
31106    pub wait_semaphore_value_count: u32,
31107    pub wait_semaphore_values: *const u64,
31108    pub signal_semaphore_value_count: u32,
31109    pub signal_semaphore_values: *const u64,
31110}
31111
31112impl Default for TimelineSemaphoreSubmitInfo {
31113    #[inline]
31114    fn default() -> Self {
31115        Self {
31116            s_type: StructureType::TIMELINE_SEMAPHORE_SUBMIT_INFO,
31117            next: ptr::null(),
31118            wait_semaphore_value_count: u32::default(),
31119            wait_semaphore_values: ptr::null(),
31120            signal_semaphore_value_count: u32::default(),
31121            signal_semaphore_values: ptr::null(),
31122        }
31123    }
31124}
31125
31126unsafe impl Send for TimelineSemaphoreSubmitInfo {}
31127unsafe impl Sync for TimelineSemaphoreSubmitInfo {}
31128
31129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html>
31130#[repr(C)]
31131#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31132pub struct TraceRaysIndirectCommand2KHR {
31133    pub raygen_shader_record_address: DeviceAddress,
31134    pub raygen_shader_record_size: DeviceSize,
31135    pub miss_shader_binding_table_address: DeviceAddress,
31136    pub miss_shader_binding_table_size: DeviceSize,
31137    pub miss_shader_binding_table_stride: DeviceSize,
31138    pub hit_shader_binding_table_address: DeviceAddress,
31139    pub hit_shader_binding_table_size: DeviceSize,
31140    pub hit_shader_binding_table_stride: DeviceSize,
31141    pub callable_shader_binding_table_address: DeviceAddress,
31142    pub callable_shader_binding_table_size: DeviceSize,
31143    pub callable_shader_binding_table_stride: DeviceSize,
31144    pub width: u32,
31145    pub height: u32,
31146    pub depth: u32,
31147}
31148
31149/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html>
31150#[repr(C)]
31151#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31152pub struct TraceRaysIndirectCommandKHR {
31153    pub width: u32,
31154    pub height: u32,
31155    pub depth: u32,
31156}
31157
31158/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html>
31159#[repr(C)]
31160#[derive(Copy, Clone, Default, Debug, PartialEq)]
31161pub struct TransformMatrixKHR {
31162    pub matrix: [[f32; 4]; 3],
31163}
31164
31165/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkUbmSurfaceCreateInfoSEC.html>
31166#[repr(C)]
31167#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31168pub struct UbmSurfaceCreateInfoSEC {
31169    pub s_type: StructureType,
31170    pub next: *const c_void,
31171    pub flags: UbmSurfaceCreateFlagsSEC,
31172    pub ubm_device: *mut ubm_device,
31173    pub ubm_surface: *mut ubm_surface,
31174}
31175
31176impl Default for UbmSurfaceCreateInfoSEC {
31177    #[inline]
31178    fn default() -> Self {
31179        Self {
31180            s_type: StructureType::UBM_SURFACE_CREATE_INFO_SEC,
31181            next: ptr::null(),
31182            flags: UbmSurfaceCreateFlagsSEC::default(),
31183            ubm_device: ptr::null_mut(),
31184            ubm_surface: ptr::null_mut(),
31185        }
31186    }
31187}
31188
31189unsafe impl Send for UbmSurfaceCreateInfoSEC {}
31190unsafe impl Sync for UbmSurfaceCreateInfoSEC {}
31191
31192/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html>
31193#[repr(C)]
31194#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31195pub struct ValidationCacheCreateInfoEXT {
31196    pub s_type: StructureType,
31197    pub next: *const c_void,
31198    pub flags: ValidationCacheCreateFlagsEXT,
31199    pub initial_data_size: usize,
31200    pub initial_data: *const c_void,
31201}
31202
31203impl Default for ValidationCacheCreateInfoEXT {
31204    #[inline]
31205    fn default() -> Self {
31206        Self {
31207            s_type: StructureType::VALIDATION_CACHE_CREATE_INFO_EXT,
31208            next: ptr::null(),
31209            flags: ValidationCacheCreateFlagsEXT::default(),
31210            initial_data_size: usize::default(),
31211            initial_data: ptr::null(),
31212        }
31213    }
31214}
31215
31216unsafe impl Send for ValidationCacheCreateInfoEXT {}
31217unsafe impl Sync for ValidationCacheCreateInfoEXT {}
31218
31219/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html>
31220#[repr(C)]
31221#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31222pub struct ValidationFeaturesEXT {
31223    pub s_type: StructureType,
31224    pub next: *const c_void,
31225    pub enabled_validation_feature_count: u32,
31226    pub enabled_validation_features: *const ValidationFeatureEnableEXT,
31227    pub disabled_validation_feature_count: u32,
31228    pub disabled_validation_features: *const ValidationFeatureDisableEXT,
31229}
31230
31231impl Default for ValidationFeaturesEXT {
31232    #[inline]
31233    fn default() -> Self {
31234        Self {
31235            s_type: StructureType::VALIDATION_FEATURES_EXT,
31236            next: ptr::null(),
31237            enabled_validation_feature_count: u32::default(),
31238            enabled_validation_features: ptr::null(),
31239            disabled_validation_feature_count: u32::default(),
31240            disabled_validation_features: ptr::null(),
31241        }
31242    }
31243}
31244
31245unsafe impl Send for ValidationFeaturesEXT {}
31246unsafe impl Sync for ValidationFeaturesEXT {}
31247
31248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html>
31249#[repr(C)]
31250#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31251pub struct ValidationFlagsEXT {
31252    pub s_type: StructureType,
31253    pub next: *const c_void,
31254    pub disabled_validation_check_count: u32,
31255    pub disabled_validation_checks: *const ValidationCheckEXT,
31256}
31257
31258impl Default for ValidationFlagsEXT {
31259    #[inline]
31260    fn default() -> Self {
31261        Self {
31262            s_type: StructureType::VALIDATION_FLAGS_EXT,
31263            next: ptr::null(),
31264            disabled_validation_check_count: u32::default(),
31265            disabled_validation_checks: ptr::null(),
31266        }
31267    }
31268}
31269
31270unsafe impl Send for ValidationFlagsEXT {}
31271unsafe impl Sync for ValidationFlagsEXT {}
31272
31273/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html>
31274#[repr(C)]
31275#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31276pub struct VertexInputAttributeDescription {
31277    pub location: u32,
31278    pub binding: u32,
31279    pub format: Format,
31280    pub offset: u32,
31281}
31282
31283/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html>
31284#[repr(C)]
31285#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31286pub struct VertexInputAttributeDescription2EXT {
31287    pub s_type: StructureType,
31288    pub next: *mut c_void,
31289    pub location: u32,
31290    pub binding: u32,
31291    pub format: Format,
31292    pub offset: u32,
31293}
31294
31295impl Default for VertexInputAttributeDescription2EXT {
31296    #[inline]
31297    fn default() -> Self {
31298        Self {
31299            s_type: StructureType::VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
31300            next: ptr::null_mut(),
31301            location: u32::default(),
31302            binding: u32::default(),
31303            format: Format::default(),
31304            offset: u32::default(),
31305        }
31306    }
31307}
31308
31309unsafe impl Send for VertexInputAttributeDescription2EXT {}
31310unsafe impl Sync for VertexInputAttributeDescription2EXT {}
31311
31312/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html>
31313#[repr(C)]
31314#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31315pub struct VertexInputBindingDescription {
31316    pub binding: u32,
31317    pub stride: u32,
31318    pub input_rate: VertexInputRate,
31319}
31320
31321/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html>
31322#[repr(C)]
31323#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31324pub struct VertexInputBindingDescription2EXT {
31325    pub s_type: StructureType,
31326    pub next: *mut c_void,
31327    pub binding: u32,
31328    pub stride: u32,
31329    pub input_rate: VertexInputRate,
31330    pub divisor: u32,
31331}
31332
31333impl Default for VertexInputBindingDescription2EXT {
31334    #[inline]
31335    fn default() -> Self {
31336        Self {
31337            s_type: StructureType::VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
31338            next: ptr::null_mut(),
31339            binding: u32::default(),
31340            stride: u32::default(),
31341            input_rate: VertexInputRate::default(),
31342            divisor: u32::default(),
31343        }
31344    }
31345}
31346
31347unsafe impl Send for VertexInputBindingDescription2EXT {}
31348unsafe impl Sync for VertexInputBindingDescription2EXT {}
31349
31350/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html>
31351#[repr(C)]
31352#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
31353pub struct VertexInputBindingDivisorDescription {
31354    pub binding: u32,
31355    pub divisor: u32,
31356}
31357
31358/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html>
31359#[repr(C)]
31360#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31361pub struct ViSurfaceCreateInfoNN {
31362    pub s_type: StructureType,
31363    pub next: *const c_void,
31364    pub flags: ViSurfaceCreateFlagsNN,
31365    pub window: *mut c_void,
31366}
31367
31368impl Default for ViSurfaceCreateInfoNN {
31369    #[inline]
31370    fn default() -> Self {
31371        Self {
31372            s_type: StructureType::VI_SURFACE_CREATE_INFO_NN,
31373            next: ptr::null(),
31374            flags: ViSurfaceCreateFlagsNN::default(),
31375            window: ptr::null_mut(),
31376        }
31377    }
31378}
31379
31380unsafe impl Send for ViSurfaceCreateInfoNN {}
31381unsafe impl Sync for ViSurfaceCreateInfoNN {}
31382
31383/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html>
31384#[repr(C)]
31385#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31386pub struct VideoBeginCodingInfoKHR {
31387    pub s_type: StructureType,
31388    pub next: *const c_void,
31389    pub flags: VideoBeginCodingFlagsKHR,
31390    pub video_session: VideoSessionKHR,
31391    pub video_session_parameters: VideoSessionParametersKHR,
31392    pub reference_slot_count: u32,
31393    pub reference_slots: *const VideoReferenceSlotInfoKHR,
31394}
31395
31396impl Default for VideoBeginCodingInfoKHR {
31397    #[inline]
31398    fn default() -> Self {
31399        Self {
31400            s_type: StructureType::VIDEO_BEGIN_CODING_INFO_KHR,
31401            next: ptr::null(),
31402            flags: VideoBeginCodingFlagsKHR::default(),
31403            video_session: VideoSessionKHR::default(),
31404            video_session_parameters: VideoSessionParametersKHR::default(),
31405            reference_slot_count: u32::default(),
31406            reference_slots: ptr::null(),
31407        }
31408    }
31409}
31410
31411unsafe impl Send for VideoBeginCodingInfoKHR {}
31412unsafe impl Sync for VideoBeginCodingInfoKHR {}
31413
31414/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html>
31415#[repr(C)]
31416#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31417pub struct VideoCapabilitiesKHR {
31418    pub s_type: StructureType,
31419    pub next: *mut c_void,
31420    pub flags: VideoCapabilityFlagsKHR,
31421    pub min_bitstream_buffer_offset_alignment: DeviceSize,
31422    pub min_bitstream_buffer_size_alignment: DeviceSize,
31423    pub picture_access_granularity: Extent2D,
31424    pub min_coded_extent: Extent2D,
31425    pub max_coded_extent: Extent2D,
31426    pub max_dpb_slots: u32,
31427    pub max_active_reference_pictures: u32,
31428    pub std_header_version: ExtensionProperties,
31429}
31430
31431impl Default for VideoCapabilitiesKHR {
31432    #[inline]
31433    fn default() -> Self {
31434        Self {
31435            s_type: StructureType::VIDEO_CAPABILITIES_KHR,
31436            next: ptr::null_mut(),
31437            flags: VideoCapabilityFlagsKHR::default(),
31438            min_bitstream_buffer_offset_alignment: DeviceSize::default(),
31439            min_bitstream_buffer_size_alignment: DeviceSize::default(),
31440            picture_access_granularity: Extent2D::default(),
31441            min_coded_extent: Extent2D::default(),
31442            max_coded_extent: Extent2D::default(),
31443            max_dpb_slots: u32::default(),
31444            max_active_reference_pictures: u32::default(),
31445            std_header_version: ExtensionProperties::default(),
31446        }
31447    }
31448}
31449
31450unsafe impl Send for VideoCapabilitiesKHR {}
31451unsafe impl Sync for VideoCapabilitiesKHR {}
31452
31453/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html>
31454#[repr(C)]
31455#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31456pub struct VideoCodingControlInfoKHR {
31457    pub s_type: StructureType,
31458    pub next: *const c_void,
31459    pub flags: VideoCodingControlFlagsKHR,
31460}
31461
31462impl Default for VideoCodingControlInfoKHR {
31463    #[inline]
31464    fn default() -> Self {
31465        Self {
31466            s_type: StructureType::VIDEO_CODING_CONTROL_INFO_KHR,
31467            next: ptr::null(),
31468            flags: VideoCodingControlFlagsKHR::default(),
31469        }
31470    }
31471}
31472
31473unsafe impl Send for VideoCodingControlInfoKHR {}
31474unsafe impl Sync for VideoCodingControlInfoKHR {}
31475
31476/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html>
31477#[repr(C)]
31478#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31479pub struct VideoDecodeAV1CapabilitiesKHR {
31480    pub s_type: StructureType,
31481    pub next: *mut c_void,
31482    pub max_level: video::StdVideoAV1Level,
31483}
31484
31485impl Default for VideoDecodeAV1CapabilitiesKHR {
31486    #[inline]
31487    fn default() -> Self {
31488        Self {
31489            s_type: StructureType::VIDEO_DECODE_AV1_CAPABILITIES_KHR,
31490            next: ptr::null_mut(),
31491            max_level: video::StdVideoAV1Level::default(),
31492        }
31493    }
31494}
31495
31496unsafe impl Send for VideoDecodeAV1CapabilitiesKHR {}
31497unsafe impl Sync for VideoDecodeAV1CapabilitiesKHR {}
31498
31499/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html>
31500#[repr(C)]
31501#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31502pub struct VideoDecodeAV1DpbSlotInfoKHR {
31503    pub s_type: StructureType,
31504    pub next: *const c_void,
31505    pub std_reference_info: *const video::StdVideoDecodeAV1ReferenceInfo,
31506}
31507
31508impl Default for VideoDecodeAV1DpbSlotInfoKHR {
31509    #[inline]
31510    fn default() -> Self {
31511        Self {
31512            s_type: StructureType::VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR,
31513            next: ptr::null(),
31514            std_reference_info: ptr::null(),
31515        }
31516    }
31517}
31518
31519unsafe impl Send for VideoDecodeAV1DpbSlotInfoKHR {}
31520unsafe impl Sync for VideoDecodeAV1DpbSlotInfoKHR {}
31521
31522/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html>
31523#[repr(C)]
31524#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31525pub struct VideoDecodeAV1InlineSessionParametersInfoKHR {
31526    pub s_type: StructureType,
31527    pub next: *const c_void,
31528    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
31529}
31530
31531impl Default for VideoDecodeAV1InlineSessionParametersInfoKHR {
31532    #[inline]
31533    fn default() -> Self {
31534        Self {
31535            s_type: StructureType::VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR,
31536            next: ptr::null(),
31537            std_sequence_header: ptr::null(),
31538        }
31539    }
31540}
31541
31542unsafe impl Send for VideoDecodeAV1InlineSessionParametersInfoKHR {}
31543unsafe impl Sync for VideoDecodeAV1InlineSessionParametersInfoKHR {}
31544
31545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html>
31546#[repr(C)]
31547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31548pub struct VideoDecodeAV1PictureInfoKHR {
31549    pub s_type: StructureType,
31550    pub next: *const c_void,
31551    pub std_picture_info: *const video::StdVideoDecodeAV1PictureInfo,
31552    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
31553    pub frame_header_offset: u32,
31554    pub tile_count: u32,
31555    pub tile_offsets: *const u32,
31556    pub tile_sizes: *const u32,
31557}
31558
31559impl Default for VideoDecodeAV1PictureInfoKHR {
31560    #[inline]
31561    fn default() -> Self {
31562        Self {
31563            s_type: StructureType::VIDEO_DECODE_AV1_PICTURE_INFO_KHR,
31564            next: ptr::null(),
31565            std_picture_info: ptr::null(),
31566            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
31567            frame_header_offset: u32::default(),
31568            tile_count: u32::default(),
31569            tile_offsets: ptr::null(),
31570            tile_sizes: ptr::null(),
31571        }
31572    }
31573}
31574
31575unsafe impl Send for VideoDecodeAV1PictureInfoKHR {}
31576unsafe impl Sync for VideoDecodeAV1PictureInfoKHR {}
31577
31578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html>
31579#[repr(C)]
31580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31581pub struct VideoDecodeAV1ProfileInfoKHR {
31582    pub s_type: StructureType,
31583    pub next: *const c_void,
31584    pub std_profile: video::StdVideoAV1Profile,
31585    pub film_grain_support: Bool32,
31586}
31587
31588impl Default for VideoDecodeAV1ProfileInfoKHR {
31589    #[inline]
31590    fn default() -> Self {
31591        Self {
31592            s_type: StructureType::VIDEO_DECODE_AV1_PROFILE_INFO_KHR,
31593            next: ptr::null(),
31594            std_profile: video::StdVideoAV1Profile::default(),
31595            film_grain_support: Bool32::default(),
31596        }
31597    }
31598}
31599
31600unsafe impl Send for VideoDecodeAV1ProfileInfoKHR {}
31601unsafe impl Sync for VideoDecodeAV1ProfileInfoKHR {}
31602
31603/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html>
31604#[repr(C)]
31605#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31606pub struct VideoDecodeAV1SessionParametersCreateInfoKHR {
31607    pub s_type: StructureType,
31608    pub next: *const c_void,
31609    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
31610}
31611
31612impl Default for VideoDecodeAV1SessionParametersCreateInfoKHR {
31613    #[inline]
31614    fn default() -> Self {
31615        Self {
31616            s_type: StructureType::VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
31617            next: ptr::null(),
31618            std_sequence_header: ptr::null(),
31619        }
31620    }
31621}
31622
31623unsafe impl Send for VideoDecodeAV1SessionParametersCreateInfoKHR {}
31624unsafe impl Sync for VideoDecodeAV1SessionParametersCreateInfoKHR {}
31625
31626/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html>
31627#[repr(C)]
31628#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31629pub struct VideoDecodeCapabilitiesKHR {
31630    pub s_type: StructureType,
31631    pub next: *mut c_void,
31632    pub flags: VideoDecodeCapabilityFlagsKHR,
31633}
31634
31635impl Default for VideoDecodeCapabilitiesKHR {
31636    #[inline]
31637    fn default() -> Self {
31638        Self {
31639            s_type: StructureType::VIDEO_DECODE_CAPABILITIES_KHR,
31640            next: ptr::null_mut(),
31641            flags: VideoDecodeCapabilityFlagsKHR::default(),
31642        }
31643    }
31644}
31645
31646unsafe impl Send for VideoDecodeCapabilitiesKHR {}
31647unsafe impl Sync for VideoDecodeCapabilitiesKHR {}
31648
31649/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html>
31650#[repr(C)]
31651#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31652pub struct VideoDecodeH264CapabilitiesKHR {
31653    pub s_type: StructureType,
31654    pub next: *mut c_void,
31655    pub max_level_idc: video::StdVideoH264LevelIdc,
31656    pub field_offset_granularity: Offset2D,
31657}
31658
31659impl Default for VideoDecodeH264CapabilitiesKHR {
31660    #[inline]
31661    fn default() -> Self {
31662        Self {
31663            s_type: StructureType::VIDEO_DECODE_H264_CAPABILITIES_KHR,
31664            next: ptr::null_mut(),
31665            max_level_idc: video::StdVideoH264LevelIdc::default(),
31666            field_offset_granularity: Offset2D::default(),
31667        }
31668    }
31669}
31670
31671unsafe impl Send for VideoDecodeH264CapabilitiesKHR {}
31672unsafe impl Sync for VideoDecodeH264CapabilitiesKHR {}
31673
31674/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html>
31675#[repr(C)]
31676#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31677pub struct VideoDecodeH264DpbSlotInfoKHR {
31678    pub s_type: StructureType,
31679    pub next: *const c_void,
31680    pub std_reference_info: *const video::StdVideoDecodeH264ReferenceInfo,
31681}
31682
31683impl Default for VideoDecodeH264DpbSlotInfoKHR {
31684    #[inline]
31685    fn default() -> Self {
31686        Self {
31687            s_type: StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR,
31688            next: ptr::null(),
31689            std_reference_info: ptr::null(),
31690        }
31691    }
31692}
31693
31694unsafe impl Send for VideoDecodeH264DpbSlotInfoKHR {}
31695unsafe impl Sync for VideoDecodeH264DpbSlotInfoKHR {}
31696
31697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html>
31698#[repr(C)]
31699#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31700pub struct VideoDecodeH264InlineSessionParametersInfoKHR {
31701    pub s_type: StructureType,
31702    pub next: *const c_void,
31703    pub std_sps: *const video::StdVideoH264SequenceParameterSet,
31704    pub std_pps: *const video::StdVideoH264PictureParameterSet,
31705}
31706
31707impl Default for VideoDecodeH264InlineSessionParametersInfoKHR {
31708    #[inline]
31709    fn default() -> Self {
31710        Self {
31711            s_type: StructureType::VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR,
31712            next: ptr::null(),
31713            std_sps: ptr::null(),
31714            std_pps: ptr::null(),
31715        }
31716    }
31717}
31718
31719unsafe impl Send for VideoDecodeH264InlineSessionParametersInfoKHR {}
31720unsafe impl Sync for VideoDecodeH264InlineSessionParametersInfoKHR {}
31721
31722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html>
31723#[repr(C)]
31724#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31725pub struct VideoDecodeH264PictureInfoKHR {
31726    pub s_type: StructureType,
31727    pub next: *const c_void,
31728    pub std_picture_info: *const video::StdVideoDecodeH264PictureInfo,
31729    pub slice_count: u32,
31730    pub slice_offsets: *const u32,
31731}
31732
31733impl Default for VideoDecodeH264PictureInfoKHR {
31734    #[inline]
31735    fn default() -> Self {
31736        Self {
31737            s_type: StructureType::VIDEO_DECODE_H264_PICTURE_INFO_KHR,
31738            next: ptr::null(),
31739            std_picture_info: ptr::null(),
31740            slice_count: u32::default(),
31741            slice_offsets: ptr::null(),
31742        }
31743    }
31744}
31745
31746unsafe impl Send for VideoDecodeH264PictureInfoKHR {}
31747unsafe impl Sync for VideoDecodeH264PictureInfoKHR {}
31748
31749/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html>
31750#[repr(C)]
31751#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31752pub struct VideoDecodeH264ProfileInfoKHR {
31753    pub s_type: StructureType,
31754    pub next: *const c_void,
31755    pub std_profile_idc: video::StdVideoH264ProfileIdc,
31756    pub picture_layout: VideoDecodeH264PictureLayoutFlagsKHR,
31757}
31758
31759impl Default for VideoDecodeH264ProfileInfoKHR {
31760    #[inline]
31761    fn default() -> Self {
31762        Self {
31763            s_type: StructureType::VIDEO_DECODE_H264_PROFILE_INFO_KHR,
31764            next: ptr::null(),
31765            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
31766            picture_layout: VideoDecodeH264PictureLayoutFlagsKHR::default(),
31767        }
31768    }
31769}
31770
31771unsafe impl Send for VideoDecodeH264ProfileInfoKHR {}
31772unsafe impl Sync for VideoDecodeH264ProfileInfoKHR {}
31773
31774/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html>
31775#[repr(C)]
31776#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31777pub struct VideoDecodeH264SessionParametersAddInfoKHR {
31778    pub s_type: StructureType,
31779    pub next: *const c_void,
31780    pub std_sps_count: u32,
31781    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
31782    pub std_pps_count: u32,
31783    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
31784}
31785
31786impl Default for VideoDecodeH264SessionParametersAddInfoKHR {
31787    #[inline]
31788    fn default() -> Self {
31789        Self {
31790            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
31791            next: ptr::null(),
31792            std_sps_count: u32::default(),
31793            std_sp_ss: ptr::null(),
31794            std_pps_count: u32::default(),
31795            std_pp_ss: ptr::null(),
31796        }
31797    }
31798}
31799
31800unsafe impl Send for VideoDecodeH264SessionParametersAddInfoKHR {}
31801unsafe impl Sync for VideoDecodeH264SessionParametersAddInfoKHR {}
31802
31803/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html>
31804#[repr(C)]
31805#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31806pub struct VideoDecodeH264SessionParametersCreateInfoKHR {
31807    pub s_type: StructureType,
31808    pub next: *const c_void,
31809    pub max_std_sps_count: u32,
31810    pub max_std_pps_count: u32,
31811    pub parameters_add_info: *const VideoDecodeH264SessionParametersAddInfoKHR,
31812}
31813
31814impl Default for VideoDecodeH264SessionParametersCreateInfoKHR {
31815    #[inline]
31816    fn default() -> Self {
31817        Self {
31818            s_type: StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
31819            next: ptr::null(),
31820            max_std_sps_count: u32::default(),
31821            max_std_pps_count: u32::default(),
31822            parameters_add_info: ptr::null(),
31823        }
31824    }
31825}
31826
31827unsafe impl Send for VideoDecodeH264SessionParametersCreateInfoKHR {}
31828unsafe impl Sync for VideoDecodeH264SessionParametersCreateInfoKHR {}
31829
31830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html>
31831#[repr(C)]
31832#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31833pub struct VideoDecodeH265CapabilitiesKHR {
31834    pub s_type: StructureType,
31835    pub next: *mut c_void,
31836    pub max_level_idc: video::StdVideoH265LevelIdc,
31837}
31838
31839impl Default for VideoDecodeH265CapabilitiesKHR {
31840    #[inline]
31841    fn default() -> Self {
31842        Self {
31843            s_type: StructureType::VIDEO_DECODE_H265_CAPABILITIES_KHR,
31844            next: ptr::null_mut(),
31845            max_level_idc: video::StdVideoH265LevelIdc::default(),
31846        }
31847    }
31848}
31849
31850unsafe impl Send for VideoDecodeH265CapabilitiesKHR {}
31851unsafe impl Sync for VideoDecodeH265CapabilitiesKHR {}
31852
31853/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html>
31854#[repr(C)]
31855#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31856pub struct VideoDecodeH265DpbSlotInfoKHR {
31857    pub s_type: StructureType,
31858    pub next: *const c_void,
31859    pub std_reference_info: *const video::StdVideoDecodeH265ReferenceInfo,
31860}
31861
31862impl Default for VideoDecodeH265DpbSlotInfoKHR {
31863    #[inline]
31864    fn default() -> Self {
31865        Self {
31866            s_type: StructureType::VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR,
31867            next: ptr::null(),
31868            std_reference_info: ptr::null(),
31869        }
31870    }
31871}
31872
31873unsafe impl Send for VideoDecodeH265DpbSlotInfoKHR {}
31874unsafe impl Sync for VideoDecodeH265DpbSlotInfoKHR {}
31875
31876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html>
31877#[repr(C)]
31878#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31879pub struct VideoDecodeH265InlineSessionParametersInfoKHR {
31880    pub s_type: StructureType,
31881    pub next: *const c_void,
31882    pub std_vps: *const video::StdVideoH265VideoParameterSet,
31883    pub std_sps: *const video::StdVideoH265SequenceParameterSet,
31884    pub std_pps: *const video::StdVideoH265PictureParameterSet,
31885}
31886
31887impl Default for VideoDecodeH265InlineSessionParametersInfoKHR {
31888    #[inline]
31889    fn default() -> Self {
31890        Self {
31891            s_type: StructureType::VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR,
31892            next: ptr::null(),
31893            std_vps: ptr::null(),
31894            std_sps: ptr::null(),
31895            std_pps: ptr::null(),
31896        }
31897    }
31898}
31899
31900unsafe impl Send for VideoDecodeH265InlineSessionParametersInfoKHR {}
31901unsafe impl Sync for VideoDecodeH265InlineSessionParametersInfoKHR {}
31902
31903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html>
31904#[repr(C)]
31905#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31906pub struct VideoDecodeH265PictureInfoKHR {
31907    pub s_type: StructureType,
31908    pub next: *const c_void,
31909    pub std_picture_info: *const video::StdVideoDecodeH265PictureInfo,
31910    pub slice_segment_count: u32,
31911    pub slice_segment_offsets: *const u32,
31912}
31913
31914impl Default for VideoDecodeH265PictureInfoKHR {
31915    #[inline]
31916    fn default() -> Self {
31917        Self {
31918            s_type: StructureType::VIDEO_DECODE_H265_PICTURE_INFO_KHR,
31919            next: ptr::null(),
31920            std_picture_info: ptr::null(),
31921            slice_segment_count: u32::default(),
31922            slice_segment_offsets: ptr::null(),
31923        }
31924    }
31925}
31926
31927unsafe impl Send for VideoDecodeH265PictureInfoKHR {}
31928unsafe impl Sync for VideoDecodeH265PictureInfoKHR {}
31929
31930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html>
31931#[repr(C)]
31932#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31933pub struct VideoDecodeH265ProfileInfoKHR {
31934    pub s_type: StructureType,
31935    pub next: *const c_void,
31936    pub std_profile_idc: video::StdVideoH265ProfileIdc,
31937}
31938
31939impl Default for VideoDecodeH265ProfileInfoKHR {
31940    #[inline]
31941    fn default() -> Self {
31942        Self {
31943            s_type: StructureType::VIDEO_DECODE_H265_PROFILE_INFO_KHR,
31944            next: ptr::null(),
31945            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
31946        }
31947    }
31948}
31949
31950unsafe impl Send for VideoDecodeH265ProfileInfoKHR {}
31951unsafe impl Sync for VideoDecodeH265ProfileInfoKHR {}
31952
31953/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html>
31954#[repr(C)]
31955#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31956pub struct VideoDecodeH265SessionParametersAddInfoKHR {
31957    pub s_type: StructureType,
31958    pub next: *const c_void,
31959    pub std_vps_count: u32,
31960    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
31961    pub std_sps_count: u32,
31962    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
31963    pub std_pps_count: u32,
31964    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
31965}
31966
31967impl Default for VideoDecodeH265SessionParametersAddInfoKHR {
31968    #[inline]
31969    fn default() -> Self {
31970        Self {
31971            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
31972            next: ptr::null(),
31973            std_vps_count: u32::default(),
31974            std_vp_ss: ptr::null(),
31975            std_sps_count: u32::default(),
31976            std_sp_ss: ptr::null(),
31977            std_pps_count: u32::default(),
31978            std_pp_ss: ptr::null(),
31979        }
31980    }
31981}
31982
31983unsafe impl Send for VideoDecodeH265SessionParametersAddInfoKHR {}
31984unsafe impl Sync for VideoDecodeH265SessionParametersAddInfoKHR {}
31985
31986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html>
31987#[repr(C)]
31988#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
31989pub struct VideoDecodeH265SessionParametersCreateInfoKHR {
31990    pub s_type: StructureType,
31991    pub next: *const c_void,
31992    pub max_std_vps_count: u32,
31993    pub max_std_sps_count: u32,
31994    pub max_std_pps_count: u32,
31995    pub parameters_add_info: *const VideoDecodeH265SessionParametersAddInfoKHR,
31996}
31997
31998impl Default for VideoDecodeH265SessionParametersCreateInfoKHR {
31999    #[inline]
32000    fn default() -> Self {
32001        Self {
32002            s_type: StructureType::VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
32003            next: ptr::null(),
32004            max_std_vps_count: u32::default(),
32005            max_std_sps_count: u32::default(),
32006            max_std_pps_count: u32::default(),
32007            parameters_add_info: ptr::null(),
32008        }
32009    }
32010}
32011
32012unsafe impl Send for VideoDecodeH265SessionParametersCreateInfoKHR {}
32013unsafe impl Sync for VideoDecodeH265SessionParametersCreateInfoKHR {}
32014
32015/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html>
32016#[repr(C)]
32017#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32018pub struct VideoDecodeInfoKHR {
32019    pub s_type: StructureType,
32020    pub next: *const c_void,
32021    pub flags: VideoDecodeFlagsKHR,
32022    pub src_buffer: Buffer,
32023    pub src_buffer_offset: DeviceSize,
32024    pub src_buffer_range: DeviceSize,
32025    pub dst_picture_resource: VideoPictureResourceInfoKHR,
32026    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
32027    pub reference_slot_count: u32,
32028    pub reference_slots: *const VideoReferenceSlotInfoKHR,
32029}
32030
32031impl Default for VideoDecodeInfoKHR {
32032    #[inline]
32033    fn default() -> Self {
32034        Self {
32035            s_type: StructureType::VIDEO_DECODE_INFO_KHR,
32036            next: ptr::null(),
32037            flags: VideoDecodeFlagsKHR::default(),
32038            src_buffer: Buffer::default(),
32039            src_buffer_offset: DeviceSize::default(),
32040            src_buffer_range: DeviceSize::default(),
32041            dst_picture_resource: VideoPictureResourceInfoKHR::default(),
32042            setup_reference_slot: ptr::null(),
32043            reference_slot_count: u32::default(),
32044            reference_slots: ptr::null(),
32045        }
32046    }
32047}
32048
32049unsafe impl Send for VideoDecodeInfoKHR {}
32050unsafe impl Sync for VideoDecodeInfoKHR {}
32051
32052/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html>
32053#[repr(C)]
32054#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32055pub struct VideoDecodeUsageInfoKHR {
32056    pub s_type: StructureType,
32057    pub next: *const c_void,
32058    pub video_usage_hints: VideoDecodeUsageFlagsKHR,
32059}
32060
32061impl Default for VideoDecodeUsageInfoKHR {
32062    #[inline]
32063    fn default() -> Self {
32064        Self {
32065            s_type: StructureType::VIDEO_DECODE_USAGE_INFO_KHR,
32066            next: ptr::null(),
32067            video_usage_hints: VideoDecodeUsageFlagsKHR::default(),
32068        }
32069    }
32070}
32071
32072unsafe impl Send for VideoDecodeUsageInfoKHR {}
32073unsafe impl Sync for VideoDecodeUsageInfoKHR {}
32074
32075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9CapabilitiesKHR.html>
32076#[repr(C)]
32077#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32078pub struct VideoDecodeVP9CapabilitiesKHR {
32079    pub s_type: StructureType,
32080    pub next: *mut c_void,
32081    pub max_level: video::StdVideoVP9Level,
32082}
32083
32084impl Default for VideoDecodeVP9CapabilitiesKHR {
32085    #[inline]
32086    fn default() -> Self {
32087        Self {
32088            s_type: StructureType::VIDEO_DECODE_VP9_CAPABILITIES_KHR,
32089            next: ptr::null_mut(),
32090            max_level: video::StdVideoVP9Level::default(),
32091        }
32092    }
32093}
32094
32095unsafe impl Send for VideoDecodeVP9CapabilitiesKHR {}
32096unsafe impl Sync for VideoDecodeVP9CapabilitiesKHR {}
32097
32098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9PictureInfoKHR.html>
32099#[repr(C)]
32100#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32101pub struct VideoDecodeVP9PictureInfoKHR {
32102    pub s_type: StructureType,
32103    pub next: *const c_void,
32104    pub std_picture_info: *const video::StdVideoDecodeVP9PictureInfo,
32105    pub reference_name_slot_indices: [i32; MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR as usize],
32106    pub uncompressed_header_offset: u32,
32107    pub compressed_header_offset: u32,
32108    pub tiles_offset: u32,
32109}
32110
32111impl Default for VideoDecodeVP9PictureInfoKHR {
32112    #[inline]
32113    fn default() -> Self {
32114        Self {
32115            s_type: StructureType::VIDEO_DECODE_VP9_PICTURE_INFO_KHR,
32116            next: ptr::null(),
32117            std_picture_info: ptr::null(),
32118            reference_name_slot_indices: [i32::default(); MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR],
32119            uncompressed_header_offset: u32::default(),
32120            compressed_header_offset: u32::default(),
32121            tiles_offset: u32::default(),
32122        }
32123    }
32124}
32125
32126unsafe impl Send for VideoDecodeVP9PictureInfoKHR {}
32127unsafe impl Sync for VideoDecodeVP9PictureInfoKHR {}
32128
32129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoDecodeVP9ProfileInfoKHR.html>
32130#[repr(C)]
32131#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32132pub struct VideoDecodeVP9ProfileInfoKHR {
32133    pub s_type: StructureType,
32134    pub next: *const c_void,
32135    pub std_profile: video::StdVideoVP9Profile,
32136}
32137
32138impl Default for VideoDecodeVP9ProfileInfoKHR {
32139    #[inline]
32140    fn default() -> Self {
32141        Self {
32142            s_type: StructureType::VIDEO_DECODE_VP9_PROFILE_INFO_KHR,
32143            next: ptr::null(),
32144            std_profile: video::StdVideoVP9Profile::default(),
32145        }
32146    }
32147}
32148
32149unsafe impl Send for VideoDecodeVP9ProfileInfoKHR {}
32150unsafe impl Sync for VideoDecodeVP9ProfileInfoKHR {}
32151
32152/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html>
32153#[repr(C)]
32154#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32155pub struct VideoEncodeAV1CapabilitiesKHR {
32156    pub s_type: StructureType,
32157    pub next: *mut c_void,
32158    pub flags: VideoEncodeAV1CapabilityFlagsKHR,
32159    pub max_level: video::StdVideoAV1Level,
32160    pub coded_picture_alignment: Extent2D,
32161    pub max_tiles: Extent2D,
32162    pub min_tile_size: Extent2D,
32163    pub max_tile_size: Extent2D,
32164    pub superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
32165    pub max_single_reference_count: u32,
32166    pub single_reference_name_mask: u32,
32167    pub max_unidirectional_compound_reference_count: u32,
32168    pub max_unidirectional_compound_group1_reference_count: u32,
32169    pub unidirectional_compound_reference_name_mask: u32,
32170    pub max_bidirectional_compound_reference_count: u32,
32171    pub max_bidirectional_compound_group1_reference_count: u32,
32172    pub max_bidirectional_compound_group2_reference_count: u32,
32173    pub bidirectional_compound_reference_name_mask: u32,
32174    pub max_temporal_layer_count: u32,
32175    pub max_spatial_layer_count: u32,
32176    pub max_operating_points: u32,
32177    pub min_q_index: u32,
32178    pub max_q_index: u32,
32179    pub prefers_gop_remaining_frames: Bool32,
32180    pub requires_gop_remaining_frames: Bool32,
32181    pub std_syntax_flags: VideoEncodeAV1StdFlagsKHR,
32182}
32183
32184impl Default for VideoEncodeAV1CapabilitiesKHR {
32185    #[inline]
32186    fn default() -> Self {
32187        Self {
32188            s_type: StructureType::VIDEO_ENCODE_AV1_CAPABILITIES_KHR,
32189            next: ptr::null_mut(),
32190            flags: VideoEncodeAV1CapabilityFlagsKHR::default(),
32191            max_level: video::StdVideoAV1Level::default(),
32192            coded_picture_alignment: Extent2D::default(),
32193            max_tiles: Extent2D::default(),
32194            min_tile_size: Extent2D::default(),
32195            max_tile_size: Extent2D::default(),
32196            superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
32197            max_single_reference_count: u32::default(),
32198            single_reference_name_mask: u32::default(),
32199            max_unidirectional_compound_reference_count: u32::default(),
32200            max_unidirectional_compound_group1_reference_count: u32::default(),
32201            unidirectional_compound_reference_name_mask: u32::default(),
32202            max_bidirectional_compound_reference_count: u32::default(),
32203            max_bidirectional_compound_group1_reference_count: u32::default(),
32204            max_bidirectional_compound_group2_reference_count: u32::default(),
32205            bidirectional_compound_reference_name_mask: u32::default(),
32206            max_temporal_layer_count: u32::default(),
32207            max_spatial_layer_count: u32::default(),
32208            max_operating_points: u32::default(),
32209            min_q_index: u32::default(),
32210            max_q_index: u32::default(),
32211            prefers_gop_remaining_frames: Bool32::default(),
32212            requires_gop_remaining_frames: Bool32::default(),
32213            std_syntax_flags: VideoEncodeAV1StdFlagsKHR::default(),
32214        }
32215    }
32216}
32217
32218unsafe impl Send for VideoEncodeAV1CapabilitiesKHR {}
32219unsafe impl Sync for VideoEncodeAV1CapabilitiesKHR {}
32220
32221/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html>
32222#[repr(C)]
32223#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32224pub struct VideoEncodeAV1DpbSlotInfoKHR {
32225    pub s_type: StructureType,
32226    pub next: *const c_void,
32227    pub std_reference_info: *const video::StdVideoEncodeAV1ReferenceInfo,
32228}
32229
32230impl Default for VideoEncodeAV1DpbSlotInfoKHR {
32231    #[inline]
32232    fn default() -> Self {
32233        Self {
32234            s_type: StructureType::VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR,
32235            next: ptr::null(),
32236            std_reference_info: ptr::null(),
32237        }
32238    }
32239}
32240
32241unsafe impl Send for VideoEncodeAV1DpbSlotInfoKHR {}
32242unsafe impl Sync for VideoEncodeAV1DpbSlotInfoKHR {}
32243
32244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html>
32245#[repr(C)]
32246#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
32247pub struct VideoEncodeAV1FrameSizeKHR {
32248    pub intra_frame_size: u32,
32249    pub predictive_frame_size: u32,
32250    pub bipredictive_frame_size: u32,
32251}
32252
32253/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html>
32254#[repr(C)]
32255#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32256pub struct VideoEncodeAV1GopRemainingFrameInfoKHR {
32257    pub s_type: StructureType,
32258    pub next: *const c_void,
32259    pub use_gop_remaining_frames: Bool32,
32260    pub gop_remaining_intra: u32,
32261    pub gop_remaining_predictive: u32,
32262    pub gop_remaining_bipredictive: u32,
32263}
32264
32265impl Default for VideoEncodeAV1GopRemainingFrameInfoKHR {
32266    #[inline]
32267    fn default() -> Self {
32268        Self {
32269            s_type: StructureType::VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR,
32270            next: ptr::null(),
32271            use_gop_remaining_frames: Bool32::default(),
32272            gop_remaining_intra: u32::default(),
32273            gop_remaining_predictive: u32::default(),
32274            gop_remaining_bipredictive: u32::default(),
32275        }
32276    }
32277}
32278
32279unsafe impl Send for VideoEncodeAV1GopRemainingFrameInfoKHR {}
32280unsafe impl Sync for VideoEncodeAV1GopRemainingFrameInfoKHR {}
32281
32282/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html>
32283#[repr(C)]
32284#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32285pub struct VideoEncodeAV1PictureInfoKHR {
32286    pub s_type: StructureType,
32287    pub next: *const c_void,
32288    pub prediction_mode: VideoEncodeAV1PredictionModeKHR,
32289    pub rate_control_group: VideoEncodeAV1RateControlGroupKHR,
32290    pub constant_q_index: u32,
32291    pub std_picture_info: *const video::StdVideoEncodeAV1PictureInfo,
32292    pub reference_name_slot_indices: [i32; MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR as usize],
32293    pub primary_reference_cdf_only: Bool32,
32294    pub generate_obu_extension_header: Bool32,
32295}
32296
32297impl Default for VideoEncodeAV1PictureInfoKHR {
32298    #[inline]
32299    fn default() -> Self {
32300        Self {
32301            s_type: StructureType::VIDEO_ENCODE_AV1_PICTURE_INFO_KHR,
32302            next: ptr::null(),
32303            prediction_mode: VideoEncodeAV1PredictionModeKHR::default(),
32304            rate_control_group: VideoEncodeAV1RateControlGroupKHR::default(),
32305            constant_q_index: u32::default(),
32306            std_picture_info: ptr::null(),
32307            reference_name_slot_indices: [i32::default(); MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR],
32308            primary_reference_cdf_only: Bool32::default(),
32309            generate_obu_extension_header: Bool32::default(),
32310        }
32311    }
32312}
32313
32314unsafe impl Send for VideoEncodeAV1PictureInfoKHR {}
32315unsafe impl Sync for VideoEncodeAV1PictureInfoKHR {}
32316
32317/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html>
32318#[repr(C)]
32319#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32320pub struct VideoEncodeAV1ProfileInfoKHR {
32321    pub s_type: StructureType,
32322    pub next: *const c_void,
32323    pub std_profile: video::StdVideoAV1Profile,
32324}
32325
32326impl Default for VideoEncodeAV1ProfileInfoKHR {
32327    #[inline]
32328    fn default() -> Self {
32329        Self {
32330            s_type: StructureType::VIDEO_ENCODE_AV1_PROFILE_INFO_KHR,
32331            next: ptr::null(),
32332            std_profile: video::StdVideoAV1Profile::default(),
32333        }
32334    }
32335}
32336
32337unsafe impl Send for VideoEncodeAV1ProfileInfoKHR {}
32338unsafe impl Sync for VideoEncodeAV1ProfileInfoKHR {}
32339
32340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html>
32341#[repr(C)]
32342#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
32343pub struct VideoEncodeAV1QIndexKHR {
32344    pub intra_q_index: u32,
32345    pub predictive_q_index: u32,
32346    pub bipredictive_q_index: u32,
32347}
32348
32349/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html>
32350#[repr(C)]
32351#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32352pub struct VideoEncodeAV1QualityLevelPropertiesKHR {
32353    pub s_type: StructureType,
32354    pub next: *mut c_void,
32355    pub preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR,
32356    pub preferred_gop_frame_count: u32,
32357    pub preferred_key_frame_period: u32,
32358    pub preferred_consecutive_bipredictive_frame_count: u32,
32359    pub preferred_temporal_layer_count: u32,
32360    pub preferred_constant_q_index: VideoEncodeAV1QIndexKHR,
32361    pub preferred_max_single_reference_count: u32,
32362    pub preferred_single_reference_name_mask: u32,
32363    pub preferred_max_unidirectional_compound_reference_count: u32,
32364    pub preferred_max_unidirectional_compound_group1_reference_count: u32,
32365    pub preferred_unidirectional_compound_reference_name_mask: u32,
32366    pub preferred_max_bidirectional_compound_reference_count: u32,
32367    pub preferred_max_bidirectional_compound_group1_reference_count: u32,
32368    pub preferred_max_bidirectional_compound_group2_reference_count: u32,
32369    pub preferred_bidirectional_compound_reference_name_mask: u32,
32370}
32371
32372impl Default for VideoEncodeAV1QualityLevelPropertiesKHR {
32373    #[inline]
32374    fn default() -> Self {
32375        Self {
32376            s_type: StructureType::VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR,
32377            next: ptr::null_mut(),
32378            preferred_rate_control_flags: VideoEncodeAV1RateControlFlagsKHR::default(),
32379            preferred_gop_frame_count: u32::default(),
32380            preferred_key_frame_period: u32::default(),
32381            preferred_consecutive_bipredictive_frame_count: u32::default(),
32382            preferred_temporal_layer_count: u32::default(),
32383            preferred_constant_q_index: VideoEncodeAV1QIndexKHR::default(),
32384            preferred_max_single_reference_count: u32::default(),
32385            preferred_single_reference_name_mask: u32::default(),
32386            preferred_max_unidirectional_compound_reference_count: u32::default(),
32387            preferred_max_unidirectional_compound_group1_reference_count: u32::default(),
32388            preferred_unidirectional_compound_reference_name_mask: u32::default(),
32389            preferred_max_bidirectional_compound_reference_count: u32::default(),
32390            preferred_max_bidirectional_compound_group1_reference_count: u32::default(),
32391            preferred_max_bidirectional_compound_group2_reference_count: u32::default(),
32392            preferred_bidirectional_compound_reference_name_mask: u32::default(),
32393        }
32394    }
32395}
32396
32397unsafe impl Send for VideoEncodeAV1QualityLevelPropertiesKHR {}
32398unsafe impl Sync for VideoEncodeAV1QualityLevelPropertiesKHR {}
32399
32400/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html>
32401#[repr(C)]
32402#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32403pub struct VideoEncodeAV1QuantizationMapCapabilitiesKHR {
32404    pub s_type: StructureType,
32405    pub next: *mut c_void,
32406    pub min_q_index_delta: i32,
32407    pub max_q_index_delta: i32,
32408}
32409
32410impl Default for VideoEncodeAV1QuantizationMapCapabilitiesKHR {
32411    #[inline]
32412    fn default() -> Self {
32413        Self {
32414            s_type: StructureType::VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR,
32415            next: ptr::null_mut(),
32416            min_q_index_delta: i32::default(),
32417            max_q_index_delta: i32::default(),
32418        }
32419    }
32420}
32421
32422unsafe impl Send for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
32423unsafe impl Sync for VideoEncodeAV1QuantizationMapCapabilitiesKHR {}
32424
32425/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html>
32426#[repr(C)]
32427#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32428pub struct VideoEncodeAV1RateControlInfoKHR {
32429    pub s_type: StructureType,
32430    pub next: *const c_void,
32431    pub flags: VideoEncodeAV1RateControlFlagsKHR,
32432    pub gop_frame_count: u32,
32433    pub key_frame_period: u32,
32434    pub consecutive_bipredictive_frame_count: u32,
32435    pub temporal_layer_count: u32,
32436}
32437
32438impl Default for VideoEncodeAV1RateControlInfoKHR {
32439    #[inline]
32440    fn default() -> Self {
32441        Self {
32442            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR,
32443            next: ptr::null(),
32444            flags: VideoEncodeAV1RateControlFlagsKHR::default(),
32445            gop_frame_count: u32::default(),
32446            key_frame_period: u32::default(),
32447            consecutive_bipredictive_frame_count: u32::default(),
32448            temporal_layer_count: u32::default(),
32449        }
32450    }
32451}
32452
32453unsafe impl Send for VideoEncodeAV1RateControlInfoKHR {}
32454unsafe impl Sync for VideoEncodeAV1RateControlInfoKHR {}
32455
32456/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html>
32457#[repr(C)]
32458#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32459pub struct VideoEncodeAV1RateControlLayerInfoKHR {
32460    pub s_type: StructureType,
32461    pub next: *const c_void,
32462    pub use_min_q_index: Bool32,
32463    pub min_q_index: VideoEncodeAV1QIndexKHR,
32464    pub use_max_q_index: Bool32,
32465    pub max_q_index: VideoEncodeAV1QIndexKHR,
32466    pub use_max_frame_size: Bool32,
32467    pub max_frame_size: VideoEncodeAV1FrameSizeKHR,
32468}
32469
32470impl Default for VideoEncodeAV1RateControlLayerInfoKHR {
32471    #[inline]
32472    fn default() -> Self {
32473        Self {
32474            s_type: StructureType::VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR,
32475            next: ptr::null(),
32476            use_min_q_index: Bool32::default(),
32477            min_q_index: VideoEncodeAV1QIndexKHR::default(),
32478            use_max_q_index: Bool32::default(),
32479            max_q_index: VideoEncodeAV1QIndexKHR::default(),
32480            use_max_frame_size: Bool32::default(),
32481            max_frame_size: VideoEncodeAV1FrameSizeKHR::default(),
32482        }
32483    }
32484}
32485
32486unsafe impl Send for VideoEncodeAV1RateControlLayerInfoKHR {}
32487unsafe impl Sync for VideoEncodeAV1RateControlLayerInfoKHR {}
32488
32489/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html>
32490#[repr(C)]
32491#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32492pub struct VideoEncodeAV1SessionCreateInfoKHR {
32493    pub s_type: StructureType,
32494    pub next: *const c_void,
32495    pub use_max_level: Bool32,
32496    pub max_level: video::StdVideoAV1Level,
32497}
32498
32499impl Default for VideoEncodeAV1SessionCreateInfoKHR {
32500    #[inline]
32501    fn default() -> Self {
32502        Self {
32503            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR,
32504            next: ptr::null(),
32505            use_max_level: Bool32::default(),
32506            max_level: video::StdVideoAV1Level::default(),
32507        }
32508    }
32509}
32510
32511unsafe impl Send for VideoEncodeAV1SessionCreateInfoKHR {}
32512unsafe impl Sync for VideoEncodeAV1SessionCreateInfoKHR {}
32513
32514/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html>
32515#[repr(C)]
32516#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32517pub struct VideoEncodeAV1SessionParametersCreateInfoKHR {
32518    pub s_type: StructureType,
32519    pub next: *const c_void,
32520    pub std_sequence_header: *const video::StdVideoAV1SequenceHeader,
32521    pub std_decoder_model_info: *const video::StdVideoEncodeAV1DecoderModelInfo,
32522    pub std_operating_point_count: u32,
32523    pub std_operating_points: *const video::StdVideoEncodeAV1OperatingPointInfo,
32524}
32525
32526impl Default for VideoEncodeAV1SessionParametersCreateInfoKHR {
32527    #[inline]
32528    fn default() -> Self {
32529        Self {
32530            s_type: StructureType::VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR,
32531            next: ptr::null(),
32532            std_sequence_header: ptr::null(),
32533            std_decoder_model_info: ptr::null(),
32534            std_operating_point_count: u32::default(),
32535            std_operating_points: ptr::null(),
32536        }
32537    }
32538}
32539
32540unsafe impl Send for VideoEncodeAV1SessionParametersCreateInfoKHR {}
32541unsafe impl Sync for VideoEncodeAV1SessionParametersCreateInfoKHR {}
32542
32543/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html>
32544#[repr(C)]
32545#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32546pub struct VideoEncodeCapabilitiesKHR {
32547    pub s_type: StructureType,
32548    pub next: *mut c_void,
32549    pub flags: VideoEncodeCapabilityFlagsKHR,
32550    pub rate_control_modes: VideoEncodeRateControlModeFlagsKHR,
32551    pub max_rate_control_layers: u32,
32552    pub max_bitrate: u64,
32553    pub max_quality_levels: u32,
32554    pub encode_input_picture_granularity: Extent2D,
32555    pub supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR,
32556}
32557
32558impl Default for VideoEncodeCapabilitiesKHR {
32559    #[inline]
32560    fn default() -> Self {
32561        Self {
32562            s_type: StructureType::VIDEO_ENCODE_CAPABILITIES_KHR,
32563            next: ptr::null_mut(),
32564            flags: VideoEncodeCapabilityFlagsKHR::default(),
32565            rate_control_modes: VideoEncodeRateControlModeFlagsKHR::default(),
32566            max_rate_control_layers: u32::default(),
32567            max_bitrate: u64::default(),
32568            max_quality_levels: u32::default(),
32569            encode_input_picture_granularity: Extent2D::default(),
32570            supported_encode_feedback_flags: VideoEncodeFeedbackFlagsKHR::default(),
32571        }
32572    }
32573}
32574
32575unsafe impl Send for VideoEncodeCapabilitiesKHR {}
32576unsafe impl Sync for VideoEncodeCapabilitiesKHR {}
32577
32578/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html>
32579#[repr(C)]
32580#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32581pub struct VideoEncodeH264CapabilitiesKHR {
32582    pub s_type: StructureType,
32583    pub next: *mut c_void,
32584    pub flags: VideoEncodeH264CapabilityFlagsKHR,
32585    pub max_level_idc: video::StdVideoH264LevelIdc,
32586    pub max_slice_count: u32,
32587    pub max_p_picture_l0_reference_count: u32,
32588    pub max_b_picture_l0_reference_count: u32,
32589    pub max_l1_reference_count: u32,
32590    pub max_temporal_layer_count: u32,
32591    pub expect_dyadic_temporal_layer_pattern: Bool32,
32592    pub min_qp: i32,
32593    pub max_qp: i32,
32594    pub prefers_gop_remaining_frames: Bool32,
32595    pub requires_gop_remaining_frames: Bool32,
32596    pub std_syntax_flags: VideoEncodeH264StdFlagsKHR,
32597}
32598
32599impl Default for VideoEncodeH264CapabilitiesKHR {
32600    #[inline]
32601    fn default() -> Self {
32602        Self {
32603            s_type: StructureType::VIDEO_ENCODE_H264_CAPABILITIES_KHR,
32604            next: ptr::null_mut(),
32605            flags: VideoEncodeH264CapabilityFlagsKHR::default(),
32606            max_level_idc: video::StdVideoH264LevelIdc::default(),
32607            max_slice_count: u32::default(),
32608            max_p_picture_l0_reference_count: u32::default(),
32609            max_b_picture_l0_reference_count: u32::default(),
32610            max_l1_reference_count: u32::default(),
32611            max_temporal_layer_count: u32::default(),
32612            expect_dyadic_temporal_layer_pattern: Bool32::default(),
32613            min_qp: i32::default(),
32614            max_qp: i32::default(),
32615            prefers_gop_remaining_frames: Bool32::default(),
32616            requires_gop_remaining_frames: Bool32::default(),
32617            std_syntax_flags: VideoEncodeH264StdFlagsKHR::default(),
32618        }
32619    }
32620}
32621
32622unsafe impl Send for VideoEncodeH264CapabilitiesKHR {}
32623unsafe impl Sync for VideoEncodeH264CapabilitiesKHR {}
32624
32625/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html>
32626#[repr(C)]
32627#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32628pub struct VideoEncodeH264DpbSlotInfoKHR {
32629    pub s_type: StructureType,
32630    pub next: *const c_void,
32631    pub std_reference_info: *const video::StdVideoEncodeH264ReferenceInfo,
32632}
32633
32634impl Default for VideoEncodeH264DpbSlotInfoKHR {
32635    #[inline]
32636    fn default() -> Self {
32637        Self {
32638            s_type: StructureType::VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR,
32639            next: ptr::null(),
32640            std_reference_info: ptr::null(),
32641        }
32642    }
32643}
32644
32645unsafe impl Send for VideoEncodeH264DpbSlotInfoKHR {}
32646unsafe impl Sync for VideoEncodeH264DpbSlotInfoKHR {}
32647
32648/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html>
32649#[repr(C)]
32650#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
32651pub struct VideoEncodeH264FrameSizeKHR {
32652    pub frame_i_size: u32,
32653    pub frame_p_size: u32,
32654    pub frame_b_size: u32,
32655}
32656
32657/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html>
32658#[repr(C)]
32659#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32660pub struct VideoEncodeH264GopRemainingFrameInfoKHR {
32661    pub s_type: StructureType,
32662    pub next: *const c_void,
32663    pub use_gop_remaining_frames: Bool32,
32664    pub gop_remaining_i: u32,
32665    pub gop_remaining_p: u32,
32666    pub gop_remaining_b: u32,
32667}
32668
32669impl Default for VideoEncodeH264GopRemainingFrameInfoKHR {
32670    #[inline]
32671    fn default() -> Self {
32672        Self {
32673            s_type: StructureType::VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR,
32674            next: ptr::null(),
32675            use_gop_remaining_frames: Bool32::default(),
32676            gop_remaining_i: u32::default(),
32677            gop_remaining_p: u32::default(),
32678            gop_remaining_b: u32::default(),
32679        }
32680    }
32681}
32682
32683unsafe impl Send for VideoEncodeH264GopRemainingFrameInfoKHR {}
32684unsafe impl Sync for VideoEncodeH264GopRemainingFrameInfoKHR {}
32685
32686/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html>
32687#[repr(C)]
32688#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32689pub struct VideoEncodeH264NaluSliceInfoKHR {
32690    pub s_type: StructureType,
32691    pub next: *const c_void,
32692    pub constant_qp: i32,
32693    pub std_slice_header: *const video::StdVideoEncodeH264SliceHeader,
32694}
32695
32696impl Default for VideoEncodeH264NaluSliceInfoKHR {
32697    #[inline]
32698    fn default() -> Self {
32699        Self {
32700            s_type: StructureType::VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR,
32701            next: ptr::null(),
32702            constant_qp: i32::default(),
32703            std_slice_header: ptr::null(),
32704        }
32705    }
32706}
32707
32708unsafe impl Send for VideoEncodeH264NaluSliceInfoKHR {}
32709unsafe impl Sync for VideoEncodeH264NaluSliceInfoKHR {}
32710
32711/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html>
32712#[repr(C)]
32713#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32714pub struct VideoEncodeH264PictureInfoKHR {
32715    pub s_type: StructureType,
32716    pub next: *const c_void,
32717    pub nalu_slice_entry_count: u32,
32718    pub nalu_slice_entries: *const VideoEncodeH264NaluSliceInfoKHR,
32719    pub std_picture_info: *const video::StdVideoEncodeH264PictureInfo,
32720    pub generate_prefix_nalu: Bool32,
32721}
32722
32723impl Default for VideoEncodeH264PictureInfoKHR {
32724    #[inline]
32725    fn default() -> Self {
32726        Self {
32727            s_type: StructureType::VIDEO_ENCODE_H264_PICTURE_INFO_KHR,
32728            next: ptr::null(),
32729            nalu_slice_entry_count: u32::default(),
32730            nalu_slice_entries: ptr::null(),
32731            std_picture_info: ptr::null(),
32732            generate_prefix_nalu: Bool32::default(),
32733        }
32734    }
32735}
32736
32737unsafe impl Send for VideoEncodeH264PictureInfoKHR {}
32738unsafe impl Sync for VideoEncodeH264PictureInfoKHR {}
32739
32740/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html>
32741#[repr(C)]
32742#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32743pub struct VideoEncodeH264ProfileInfoKHR {
32744    pub s_type: StructureType,
32745    pub next: *const c_void,
32746    pub std_profile_idc: video::StdVideoH264ProfileIdc,
32747}
32748
32749impl Default for VideoEncodeH264ProfileInfoKHR {
32750    #[inline]
32751    fn default() -> Self {
32752        Self {
32753            s_type: StructureType::VIDEO_ENCODE_H264_PROFILE_INFO_KHR,
32754            next: ptr::null(),
32755            std_profile_idc: video::StdVideoH264ProfileIdc::default(),
32756        }
32757    }
32758}
32759
32760unsafe impl Send for VideoEncodeH264ProfileInfoKHR {}
32761unsafe impl Sync for VideoEncodeH264ProfileInfoKHR {}
32762
32763/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html>
32764#[repr(C)]
32765#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
32766pub struct VideoEncodeH264QpKHR {
32767    pub qp_i: i32,
32768    pub qp_p: i32,
32769    pub qp_b: i32,
32770}
32771
32772/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html>
32773#[repr(C)]
32774#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32775pub struct VideoEncodeH264QualityLevelPropertiesKHR {
32776    pub s_type: StructureType,
32777    pub next: *mut c_void,
32778    pub preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR,
32779    pub preferred_gop_frame_count: u32,
32780    pub preferred_idr_period: u32,
32781    pub preferred_consecutive_b_frame_count: u32,
32782    pub preferred_temporal_layer_count: u32,
32783    pub preferred_constant_qp: VideoEncodeH264QpKHR,
32784    pub preferred_max_l0_reference_count: u32,
32785    pub preferred_max_l1_reference_count: u32,
32786    pub preferred_std_entropy_coding_mode_flag: Bool32,
32787}
32788
32789impl Default for VideoEncodeH264QualityLevelPropertiesKHR {
32790    #[inline]
32791    fn default() -> Self {
32792        Self {
32793            s_type: StructureType::VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
32794            next: ptr::null_mut(),
32795            preferred_rate_control_flags: VideoEncodeH264RateControlFlagsKHR::default(),
32796            preferred_gop_frame_count: u32::default(),
32797            preferred_idr_period: u32::default(),
32798            preferred_consecutive_b_frame_count: u32::default(),
32799            preferred_temporal_layer_count: u32::default(),
32800            preferred_constant_qp: VideoEncodeH264QpKHR::default(),
32801            preferred_max_l0_reference_count: u32::default(),
32802            preferred_max_l1_reference_count: u32::default(),
32803            preferred_std_entropy_coding_mode_flag: Bool32::default(),
32804        }
32805    }
32806}
32807
32808unsafe impl Send for VideoEncodeH264QualityLevelPropertiesKHR {}
32809unsafe impl Sync for VideoEncodeH264QualityLevelPropertiesKHR {}
32810
32811/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html>
32812#[repr(C)]
32813#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32814pub struct VideoEncodeH264QuantizationMapCapabilitiesKHR {
32815    pub s_type: StructureType,
32816    pub next: *mut c_void,
32817    pub min_qp_delta: i32,
32818    pub max_qp_delta: i32,
32819}
32820
32821impl Default for VideoEncodeH264QuantizationMapCapabilitiesKHR {
32822    #[inline]
32823    fn default() -> Self {
32824        Self {
32825            s_type: StructureType::VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR,
32826            next: ptr::null_mut(),
32827            min_qp_delta: i32::default(),
32828            max_qp_delta: i32::default(),
32829        }
32830    }
32831}
32832
32833unsafe impl Send for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
32834unsafe impl Sync for VideoEncodeH264QuantizationMapCapabilitiesKHR {}
32835
32836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html>
32837#[repr(C)]
32838#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32839pub struct VideoEncodeH264RateControlInfoKHR {
32840    pub s_type: StructureType,
32841    pub next: *const c_void,
32842    pub flags: VideoEncodeH264RateControlFlagsKHR,
32843    pub gop_frame_count: u32,
32844    pub idr_period: u32,
32845    pub consecutive_b_frame_count: u32,
32846    pub temporal_layer_count: u32,
32847}
32848
32849impl Default for VideoEncodeH264RateControlInfoKHR {
32850    #[inline]
32851    fn default() -> Self {
32852        Self {
32853            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR,
32854            next: ptr::null(),
32855            flags: VideoEncodeH264RateControlFlagsKHR::default(),
32856            gop_frame_count: u32::default(),
32857            idr_period: u32::default(),
32858            consecutive_b_frame_count: u32::default(),
32859            temporal_layer_count: u32::default(),
32860        }
32861    }
32862}
32863
32864unsafe impl Send for VideoEncodeH264RateControlInfoKHR {}
32865unsafe impl Sync for VideoEncodeH264RateControlInfoKHR {}
32866
32867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html>
32868#[repr(C)]
32869#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32870pub struct VideoEncodeH264RateControlLayerInfoKHR {
32871    pub s_type: StructureType,
32872    pub next: *const c_void,
32873    pub use_min_qp: Bool32,
32874    pub min_qp: VideoEncodeH264QpKHR,
32875    pub use_max_qp: Bool32,
32876    pub max_qp: VideoEncodeH264QpKHR,
32877    pub use_max_frame_size: Bool32,
32878    pub max_frame_size: VideoEncodeH264FrameSizeKHR,
32879}
32880
32881impl Default for VideoEncodeH264RateControlLayerInfoKHR {
32882    #[inline]
32883    fn default() -> Self {
32884        Self {
32885            s_type: StructureType::VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,
32886            next: ptr::null(),
32887            use_min_qp: Bool32::default(),
32888            min_qp: VideoEncodeH264QpKHR::default(),
32889            use_max_qp: Bool32::default(),
32890            max_qp: VideoEncodeH264QpKHR::default(),
32891            use_max_frame_size: Bool32::default(),
32892            max_frame_size: VideoEncodeH264FrameSizeKHR::default(),
32893        }
32894    }
32895}
32896
32897unsafe impl Send for VideoEncodeH264RateControlLayerInfoKHR {}
32898unsafe impl Sync for VideoEncodeH264RateControlLayerInfoKHR {}
32899
32900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html>
32901#[repr(C)]
32902#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32903pub struct VideoEncodeH264SessionCreateInfoKHR {
32904    pub s_type: StructureType,
32905    pub next: *const c_void,
32906    pub use_max_level_idc: Bool32,
32907    pub max_level_idc: video::StdVideoH264LevelIdc,
32908}
32909
32910impl Default for VideoEncodeH264SessionCreateInfoKHR {
32911    #[inline]
32912    fn default() -> Self {
32913        Self {
32914            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR,
32915            next: ptr::null(),
32916            use_max_level_idc: Bool32::default(),
32917            max_level_idc: video::StdVideoH264LevelIdc::default(),
32918        }
32919    }
32920}
32921
32922unsafe impl Send for VideoEncodeH264SessionCreateInfoKHR {}
32923unsafe impl Sync for VideoEncodeH264SessionCreateInfoKHR {}
32924
32925/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html>
32926#[repr(C)]
32927#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32928pub struct VideoEncodeH264SessionParametersAddInfoKHR {
32929    pub s_type: StructureType,
32930    pub next: *const c_void,
32931    pub std_sps_count: u32,
32932    pub std_sp_ss: *const video::StdVideoH264SequenceParameterSet,
32933    pub std_pps_count: u32,
32934    pub std_pp_ss: *const video::StdVideoH264PictureParameterSet,
32935}
32936
32937impl Default for VideoEncodeH264SessionParametersAddInfoKHR {
32938    #[inline]
32939    fn default() -> Self {
32940        Self {
32941            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
32942            next: ptr::null(),
32943            std_sps_count: u32::default(),
32944            std_sp_ss: ptr::null(),
32945            std_pps_count: u32::default(),
32946            std_pp_ss: ptr::null(),
32947        }
32948    }
32949}
32950
32951unsafe impl Send for VideoEncodeH264SessionParametersAddInfoKHR {}
32952unsafe impl Sync for VideoEncodeH264SessionParametersAddInfoKHR {}
32953
32954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html>
32955#[repr(C)]
32956#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32957pub struct VideoEncodeH264SessionParametersCreateInfoKHR {
32958    pub s_type: StructureType,
32959    pub next: *const c_void,
32960    pub max_std_sps_count: u32,
32961    pub max_std_pps_count: u32,
32962    pub parameters_add_info: *const VideoEncodeH264SessionParametersAddInfoKHR,
32963}
32964
32965impl Default for VideoEncodeH264SessionParametersCreateInfoKHR {
32966    #[inline]
32967    fn default() -> Self {
32968        Self {
32969            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
32970            next: ptr::null(),
32971            max_std_sps_count: u32::default(),
32972            max_std_pps_count: u32::default(),
32973            parameters_add_info: ptr::null(),
32974        }
32975    }
32976}
32977
32978unsafe impl Send for VideoEncodeH264SessionParametersCreateInfoKHR {}
32979unsafe impl Sync for VideoEncodeH264SessionParametersCreateInfoKHR {}
32980
32981/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html>
32982#[repr(C)]
32983#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
32984pub struct VideoEncodeH264SessionParametersFeedbackInfoKHR {
32985    pub s_type: StructureType,
32986    pub next: *mut c_void,
32987    pub has_std_sps_overrides: Bool32,
32988    pub has_std_pps_overrides: Bool32,
32989}
32990
32991impl Default for VideoEncodeH264SessionParametersFeedbackInfoKHR {
32992    #[inline]
32993    fn default() -> Self {
32994        Self {
32995            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
32996            next: ptr::null_mut(),
32997            has_std_sps_overrides: Bool32::default(),
32998            has_std_pps_overrides: Bool32::default(),
32999        }
33000    }
33001}
33002
33003unsafe impl Send for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
33004unsafe impl Sync for VideoEncodeH264SessionParametersFeedbackInfoKHR {}
33005
33006/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html>
33007#[repr(C)]
33008#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33009pub struct VideoEncodeH264SessionParametersGetInfoKHR {
33010    pub s_type: StructureType,
33011    pub next: *const c_void,
33012    pub write_std_sps: Bool32,
33013    pub write_std_pps: Bool32,
33014    pub std_sps_id: u32,
33015    pub std_pps_id: u32,
33016}
33017
33018impl Default for VideoEncodeH264SessionParametersGetInfoKHR {
33019    #[inline]
33020    fn default() -> Self {
33021        Self {
33022            s_type: StructureType::VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
33023            next: ptr::null(),
33024            write_std_sps: Bool32::default(),
33025            write_std_pps: Bool32::default(),
33026            std_sps_id: u32::default(),
33027            std_pps_id: u32::default(),
33028        }
33029    }
33030}
33031
33032unsafe impl Send for VideoEncodeH264SessionParametersGetInfoKHR {}
33033unsafe impl Sync for VideoEncodeH264SessionParametersGetInfoKHR {}
33034
33035/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html>
33036#[repr(C)]
33037#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33038pub struct VideoEncodeH265CapabilitiesKHR {
33039    pub s_type: StructureType,
33040    pub next: *mut c_void,
33041    pub flags: VideoEncodeH265CapabilityFlagsKHR,
33042    pub max_level_idc: video::StdVideoH265LevelIdc,
33043    pub max_slice_segment_count: u32,
33044    pub max_tiles: Extent2D,
33045    pub ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
33046    pub transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR,
33047    pub max_p_picture_l0_reference_count: u32,
33048    pub max_b_picture_l0_reference_count: u32,
33049    pub max_l1_reference_count: u32,
33050    pub max_sub_layer_count: u32,
33051    pub expect_dyadic_temporal_sub_layer_pattern: Bool32,
33052    pub min_qp: i32,
33053    pub max_qp: i32,
33054    pub prefers_gop_remaining_frames: Bool32,
33055    pub requires_gop_remaining_frames: Bool32,
33056    pub std_syntax_flags: VideoEncodeH265StdFlagsKHR,
33057}
33058
33059impl Default for VideoEncodeH265CapabilitiesKHR {
33060    #[inline]
33061    fn default() -> Self {
33062        Self {
33063            s_type: StructureType::VIDEO_ENCODE_H265_CAPABILITIES_KHR,
33064            next: ptr::null_mut(),
33065            flags: VideoEncodeH265CapabilityFlagsKHR::default(),
33066            max_level_idc: video::StdVideoH265LevelIdc::default(),
33067            max_slice_segment_count: u32::default(),
33068            max_tiles: Extent2D::default(),
33069            ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
33070            transform_block_sizes: VideoEncodeH265TransformBlockSizeFlagsKHR::default(),
33071            max_p_picture_l0_reference_count: u32::default(),
33072            max_b_picture_l0_reference_count: u32::default(),
33073            max_l1_reference_count: u32::default(),
33074            max_sub_layer_count: u32::default(),
33075            expect_dyadic_temporal_sub_layer_pattern: Bool32::default(),
33076            min_qp: i32::default(),
33077            max_qp: i32::default(),
33078            prefers_gop_remaining_frames: Bool32::default(),
33079            requires_gop_remaining_frames: Bool32::default(),
33080            std_syntax_flags: VideoEncodeH265StdFlagsKHR::default(),
33081        }
33082    }
33083}
33084
33085unsafe impl Send for VideoEncodeH265CapabilitiesKHR {}
33086unsafe impl Sync for VideoEncodeH265CapabilitiesKHR {}
33087
33088/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html>
33089#[repr(C)]
33090#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33091pub struct VideoEncodeH265DpbSlotInfoKHR {
33092    pub s_type: StructureType,
33093    pub next: *const c_void,
33094    pub std_reference_info: *const video::StdVideoEncodeH265ReferenceInfo,
33095}
33096
33097impl Default for VideoEncodeH265DpbSlotInfoKHR {
33098    #[inline]
33099    fn default() -> Self {
33100        Self {
33101            s_type: StructureType::VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR,
33102            next: ptr::null(),
33103            std_reference_info: ptr::null(),
33104        }
33105    }
33106}
33107
33108unsafe impl Send for VideoEncodeH265DpbSlotInfoKHR {}
33109unsafe impl Sync for VideoEncodeH265DpbSlotInfoKHR {}
33110
33111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html>
33112#[repr(C)]
33113#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
33114pub struct VideoEncodeH265FrameSizeKHR {
33115    pub frame_i_size: u32,
33116    pub frame_p_size: u32,
33117    pub frame_b_size: u32,
33118}
33119
33120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html>
33121#[repr(C)]
33122#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33123pub struct VideoEncodeH265GopRemainingFrameInfoKHR {
33124    pub s_type: StructureType,
33125    pub next: *const c_void,
33126    pub use_gop_remaining_frames: Bool32,
33127    pub gop_remaining_i: u32,
33128    pub gop_remaining_p: u32,
33129    pub gop_remaining_b: u32,
33130}
33131
33132impl Default for VideoEncodeH265GopRemainingFrameInfoKHR {
33133    #[inline]
33134    fn default() -> Self {
33135        Self {
33136            s_type: StructureType::VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR,
33137            next: ptr::null(),
33138            use_gop_remaining_frames: Bool32::default(),
33139            gop_remaining_i: u32::default(),
33140            gop_remaining_p: u32::default(),
33141            gop_remaining_b: u32::default(),
33142        }
33143    }
33144}
33145
33146unsafe impl Send for VideoEncodeH265GopRemainingFrameInfoKHR {}
33147unsafe impl Sync for VideoEncodeH265GopRemainingFrameInfoKHR {}
33148
33149/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html>
33150#[repr(C)]
33151#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33152pub struct VideoEncodeH265NaluSliceSegmentInfoKHR {
33153    pub s_type: StructureType,
33154    pub next: *const c_void,
33155    pub constant_qp: i32,
33156    pub std_slice_segment_header: *const video::StdVideoEncodeH265SliceSegmentHeader,
33157}
33158
33159impl Default for VideoEncodeH265NaluSliceSegmentInfoKHR {
33160    #[inline]
33161    fn default() -> Self {
33162        Self {
33163            s_type: StructureType::VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR,
33164            next: ptr::null(),
33165            constant_qp: i32::default(),
33166            std_slice_segment_header: ptr::null(),
33167        }
33168    }
33169}
33170
33171unsafe impl Send for VideoEncodeH265NaluSliceSegmentInfoKHR {}
33172unsafe impl Sync for VideoEncodeH265NaluSliceSegmentInfoKHR {}
33173
33174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html>
33175#[repr(C)]
33176#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33177pub struct VideoEncodeH265PictureInfoKHR {
33178    pub s_type: StructureType,
33179    pub next: *const c_void,
33180    pub nalu_slice_segment_entry_count: u32,
33181    pub nalu_slice_segment_entries: *const VideoEncodeH265NaluSliceSegmentInfoKHR,
33182    pub std_picture_info: *const video::StdVideoEncodeH265PictureInfo,
33183}
33184
33185impl Default for VideoEncodeH265PictureInfoKHR {
33186    #[inline]
33187    fn default() -> Self {
33188        Self {
33189            s_type: StructureType::VIDEO_ENCODE_H265_PICTURE_INFO_KHR,
33190            next: ptr::null(),
33191            nalu_slice_segment_entry_count: u32::default(),
33192            nalu_slice_segment_entries: ptr::null(),
33193            std_picture_info: ptr::null(),
33194        }
33195    }
33196}
33197
33198unsafe impl Send for VideoEncodeH265PictureInfoKHR {}
33199unsafe impl Sync for VideoEncodeH265PictureInfoKHR {}
33200
33201/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html>
33202#[repr(C)]
33203#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33204pub struct VideoEncodeH265ProfileInfoKHR {
33205    pub s_type: StructureType,
33206    pub next: *const c_void,
33207    pub std_profile_idc: video::StdVideoH265ProfileIdc,
33208}
33209
33210impl Default for VideoEncodeH265ProfileInfoKHR {
33211    #[inline]
33212    fn default() -> Self {
33213        Self {
33214            s_type: StructureType::VIDEO_ENCODE_H265_PROFILE_INFO_KHR,
33215            next: ptr::null(),
33216            std_profile_idc: video::StdVideoH265ProfileIdc::default(),
33217        }
33218    }
33219}
33220
33221unsafe impl Send for VideoEncodeH265ProfileInfoKHR {}
33222unsafe impl Sync for VideoEncodeH265ProfileInfoKHR {}
33223
33224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html>
33225#[repr(C)]
33226#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
33227pub struct VideoEncodeH265QpKHR {
33228    pub qp_i: i32,
33229    pub qp_p: i32,
33230    pub qp_b: i32,
33231}
33232
33233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html>
33234#[repr(C)]
33235#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33236pub struct VideoEncodeH265QualityLevelPropertiesKHR {
33237    pub s_type: StructureType,
33238    pub next: *mut c_void,
33239    pub preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR,
33240    pub preferred_gop_frame_count: u32,
33241    pub preferred_idr_period: u32,
33242    pub preferred_consecutive_b_frame_count: u32,
33243    pub preferred_sub_layer_count: u32,
33244    pub preferred_constant_qp: VideoEncodeH265QpKHR,
33245    pub preferred_max_l0_reference_count: u32,
33246    pub preferred_max_l1_reference_count: u32,
33247}
33248
33249impl Default for VideoEncodeH265QualityLevelPropertiesKHR {
33250    #[inline]
33251    fn default() -> Self {
33252        Self {
33253            s_type: StructureType::VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR,
33254            next: ptr::null_mut(),
33255            preferred_rate_control_flags: VideoEncodeH265RateControlFlagsKHR::default(),
33256            preferred_gop_frame_count: u32::default(),
33257            preferred_idr_period: u32::default(),
33258            preferred_consecutive_b_frame_count: u32::default(),
33259            preferred_sub_layer_count: u32::default(),
33260            preferred_constant_qp: VideoEncodeH265QpKHR::default(),
33261            preferred_max_l0_reference_count: u32::default(),
33262            preferred_max_l1_reference_count: u32::default(),
33263        }
33264    }
33265}
33266
33267unsafe impl Send for VideoEncodeH265QualityLevelPropertiesKHR {}
33268unsafe impl Sync for VideoEncodeH265QualityLevelPropertiesKHR {}
33269
33270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html>
33271#[repr(C)]
33272#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33273pub struct VideoEncodeH265QuantizationMapCapabilitiesKHR {
33274    pub s_type: StructureType,
33275    pub next: *mut c_void,
33276    pub min_qp_delta: i32,
33277    pub max_qp_delta: i32,
33278}
33279
33280impl Default for VideoEncodeH265QuantizationMapCapabilitiesKHR {
33281    #[inline]
33282    fn default() -> Self {
33283        Self {
33284            s_type: StructureType::VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR,
33285            next: ptr::null_mut(),
33286            min_qp_delta: i32::default(),
33287            max_qp_delta: i32::default(),
33288        }
33289    }
33290}
33291
33292unsafe impl Send for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
33293unsafe impl Sync for VideoEncodeH265QuantizationMapCapabilitiesKHR {}
33294
33295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html>
33296#[repr(C)]
33297#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33298pub struct VideoEncodeH265RateControlInfoKHR {
33299    pub s_type: StructureType,
33300    pub next: *const c_void,
33301    pub flags: VideoEncodeH265RateControlFlagsKHR,
33302    pub gop_frame_count: u32,
33303    pub idr_period: u32,
33304    pub consecutive_b_frame_count: u32,
33305    pub sub_layer_count: u32,
33306}
33307
33308impl Default for VideoEncodeH265RateControlInfoKHR {
33309    #[inline]
33310    fn default() -> Self {
33311        Self {
33312            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR,
33313            next: ptr::null(),
33314            flags: VideoEncodeH265RateControlFlagsKHR::default(),
33315            gop_frame_count: u32::default(),
33316            idr_period: u32::default(),
33317            consecutive_b_frame_count: u32::default(),
33318            sub_layer_count: u32::default(),
33319        }
33320    }
33321}
33322
33323unsafe impl Send for VideoEncodeH265RateControlInfoKHR {}
33324unsafe impl Sync for VideoEncodeH265RateControlInfoKHR {}
33325
33326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html>
33327#[repr(C)]
33328#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33329pub struct VideoEncodeH265RateControlLayerInfoKHR {
33330    pub s_type: StructureType,
33331    pub next: *const c_void,
33332    pub use_min_qp: Bool32,
33333    pub min_qp: VideoEncodeH265QpKHR,
33334    pub use_max_qp: Bool32,
33335    pub max_qp: VideoEncodeH265QpKHR,
33336    pub use_max_frame_size: Bool32,
33337    pub max_frame_size: VideoEncodeH265FrameSizeKHR,
33338}
33339
33340impl Default for VideoEncodeH265RateControlLayerInfoKHR {
33341    #[inline]
33342    fn default() -> Self {
33343        Self {
33344            s_type: StructureType::VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR,
33345            next: ptr::null(),
33346            use_min_qp: Bool32::default(),
33347            min_qp: VideoEncodeH265QpKHR::default(),
33348            use_max_qp: Bool32::default(),
33349            max_qp: VideoEncodeH265QpKHR::default(),
33350            use_max_frame_size: Bool32::default(),
33351            max_frame_size: VideoEncodeH265FrameSizeKHR::default(),
33352        }
33353    }
33354}
33355
33356unsafe impl Send for VideoEncodeH265RateControlLayerInfoKHR {}
33357unsafe impl Sync for VideoEncodeH265RateControlLayerInfoKHR {}
33358
33359/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html>
33360#[repr(C)]
33361#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33362pub struct VideoEncodeH265SessionCreateInfoKHR {
33363    pub s_type: StructureType,
33364    pub next: *const c_void,
33365    pub use_max_level_idc: Bool32,
33366    pub max_level_idc: video::StdVideoH265LevelIdc,
33367}
33368
33369impl Default for VideoEncodeH265SessionCreateInfoKHR {
33370    #[inline]
33371    fn default() -> Self {
33372        Self {
33373            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR,
33374            next: ptr::null(),
33375            use_max_level_idc: Bool32::default(),
33376            max_level_idc: video::StdVideoH265LevelIdc::default(),
33377        }
33378    }
33379}
33380
33381unsafe impl Send for VideoEncodeH265SessionCreateInfoKHR {}
33382unsafe impl Sync for VideoEncodeH265SessionCreateInfoKHR {}
33383
33384/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html>
33385#[repr(C)]
33386#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33387pub struct VideoEncodeH265SessionParametersAddInfoKHR {
33388    pub s_type: StructureType,
33389    pub next: *const c_void,
33390    pub std_vps_count: u32,
33391    pub std_vp_ss: *const video::StdVideoH265VideoParameterSet,
33392    pub std_sps_count: u32,
33393    pub std_sp_ss: *const video::StdVideoH265SequenceParameterSet,
33394    pub std_pps_count: u32,
33395    pub std_pp_ss: *const video::StdVideoH265PictureParameterSet,
33396}
33397
33398impl Default for VideoEncodeH265SessionParametersAddInfoKHR {
33399    #[inline]
33400    fn default() -> Self {
33401        Self {
33402            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR,
33403            next: ptr::null(),
33404            std_vps_count: u32::default(),
33405            std_vp_ss: ptr::null(),
33406            std_sps_count: u32::default(),
33407            std_sp_ss: ptr::null(),
33408            std_pps_count: u32::default(),
33409            std_pp_ss: ptr::null(),
33410        }
33411    }
33412}
33413
33414unsafe impl Send for VideoEncodeH265SessionParametersAddInfoKHR {}
33415unsafe impl Sync for VideoEncodeH265SessionParametersAddInfoKHR {}
33416
33417/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html>
33418#[repr(C)]
33419#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33420pub struct VideoEncodeH265SessionParametersCreateInfoKHR {
33421    pub s_type: StructureType,
33422    pub next: *const c_void,
33423    pub max_std_vps_count: u32,
33424    pub max_std_sps_count: u32,
33425    pub max_std_pps_count: u32,
33426    pub parameters_add_info: *const VideoEncodeH265SessionParametersAddInfoKHR,
33427}
33428
33429impl Default for VideoEncodeH265SessionParametersCreateInfoKHR {
33430    #[inline]
33431    fn default() -> Self {
33432        Self {
33433            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR,
33434            next: ptr::null(),
33435            max_std_vps_count: u32::default(),
33436            max_std_sps_count: u32::default(),
33437            max_std_pps_count: u32::default(),
33438            parameters_add_info: ptr::null(),
33439        }
33440    }
33441}
33442
33443unsafe impl Send for VideoEncodeH265SessionParametersCreateInfoKHR {}
33444unsafe impl Sync for VideoEncodeH265SessionParametersCreateInfoKHR {}
33445
33446/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html>
33447#[repr(C)]
33448#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33449pub struct VideoEncodeH265SessionParametersFeedbackInfoKHR {
33450    pub s_type: StructureType,
33451    pub next: *mut c_void,
33452    pub has_std_vps_overrides: Bool32,
33453    pub has_std_sps_overrides: Bool32,
33454    pub has_std_pps_overrides: Bool32,
33455}
33456
33457impl Default for VideoEncodeH265SessionParametersFeedbackInfoKHR {
33458    #[inline]
33459    fn default() -> Self {
33460        Self {
33461            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
33462            next: ptr::null_mut(),
33463            has_std_vps_overrides: Bool32::default(),
33464            has_std_sps_overrides: Bool32::default(),
33465            has_std_pps_overrides: Bool32::default(),
33466        }
33467    }
33468}
33469
33470unsafe impl Send for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
33471unsafe impl Sync for VideoEncodeH265SessionParametersFeedbackInfoKHR {}
33472
33473/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html>
33474#[repr(C)]
33475#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33476pub struct VideoEncodeH265SessionParametersGetInfoKHR {
33477    pub s_type: StructureType,
33478    pub next: *const c_void,
33479    pub write_std_vps: Bool32,
33480    pub write_std_sps: Bool32,
33481    pub write_std_pps: Bool32,
33482    pub std_vps_id: u32,
33483    pub std_sps_id: u32,
33484    pub std_pps_id: u32,
33485}
33486
33487impl Default for VideoEncodeH265SessionParametersGetInfoKHR {
33488    #[inline]
33489    fn default() -> Self {
33490        Self {
33491            s_type: StructureType::VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
33492            next: ptr::null(),
33493            write_std_vps: Bool32::default(),
33494            write_std_sps: Bool32::default(),
33495            write_std_pps: Bool32::default(),
33496            std_vps_id: u32::default(),
33497            std_sps_id: u32::default(),
33498            std_pps_id: u32::default(),
33499        }
33500    }
33501}
33502
33503unsafe impl Send for VideoEncodeH265SessionParametersGetInfoKHR {}
33504unsafe impl Sync for VideoEncodeH265SessionParametersGetInfoKHR {}
33505
33506/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html>
33507#[repr(C)]
33508#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33509pub struct VideoEncodeInfoKHR {
33510    pub s_type: StructureType,
33511    pub next: *const c_void,
33512    pub flags: VideoEncodeFlagsKHR,
33513    pub dst_buffer: Buffer,
33514    pub dst_buffer_offset: DeviceSize,
33515    pub dst_buffer_range: DeviceSize,
33516    pub src_picture_resource: VideoPictureResourceInfoKHR,
33517    pub setup_reference_slot: *const VideoReferenceSlotInfoKHR,
33518    pub reference_slot_count: u32,
33519    pub reference_slots: *const VideoReferenceSlotInfoKHR,
33520    pub preceding_externally_encoded_bytes: u32,
33521}
33522
33523impl Default for VideoEncodeInfoKHR {
33524    #[inline]
33525    fn default() -> Self {
33526        Self {
33527            s_type: StructureType::VIDEO_ENCODE_INFO_KHR,
33528            next: ptr::null(),
33529            flags: VideoEncodeFlagsKHR::default(),
33530            dst_buffer: Buffer::default(),
33531            dst_buffer_offset: DeviceSize::default(),
33532            dst_buffer_range: DeviceSize::default(),
33533            src_picture_resource: VideoPictureResourceInfoKHR::default(),
33534            setup_reference_slot: ptr::null(),
33535            reference_slot_count: u32::default(),
33536            reference_slots: ptr::null(),
33537            preceding_externally_encoded_bytes: u32::default(),
33538        }
33539    }
33540}
33541
33542unsafe impl Send for VideoEncodeInfoKHR {}
33543unsafe impl Sync for VideoEncodeInfoKHR {}
33544
33545/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshCapabilitiesKHR.html>
33546#[repr(C)]
33547#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33548pub struct VideoEncodeIntraRefreshCapabilitiesKHR {
33549    pub s_type: StructureType,
33550    pub next: *mut c_void,
33551    pub intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR,
33552    pub max_intra_refresh_cycle_duration: u32,
33553    pub max_intra_refresh_active_reference_pictures: u32,
33554    pub partition_independent_intra_refresh_regions: Bool32,
33555    pub non_rectangular_intra_refresh_regions: Bool32,
33556}
33557
33558impl Default for VideoEncodeIntraRefreshCapabilitiesKHR {
33559    #[inline]
33560    fn default() -> Self {
33561        Self {
33562            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR,
33563            next: ptr::null_mut(),
33564            intra_refresh_modes: VideoEncodeIntraRefreshModeFlagsKHR::default(),
33565            max_intra_refresh_cycle_duration: u32::default(),
33566            max_intra_refresh_active_reference_pictures: u32::default(),
33567            partition_independent_intra_refresh_regions: Bool32::default(),
33568            non_rectangular_intra_refresh_regions: Bool32::default(),
33569        }
33570    }
33571}
33572
33573unsafe impl Send for VideoEncodeIntraRefreshCapabilitiesKHR {}
33574unsafe impl Sync for VideoEncodeIntraRefreshCapabilitiesKHR {}
33575
33576/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshInfoKHR.html>
33577#[repr(C)]
33578#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33579pub struct VideoEncodeIntraRefreshInfoKHR {
33580    pub s_type: StructureType,
33581    pub next: *const c_void,
33582    pub intra_refresh_cycle_duration: u32,
33583    pub intra_refresh_index: u32,
33584}
33585
33586impl Default for VideoEncodeIntraRefreshInfoKHR {
33587    #[inline]
33588    fn default() -> Self {
33589        Self {
33590            s_type: StructureType::VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR,
33591            next: ptr::null(),
33592            intra_refresh_cycle_duration: u32::default(),
33593            intra_refresh_index: u32::default(),
33594        }
33595    }
33596}
33597
33598unsafe impl Send for VideoEncodeIntraRefreshInfoKHR {}
33599unsafe impl Sync for VideoEncodeIntraRefreshInfoKHR {}
33600
33601/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeProfileRgbConversionInfoVALVE.html>
33602#[repr(C)]
33603#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33604pub struct VideoEncodeProfileRgbConversionInfoVALVE {
33605    pub s_type: StructureType,
33606    pub next: *const c_void,
33607    pub perform_encode_rgb_conversion: Bool32,
33608}
33609
33610impl Default for VideoEncodeProfileRgbConversionInfoVALVE {
33611    #[inline]
33612    fn default() -> Self {
33613        Self {
33614            s_type: StructureType::VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE,
33615            next: ptr::null(),
33616            perform_encode_rgb_conversion: Bool32::default(),
33617        }
33618    }
33619}
33620
33621unsafe impl Send for VideoEncodeProfileRgbConversionInfoVALVE {}
33622unsafe impl Sync for VideoEncodeProfileRgbConversionInfoVALVE {}
33623
33624/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html>
33625#[repr(C)]
33626#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33627pub struct VideoEncodeQualityLevelInfoKHR {
33628    pub s_type: StructureType,
33629    pub next: *const c_void,
33630    pub quality_level: u32,
33631}
33632
33633impl Default for VideoEncodeQualityLevelInfoKHR {
33634    #[inline]
33635    fn default() -> Self {
33636        Self {
33637            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
33638            next: ptr::null(),
33639            quality_level: u32::default(),
33640        }
33641    }
33642}
33643
33644unsafe impl Send for VideoEncodeQualityLevelInfoKHR {}
33645unsafe impl Sync for VideoEncodeQualityLevelInfoKHR {}
33646
33647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html>
33648#[repr(C)]
33649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33650pub struct VideoEncodeQualityLevelPropertiesKHR {
33651    pub s_type: StructureType,
33652    pub next: *mut c_void,
33653    pub preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
33654    pub preferred_rate_control_layer_count: u32,
33655}
33656
33657impl Default for VideoEncodeQualityLevelPropertiesKHR {
33658    #[inline]
33659    fn default() -> Self {
33660        Self {
33661            s_type: StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR,
33662            next: ptr::null_mut(),
33663            preferred_rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
33664            preferred_rate_control_layer_count: u32::default(),
33665        }
33666    }
33667}
33668
33669unsafe impl Send for VideoEncodeQualityLevelPropertiesKHR {}
33670unsafe impl Sync for VideoEncodeQualityLevelPropertiesKHR {}
33671
33672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html>
33673#[repr(C)]
33674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33675pub struct VideoEncodeQuantizationMapCapabilitiesKHR {
33676    pub s_type: StructureType,
33677    pub next: *mut c_void,
33678    pub max_quantization_map_extent: Extent2D,
33679}
33680
33681impl Default for VideoEncodeQuantizationMapCapabilitiesKHR {
33682    #[inline]
33683    fn default() -> Self {
33684        Self {
33685            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR,
33686            next: ptr::null_mut(),
33687            max_quantization_map_extent: Extent2D::default(),
33688        }
33689    }
33690}
33691
33692unsafe impl Send for VideoEncodeQuantizationMapCapabilitiesKHR {}
33693unsafe impl Sync for VideoEncodeQuantizationMapCapabilitiesKHR {}
33694
33695/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html>
33696#[repr(C)]
33697#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33698pub struct VideoEncodeQuantizationMapInfoKHR {
33699    pub s_type: StructureType,
33700    pub next: *const c_void,
33701    pub quantization_map: ImageView,
33702    pub quantization_map_extent: Extent2D,
33703}
33704
33705impl Default for VideoEncodeQuantizationMapInfoKHR {
33706    #[inline]
33707    fn default() -> Self {
33708        Self {
33709            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR,
33710            next: ptr::null(),
33711            quantization_map: ImageView::default(),
33712            quantization_map_extent: Extent2D::default(),
33713        }
33714    }
33715}
33716
33717unsafe impl Send for VideoEncodeQuantizationMapInfoKHR {}
33718unsafe impl Sync for VideoEncodeQuantizationMapInfoKHR {}
33719
33720/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html>
33721#[repr(C)]
33722#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33723pub struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
33724    pub s_type: StructureType,
33725    pub next: *const c_void,
33726    pub quantization_map_texel_size: Extent2D,
33727}
33728
33729impl Default for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {
33730    #[inline]
33731    fn default() -> Self {
33732        Self {
33733            s_type: StructureType::VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR,
33734            next: ptr::null(),
33735            quantization_map_texel_size: Extent2D::default(),
33736        }
33737    }
33738}
33739
33740unsafe impl Send for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
33741unsafe impl Sync for VideoEncodeQuantizationMapSessionParametersCreateInfoKHR {}
33742
33743/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html>
33744#[repr(C)]
33745#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33746pub struct VideoEncodeRateControlInfoKHR {
33747    pub s_type: StructureType,
33748    pub next: *const c_void,
33749    pub flags: VideoEncodeRateControlFlagsKHR,
33750    pub rate_control_mode: VideoEncodeRateControlModeFlagsKHR,
33751    pub layer_count: u32,
33752    pub layers: *const VideoEncodeRateControlLayerInfoKHR,
33753    pub virtual_buffer_size_in_ms: u32,
33754    pub initial_virtual_buffer_size_in_ms: u32,
33755}
33756
33757impl Default for VideoEncodeRateControlInfoKHR {
33758    #[inline]
33759    fn default() -> Self {
33760        Self {
33761            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_INFO_KHR,
33762            next: ptr::null(),
33763            flags: VideoEncodeRateControlFlagsKHR::default(),
33764            rate_control_mode: VideoEncodeRateControlModeFlagsKHR::default(),
33765            layer_count: u32::default(),
33766            layers: ptr::null(),
33767            virtual_buffer_size_in_ms: u32::default(),
33768            initial_virtual_buffer_size_in_ms: u32::default(),
33769        }
33770    }
33771}
33772
33773unsafe impl Send for VideoEncodeRateControlInfoKHR {}
33774unsafe impl Sync for VideoEncodeRateControlInfoKHR {}
33775
33776/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html>
33777#[repr(C)]
33778#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33779pub struct VideoEncodeRateControlLayerInfoKHR {
33780    pub s_type: StructureType,
33781    pub next: *const c_void,
33782    pub average_bitrate: u64,
33783    pub max_bitrate: u64,
33784    pub frame_rate_numerator: u32,
33785    pub frame_rate_denominator: u32,
33786}
33787
33788impl Default for VideoEncodeRateControlLayerInfoKHR {
33789    #[inline]
33790    fn default() -> Self {
33791        Self {
33792            s_type: StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR,
33793            next: ptr::null(),
33794            average_bitrate: u64::default(),
33795            max_bitrate: u64::default(),
33796            frame_rate_numerator: u32::default(),
33797            frame_rate_denominator: u32::default(),
33798        }
33799    }
33800}
33801
33802unsafe impl Send for VideoEncodeRateControlLayerInfoKHR {}
33803unsafe impl Sync for VideoEncodeRateControlLayerInfoKHR {}
33804
33805/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeRgbConversionCapabilitiesVALVE.html>
33806#[repr(C)]
33807#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33808pub struct VideoEncodeRgbConversionCapabilitiesVALVE {
33809    pub s_type: StructureType,
33810    pub next: *mut c_void,
33811    pub rgb_models: VideoEncodeRgbModelConversionFlagsVALVE,
33812    pub rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE,
33813    pub x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
33814    pub y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE,
33815}
33816
33817impl Default for VideoEncodeRgbConversionCapabilitiesVALVE {
33818    #[inline]
33819    fn default() -> Self {
33820        Self {
33821            s_type: StructureType::VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE,
33822            next: ptr::null_mut(),
33823            rgb_models: VideoEncodeRgbModelConversionFlagsVALVE::default(),
33824            rgb_ranges: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
33825            x_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
33826            y_chroma_offsets: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
33827        }
33828    }
33829}
33830
33831unsafe impl Send for VideoEncodeRgbConversionCapabilitiesVALVE {}
33832unsafe impl Sync for VideoEncodeRgbConversionCapabilitiesVALVE {}
33833
33834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionIntraRefreshCreateInfoKHR.html>
33835#[repr(C)]
33836#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33837pub struct VideoEncodeSessionIntraRefreshCreateInfoKHR {
33838    pub s_type: StructureType,
33839    pub next: *const c_void,
33840    pub intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR,
33841}
33842
33843impl Default for VideoEncodeSessionIntraRefreshCreateInfoKHR {
33844    #[inline]
33845    fn default() -> Self {
33846        Self {
33847            s_type: StructureType::VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR,
33848            next: ptr::null(),
33849            intra_refresh_mode: VideoEncodeIntraRefreshModeFlagsKHR::default(),
33850        }
33851    }
33852}
33853
33854unsafe impl Send for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
33855unsafe impl Sync for VideoEncodeSessionIntraRefreshCreateInfoKHR {}
33856
33857/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html>
33858#[repr(C)]
33859#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33860pub struct VideoEncodeSessionParametersFeedbackInfoKHR {
33861    pub s_type: StructureType,
33862    pub next: *mut c_void,
33863    pub has_overrides: Bool32,
33864}
33865
33866impl Default for VideoEncodeSessionParametersFeedbackInfoKHR {
33867    #[inline]
33868    fn default() -> Self {
33869        Self {
33870            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
33871            next: ptr::null_mut(),
33872            has_overrides: Bool32::default(),
33873        }
33874    }
33875}
33876
33877unsafe impl Send for VideoEncodeSessionParametersFeedbackInfoKHR {}
33878unsafe impl Sync for VideoEncodeSessionParametersFeedbackInfoKHR {}
33879
33880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html>
33881#[repr(C)]
33882#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33883pub struct VideoEncodeSessionParametersGetInfoKHR {
33884    pub s_type: StructureType,
33885    pub next: *const c_void,
33886    pub video_session_parameters: VideoSessionParametersKHR,
33887}
33888
33889impl Default for VideoEncodeSessionParametersGetInfoKHR {
33890    #[inline]
33891    fn default() -> Self {
33892        Self {
33893            s_type: StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
33894            next: ptr::null(),
33895            video_session_parameters: VideoSessionParametersKHR::default(),
33896        }
33897    }
33898}
33899
33900unsafe impl Send for VideoEncodeSessionParametersGetInfoKHR {}
33901unsafe impl Sync for VideoEncodeSessionParametersGetInfoKHR {}
33902
33903/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeSessionRgbConversionCreateInfoVALVE.html>
33904#[repr(C)]
33905#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33906pub struct VideoEncodeSessionRgbConversionCreateInfoVALVE {
33907    pub s_type: StructureType,
33908    pub next: *const c_void,
33909    pub rgb_model: VideoEncodeRgbModelConversionFlagsVALVE,
33910    pub rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE,
33911    pub x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
33912    pub y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE,
33913}
33914
33915impl Default for VideoEncodeSessionRgbConversionCreateInfoVALVE {
33916    #[inline]
33917    fn default() -> Self {
33918        Self {
33919            s_type: StructureType::VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE,
33920            next: ptr::null(),
33921            rgb_model: VideoEncodeRgbModelConversionFlagsVALVE::default(),
33922            rgb_range: VideoEncodeRgbRangeCompressionFlagsVALVE::default(),
33923            x_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
33924            y_chroma_offset: VideoEncodeRgbChromaOffsetFlagsVALVE::default(),
33925        }
33926    }
33927}
33928
33929unsafe impl Send for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
33930unsafe impl Sync for VideoEncodeSessionRgbConversionCreateInfoVALVE {}
33931
33932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html>
33933#[repr(C)]
33934#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33935pub struct VideoEncodeUsageInfoKHR {
33936    pub s_type: StructureType,
33937    pub next: *const c_void,
33938    pub video_usage_hints: VideoEncodeUsageFlagsKHR,
33939    pub video_content_hints: VideoEncodeContentFlagsKHR,
33940    pub tuning_mode: VideoEncodeTuningModeKHR,
33941}
33942
33943impl Default for VideoEncodeUsageInfoKHR {
33944    #[inline]
33945    fn default() -> Self {
33946        Self {
33947            s_type: StructureType::VIDEO_ENCODE_USAGE_INFO_KHR,
33948            next: ptr::null(),
33949            video_usage_hints: VideoEncodeUsageFlagsKHR::default(),
33950            video_content_hints: VideoEncodeContentFlagsKHR::default(),
33951            tuning_mode: VideoEncodeTuningModeKHR::default(),
33952        }
33953    }
33954}
33955
33956unsafe impl Send for VideoEncodeUsageInfoKHR {}
33957unsafe impl Sync for VideoEncodeUsageInfoKHR {}
33958
33959/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html>
33960#[repr(C)]
33961#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33962pub struct VideoEndCodingInfoKHR {
33963    pub s_type: StructureType,
33964    pub next: *const c_void,
33965    pub flags: VideoEndCodingFlagsKHR,
33966}
33967
33968impl Default for VideoEndCodingInfoKHR {
33969    #[inline]
33970    fn default() -> Self {
33971        Self {
33972            s_type: StructureType::VIDEO_END_CODING_INFO_KHR,
33973            next: ptr::null(),
33974            flags: VideoEndCodingFlagsKHR::default(),
33975        }
33976    }
33977}
33978
33979unsafe impl Send for VideoEndCodingInfoKHR {}
33980unsafe impl Sync for VideoEndCodingInfoKHR {}
33981
33982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html>
33983#[repr(C)]
33984#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
33985pub struct VideoFormatAV1QuantizationMapPropertiesKHR {
33986    pub s_type: StructureType,
33987    pub next: *mut c_void,
33988    pub compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR,
33989}
33990
33991impl Default for VideoFormatAV1QuantizationMapPropertiesKHR {
33992    #[inline]
33993    fn default() -> Self {
33994        Self {
33995            s_type: StructureType::VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR,
33996            next: ptr::null_mut(),
33997            compatible_superblock_sizes: VideoEncodeAV1SuperblockSizeFlagsKHR::default(),
33998        }
33999    }
34000}
34001
34002unsafe impl Send for VideoFormatAV1QuantizationMapPropertiesKHR {}
34003unsafe impl Sync for VideoFormatAV1QuantizationMapPropertiesKHR {}
34004
34005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html>
34006#[repr(C)]
34007#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34008pub struct VideoFormatH265QuantizationMapPropertiesKHR {
34009    pub s_type: StructureType,
34010    pub next: *mut c_void,
34011    pub compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR,
34012}
34013
34014impl Default for VideoFormatH265QuantizationMapPropertiesKHR {
34015    #[inline]
34016    fn default() -> Self {
34017        Self {
34018            s_type: StructureType::VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR,
34019            next: ptr::null_mut(),
34020            compatible_ctb_sizes: VideoEncodeH265CtbSizeFlagsKHR::default(),
34021        }
34022    }
34023}
34024
34025unsafe impl Send for VideoFormatH265QuantizationMapPropertiesKHR {}
34026unsafe impl Sync for VideoFormatH265QuantizationMapPropertiesKHR {}
34027
34028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html>
34029#[repr(C)]
34030#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34031pub struct VideoFormatPropertiesKHR {
34032    pub s_type: StructureType,
34033    pub next: *mut c_void,
34034    pub format: Format,
34035    pub component_mapping: ComponentMapping,
34036    pub image_create_flags: ImageCreateFlags,
34037    pub image_type: ImageType,
34038    pub image_tiling: ImageTiling,
34039    pub image_usage_flags: ImageUsageFlags,
34040}
34041
34042impl Default for VideoFormatPropertiesKHR {
34043    #[inline]
34044    fn default() -> Self {
34045        Self {
34046            s_type: StructureType::VIDEO_FORMAT_PROPERTIES_KHR,
34047            next: ptr::null_mut(),
34048            format: Format::default(),
34049            component_mapping: ComponentMapping::default(),
34050            image_create_flags: ImageCreateFlags::default(),
34051            image_type: ImageType::default(),
34052            image_tiling: ImageTiling::default(),
34053            image_usage_flags: ImageUsageFlags::default(),
34054        }
34055    }
34056}
34057
34058unsafe impl Send for VideoFormatPropertiesKHR {}
34059unsafe impl Sync for VideoFormatPropertiesKHR {}
34060
34061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html>
34062#[repr(C)]
34063#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34064pub struct VideoFormatQuantizationMapPropertiesKHR {
34065    pub s_type: StructureType,
34066    pub next: *mut c_void,
34067    pub quantization_map_texel_size: Extent2D,
34068}
34069
34070impl Default for VideoFormatQuantizationMapPropertiesKHR {
34071    #[inline]
34072    fn default() -> Self {
34073        Self {
34074            s_type: StructureType::VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR,
34075            next: ptr::null_mut(),
34076            quantization_map_texel_size: Extent2D::default(),
34077        }
34078    }
34079}
34080
34081unsafe impl Send for VideoFormatQuantizationMapPropertiesKHR {}
34082unsafe impl Sync for VideoFormatQuantizationMapPropertiesKHR {}
34083
34084/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html>
34085#[repr(C)]
34086#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34087pub struct VideoInlineQueryInfoKHR {
34088    pub s_type: StructureType,
34089    pub next: *const c_void,
34090    pub query_pool: QueryPool,
34091    pub first_query: u32,
34092    pub query_count: u32,
34093}
34094
34095impl Default for VideoInlineQueryInfoKHR {
34096    #[inline]
34097    fn default() -> Self {
34098        Self {
34099            s_type: StructureType::VIDEO_INLINE_QUERY_INFO_KHR,
34100            next: ptr::null(),
34101            query_pool: QueryPool::default(),
34102            first_query: u32::default(),
34103            query_count: u32::default(),
34104        }
34105    }
34106}
34107
34108unsafe impl Send for VideoInlineQueryInfoKHR {}
34109unsafe impl Sync for VideoInlineQueryInfoKHR {}
34110
34111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html>
34112#[repr(C)]
34113#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34114pub struct VideoPictureResourceInfoKHR {
34115    pub s_type: StructureType,
34116    pub next: *const c_void,
34117    pub coded_offset: Offset2D,
34118    pub coded_extent: Extent2D,
34119    pub base_array_layer: u32,
34120    pub image_view_binding: ImageView,
34121}
34122
34123impl Default for VideoPictureResourceInfoKHR {
34124    #[inline]
34125    fn default() -> Self {
34126        Self {
34127            s_type: StructureType::VIDEO_PICTURE_RESOURCE_INFO_KHR,
34128            next: ptr::null(),
34129            coded_offset: Offset2D::default(),
34130            coded_extent: Extent2D::default(),
34131            base_array_layer: u32::default(),
34132            image_view_binding: ImageView::default(),
34133        }
34134    }
34135}
34136
34137unsafe impl Send for VideoPictureResourceInfoKHR {}
34138unsafe impl Sync for VideoPictureResourceInfoKHR {}
34139
34140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html>
34141#[repr(C)]
34142#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34143pub struct VideoProfileInfoKHR {
34144    pub s_type: StructureType,
34145    pub next: *const c_void,
34146    pub video_codec_operation: VideoCodecOperationFlagsKHR,
34147    pub chroma_subsampling: VideoChromaSubsamplingFlagsKHR,
34148    pub luma_bit_depth: VideoComponentBitDepthFlagsKHR,
34149    pub chroma_bit_depth: VideoComponentBitDepthFlagsKHR,
34150}
34151
34152impl Default for VideoProfileInfoKHR {
34153    #[inline]
34154    fn default() -> Self {
34155        Self {
34156            s_type: StructureType::VIDEO_PROFILE_INFO_KHR,
34157            next: ptr::null(),
34158            video_codec_operation: VideoCodecOperationFlagsKHR::default(),
34159            chroma_subsampling: VideoChromaSubsamplingFlagsKHR::default(),
34160            luma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
34161            chroma_bit_depth: VideoComponentBitDepthFlagsKHR::default(),
34162        }
34163    }
34164}
34165
34166unsafe impl Send for VideoProfileInfoKHR {}
34167unsafe impl Sync for VideoProfileInfoKHR {}
34168
34169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html>
34170#[repr(C)]
34171#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34172pub struct VideoProfileListInfoKHR {
34173    pub s_type: StructureType,
34174    pub next: *const c_void,
34175    pub profile_count: u32,
34176    pub profiles: *const VideoProfileInfoKHR,
34177}
34178
34179impl Default for VideoProfileListInfoKHR {
34180    #[inline]
34181    fn default() -> Self {
34182        Self {
34183            s_type: StructureType::VIDEO_PROFILE_LIST_INFO_KHR,
34184            next: ptr::null(),
34185            profile_count: u32::default(),
34186            profiles: ptr::null(),
34187        }
34188    }
34189}
34190
34191unsafe impl Send for VideoProfileListInfoKHR {}
34192unsafe impl Sync for VideoProfileListInfoKHR {}
34193
34194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceIntraRefreshInfoKHR.html>
34195#[repr(C)]
34196#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34197pub struct VideoReferenceIntraRefreshInfoKHR {
34198    pub s_type: StructureType,
34199    pub next: *const c_void,
34200    pub dirty_intra_refresh_regions: u32,
34201}
34202
34203impl Default for VideoReferenceIntraRefreshInfoKHR {
34204    #[inline]
34205    fn default() -> Self {
34206        Self {
34207            s_type: StructureType::VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR,
34208            next: ptr::null(),
34209            dirty_intra_refresh_regions: u32::default(),
34210        }
34211    }
34212}
34213
34214unsafe impl Send for VideoReferenceIntraRefreshInfoKHR {}
34215unsafe impl Sync for VideoReferenceIntraRefreshInfoKHR {}
34216
34217/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html>
34218#[repr(C)]
34219#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34220pub struct VideoReferenceSlotInfoKHR {
34221    pub s_type: StructureType,
34222    pub next: *const c_void,
34223    pub slot_index: i32,
34224    pub picture_resource: *const VideoPictureResourceInfoKHR,
34225}
34226
34227impl Default for VideoReferenceSlotInfoKHR {
34228    #[inline]
34229    fn default() -> Self {
34230        Self {
34231            s_type: StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR,
34232            next: ptr::null(),
34233            slot_index: i32::default(),
34234            picture_resource: ptr::null(),
34235        }
34236    }
34237}
34238
34239unsafe impl Send for VideoReferenceSlotInfoKHR {}
34240unsafe impl Sync for VideoReferenceSlotInfoKHR {}
34241
34242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html>
34243#[repr(C)]
34244#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34245pub struct VideoSessionCreateInfoKHR {
34246    pub s_type: StructureType,
34247    pub next: *const c_void,
34248    pub queue_family_index: u32,
34249    pub flags: VideoSessionCreateFlagsKHR,
34250    pub video_profile: *const VideoProfileInfoKHR,
34251    pub picture_format: Format,
34252    pub max_coded_extent: Extent2D,
34253    pub reference_picture_format: Format,
34254    pub max_dpb_slots: u32,
34255    pub max_active_reference_pictures: u32,
34256    pub std_header_version: *const ExtensionProperties,
34257}
34258
34259impl Default for VideoSessionCreateInfoKHR {
34260    #[inline]
34261    fn default() -> Self {
34262        Self {
34263            s_type: StructureType::VIDEO_SESSION_CREATE_INFO_KHR,
34264            next: ptr::null(),
34265            queue_family_index: u32::default(),
34266            flags: VideoSessionCreateFlagsKHR::default(),
34267            video_profile: ptr::null(),
34268            picture_format: Format::default(),
34269            max_coded_extent: Extent2D::default(),
34270            reference_picture_format: Format::default(),
34271            max_dpb_slots: u32::default(),
34272            max_active_reference_pictures: u32::default(),
34273            std_header_version: ptr::null(),
34274        }
34275    }
34276}
34277
34278unsafe impl Send for VideoSessionCreateInfoKHR {}
34279unsafe impl Sync for VideoSessionCreateInfoKHR {}
34280
34281/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html>
34282#[repr(C)]
34283#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34284pub struct VideoSessionMemoryRequirementsKHR {
34285    pub s_type: StructureType,
34286    pub next: *mut c_void,
34287    pub memory_bind_index: u32,
34288    pub memory_requirements: MemoryRequirements,
34289}
34290
34291impl Default for VideoSessionMemoryRequirementsKHR {
34292    #[inline]
34293    fn default() -> Self {
34294        Self {
34295            s_type: StructureType::VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR,
34296            next: ptr::null_mut(),
34297            memory_bind_index: u32::default(),
34298            memory_requirements: MemoryRequirements::default(),
34299        }
34300    }
34301}
34302
34303unsafe impl Send for VideoSessionMemoryRequirementsKHR {}
34304unsafe impl Sync for VideoSessionMemoryRequirementsKHR {}
34305
34306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html>
34307#[repr(C)]
34308#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34309pub struct VideoSessionParametersCreateInfoKHR {
34310    pub s_type: StructureType,
34311    pub next: *const c_void,
34312    pub flags: VideoSessionParametersCreateFlagsKHR,
34313    pub video_session_parameters_template: VideoSessionParametersKHR,
34314    pub video_session: VideoSessionKHR,
34315}
34316
34317impl Default for VideoSessionParametersCreateInfoKHR {
34318    #[inline]
34319    fn default() -> Self {
34320        Self {
34321            s_type: StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
34322            next: ptr::null(),
34323            flags: VideoSessionParametersCreateFlagsKHR::default(),
34324            video_session_parameters_template: VideoSessionParametersKHR::default(),
34325            video_session: VideoSessionKHR::default(),
34326        }
34327    }
34328}
34329
34330unsafe impl Send for VideoSessionParametersCreateInfoKHR {}
34331unsafe impl Sync for VideoSessionParametersCreateInfoKHR {}
34332
34333/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html>
34334#[repr(C)]
34335#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34336pub struct VideoSessionParametersUpdateInfoKHR {
34337    pub s_type: StructureType,
34338    pub next: *const c_void,
34339    pub update_sequence_count: u32,
34340}
34341
34342impl Default for VideoSessionParametersUpdateInfoKHR {
34343    #[inline]
34344    fn default() -> Self {
34345        Self {
34346            s_type: StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR,
34347            next: ptr::null(),
34348            update_sequence_count: u32::default(),
34349        }
34350    }
34351}
34352
34353unsafe impl Send for VideoSessionParametersUpdateInfoKHR {}
34354unsafe impl Sync for VideoSessionParametersUpdateInfoKHR {}
34355
34356/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewport.html>
34357#[repr(C)]
34358#[derive(Copy, Clone, Default, Debug, PartialEq)]
34359pub struct Viewport {
34360    pub x: f32,
34361    pub y: f32,
34362    pub width: f32,
34363    pub height: f32,
34364    pub min_depth: f32,
34365    pub max_depth: f32,
34366}
34367
34368/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html>
34369#[repr(C)]
34370#[derive(Copy, Clone, Default, Debug, Eq, Hash, PartialEq)]
34371pub struct ViewportSwizzleNV {
34372    pub x: ViewportCoordinateSwizzleNV,
34373    pub y: ViewportCoordinateSwizzleNV,
34374    pub z: ViewportCoordinateSwizzleNV,
34375    pub w: ViewportCoordinateSwizzleNV,
34376}
34377
34378/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkViewportWScalingNV.html>
34379#[repr(C)]
34380#[derive(Copy, Clone, Default, Debug, PartialEq)]
34381pub struct ViewportWScalingNV {
34382    pub xcoeff: f32,
34383    pub ycoeff: f32,
34384}
34385
34386/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html>
34387#[repr(C)]
34388#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34389pub struct WaylandSurfaceCreateInfoKHR {
34390    pub s_type: StructureType,
34391    pub next: *const c_void,
34392    pub flags: WaylandSurfaceCreateFlagsKHR,
34393    pub display: *mut wl_display,
34394    pub surface: *mut wl_surface,
34395}
34396
34397impl Default for WaylandSurfaceCreateInfoKHR {
34398    #[inline]
34399    fn default() -> Self {
34400        Self {
34401            s_type: StructureType::WAYLAND_SURFACE_CREATE_INFO_KHR,
34402            next: ptr::null(),
34403            flags: WaylandSurfaceCreateFlagsKHR::default(),
34404            display: ptr::null_mut(),
34405            surface: ptr::null_mut(),
34406        }
34407    }
34408}
34409
34410unsafe impl Send for WaylandSurfaceCreateInfoKHR {}
34411unsafe impl Sync for WaylandSurfaceCreateInfoKHR {}
34412
34413/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html>
34414#[repr(C)]
34415#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34416pub struct Win32KeyedMutexAcquireReleaseInfoKHR {
34417    pub s_type: StructureType,
34418    pub next: *const c_void,
34419    pub acquire_count: u32,
34420    pub acquire_syncs: *const DeviceMemory,
34421    pub acquire_keys: *const u64,
34422    pub acquire_timeouts: *const u32,
34423    pub release_count: u32,
34424    pub release_syncs: *const DeviceMemory,
34425    pub release_keys: *const u64,
34426}
34427
34428impl Default for Win32KeyedMutexAcquireReleaseInfoKHR {
34429    #[inline]
34430    fn default() -> Self {
34431        Self {
34432            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
34433            next: ptr::null(),
34434            acquire_count: u32::default(),
34435            acquire_syncs: ptr::null(),
34436            acquire_keys: ptr::null(),
34437            acquire_timeouts: ptr::null(),
34438            release_count: u32::default(),
34439            release_syncs: ptr::null(),
34440            release_keys: ptr::null(),
34441        }
34442    }
34443}
34444
34445unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoKHR {}
34446unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoKHR {}
34447
34448/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html>
34449#[repr(C)]
34450#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34451pub struct Win32KeyedMutexAcquireReleaseInfoNV {
34452    pub s_type: StructureType,
34453    pub next: *const c_void,
34454    pub acquire_count: u32,
34455    pub acquire_syncs: *const DeviceMemory,
34456    pub acquire_keys: *const u64,
34457    pub acquire_timeout_milliseconds: *const u32,
34458    pub release_count: u32,
34459    pub release_syncs: *const DeviceMemory,
34460    pub release_keys: *const u64,
34461}
34462
34463impl Default for Win32KeyedMutexAcquireReleaseInfoNV {
34464    #[inline]
34465    fn default() -> Self {
34466        Self {
34467            s_type: StructureType::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
34468            next: ptr::null(),
34469            acquire_count: u32::default(),
34470            acquire_syncs: ptr::null(),
34471            acquire_keys: ptr::null(),
34472            acquire_timeout_milliseconds: ptr::null(),
34473            release_count: u32::default(),
34474            release_syncs: ptr::null(),
34475            release_keys: ptr::null(),
34476        }
34477    }
34478}
34479
34480unsafe impl Send for Win32KeyedMutexAcquireReleaseInfoNV {}
34481unsafe impl Sync for Win32KeyedMutexAcquireReleaseInfoNV {}
34482
34483/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html>
34484#[repr(C)]
34485#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34486pub struct Win32SurfaceCreateInfoKHR {
34487    pub s_type: StructureType,
34488    pub next: *const c_void,
34489    pub flags: Win32SurfaceCreateFlagsKHR,
34490    pub hinstance: HINSTANCE,
34491    pub hwnd: HWND,
34492}
34493
34494impl Default for Win32SurfaceCreateInfoKHR {
34495    #[inline]
34496    fn default() -> Self {
34497        Self {
34498            s_type: StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
34499            next: ptr::null(),
34500            flags: Win32SurfaceCreateFlagsKHR::default(),
34501            hinstance: ptr::null_mut(),
34502            hwnd: ptr::null_mut(),
34503        }
34504    }
34505}
34506
34507unsafe impl Send for Win32SurfaceCreateInfoKHR {}
34508unsafe impl Sync for Win32SurfaceCreateInfoKHR {}
34509
34510/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html>
34511#[repr(C)]
34512#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34513pub struct WriteDescriptorSet {
34514    pub s_type: StructureType,
34515    pub next: *const c_void,
34516    pub dst_set: DescriptorSet,
34517    pub dst_binding: u32,
34518    pub dst_array_element: u32,
34519    pub descriptor_count: u32,
34520    pub descriptor_type: DescriptorType,
34521    pub image_info: *const DescriptorImageInfo,
34522    pub buffer_info: *const DescriptorBufferInfo,
34523    pub texel_buffer_view: *const BufferView,
34524}
34525
34526impl Default for WriteDescriptorSet {
34527    #[inline]
34528    fn default() -> Self {
34529        Self {
34530            s_type: StructureType::WRITE_DESCRIPTOR_SET,
34531            next: ptr::null(),
34532            dst_set: DescriptorSet::default(),
34533            dst_binding: u32::default(),
34534            dst_array_element: u32::default(),
34535            descriptor_count: u32::default(),
34536            descriptor_type: DescriptorType::default(),
34537            image_info: ptr::null(),
34538            buffer_info: ptr::null(),
34539            texel_buffer_view: ptr::null(),
34540        }
34541    }
34542}
34543
34544unsafe impl Send for WriteDescriptorSet {}
34545unsafe impl Sync for WriteDescriptorSet {}
34546
34547/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html>
34548#[repr(C)]
34549#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34550pub struct WriteDescriptorSetAccelerationStructureKHR {
34551    pub s_type: StructureType,
34552    pub next: *const c_void,
34553    pub acceleration_structure_count: u32,
34554    pub acceleration_structures: *const AccelerationStructureKHR,
34555}
34556
34557impl Default for WriteDescriptorSetAccelerationStructureKHR {
34558    #[inline]
34559    fn default() -> Self {
34560        Self {
34561            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,
34562            next: ptr::null(),
34563            acceleration_structure_count: u32::default(),
34564            acceleration_structures: ptr::null(),
34565        }
34566    }
34567}
34568
34569unsafe impl Send for WriteDescriptorSetAccelerationStructureKHR {}
34570unsafe impl Sync for WriteDescriptorSetAccelerationStructureKHR {}
34571
34572/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html>
34573#[repr(C)]
34574#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34575pub struct WriteDescriptorSetAccelerationStructureNV {
34576    pub s_type: StructureType,
34577    pub next: *const c_void,
34578    pub acceleration_structure_count: u32,
34579    pub acceleration_structures: *const AccelerationStructureNV,
34580}
34581
34582impl Default for WriteDescriptorSetAccelerationStructureNV {
34583    #[inline]
34584    fn default() -> Self {
34585        Self {
34586            s_type: StructureType::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
34587            next: ptr::null(),
34588            acceleration_structure_count: u32::default(),
34589            acceleration_structures: ptr::null(),
34590        }
34591    }
34592}
34593
34594unsafe impl Send for WriteDescriptorSetAccelerationStructureNV {}
34595unsafe impl Sync for WriteDescriptorSetAccelerationStructureNV {}
34596
34597/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html>
34598#[repr(C)]
34599#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34600pub struct WriteDescriptorSetInlineUniformBlock {
34601    pub s_type: StructureType,
34602    pub next: *const c_void,
34603    pub data_size: u32,
34604    pub data: *const c_void,
34605}
34606
34607impl Default for WriteDescriptorSetInlineUniformBlock {
34608    #[inline]
34609    fn default() -> Self {
34610        Self {
34611            s_type: StructureType::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
34612            next: ptr::null(),
34613            data_size: u32::default(),
34614            data: ptr::null(),
34615        }
34616    }
34617}
34618
34619unsafe impl Send for WriteDescriptorSetInlineUniformBlock {}
34620unsafe impl Sync for WriteDescriptorSetInlineUniformBlock {}
34621
34622/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html>
34623#[repr(C)]
34624#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34625pub struct WriteDescriptorSetPartitionedAccelerationStructureNV {
34626    pub s_type: StructureType,
34627    pub next: *mut c_void,
34628    pub acceleration_structure_count: u32,
34629    pub acceleration_structures: *const DeviceAddress,
34630}
34631
34632impl Default for WriteDescriptorSetPartitionedAccelerationStructureNV {
34633    #[inline]
34634    fn default() -> Self {
34635        Self {
34636            s_type: StructureType::WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV,
34637            next: ptr::null_mut(),
34638            acceleration_structure_count: u32::default(),
34639            acceleration_structures: ptr::null(),
34640        }
34641    }
34642}
34643
34644unsafe impl Send for WriteDescriptorSetPartitionedAccelerationStructureNV {}
34645unsafe impl Sync for WriteDescriptorSetPartitionedAccelerationStructureNV {}
34646
34647/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetTensorARM.html>
34648#[repr(C)]
34649#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34650pub struct WriteDescriptorSetTensorARM {
34651    pub s_type: StructureType,
34652    pub next: *const c_void,
34653    pub tensor_view_count: u32,
34654    pub tensor_views: *const TensorViewARM,
34655}
34656
34657impl Default for WriteDescriptorSetTensorARM {
34658    #[inline]
34659    fn default() -> Self {
34660        Self {
34661            s_type: StructureType::WRITE_DESCRIPTOR_SET_TENSOR_ARM,
34662            next: ptr::null(),
34663            tensor_view_count: u32::default(),
34664            tensor_views: ptr::null(),
34665        }
34666    }
34667}
34668
34669unsafe impl Send for WriteDescriptorSetTensorARM {}
34670unsafe impl Sync for WriteDescriptorSetTensorARM {}
34671
34672/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html>
34673#[repr(C)]
34674#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34675pub struct WriteIndirectExecutionSetPipelineEXT {
34676    pub s_type: StructureType,
34677    pub next: *const c_void,
34678    pub index: u32,
34679    pub pipeline: Pipeline,
34680}
34681
34682impl Default for WriteIndirectExecutionSetPipelineEXT {
34683    #[inline]
34684    fn default() -> Self {
34685        Self {
34686            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT,
34687            next: ptr::null(),
34688            index: u32::default(),
34689            pipeline: Pipeline::default(),
34690        }
34691    }
34692}
34693
34694unsafe impl Send for WriteIndirectExecutionSetPipelineEXT {}
34695unsafe impl Sync for WriteIndirectExecutionSetPipelineEXT {}
34696
34697/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html>
34698#[repr(C)]
34699#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34700pub struct WriteIndirectExecutionSetShaderEXT {
34701    pub s_type: StructureType,
34702    pub next: *const c_void,
34703    pub index: u32,
34704    pub shader: ShaderEXT,
34705}
34706
34707impl Default for WriteIndirectExecutionSetShaderEXT {
34708    #[inline]
34709    fn default() -> Self {
34710        Self {
34711            s_type: StructureType::WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT,
34712            next: ptr::null(),
34713            index: u32::default(),
34714            shader: ShaderEXT::default(),
34715        }
34716    }
34717}
34718
34719unsafe impl Send for WriteIndirectExecutionSetShaderEXT {}
34720unsafe impl Sync for WriteIndirectExecutionSetShaderEXT {}
34721
34722/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXYColorEXT.html>
34723#[repr(C)]
34724#[derive(Copy, Clone, Default, Debug, PartialEq)]
34725pub struct XYColorEXT {
34726    pub x: f32,
34727    pub y: f32,
34728}
34729
34730/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html>
34731#[repr(C)]
34732#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34733pub struct XcbSurfaceCreateInfoKHR {
34734    pub s_type: StructureType,
34735    pub next: *const c_void,
34736    pub flags: XcbSurfaceCreateFlagsKHR,
34737    pub connection: *mut xcb_connection_t,
34738    pub window: xcb_window_t,
34739}
34740
34741impl Default for XcbSurfaceCreateInfoKHR {
34742    #[inline]
34743    fn default() -> Self {
34744        Self {
34745            s_type: StructureType::XCB_SURFACE_CREATE_INFO_KHR,
34746            next: ptr::null(),
34747            flags: XcbSurfaceCreateFlagsKHR::default(),
34748            connection: ptr::null_mut(),
34749            window: xcb_window_t::default(),
34750        }
34751    }
34752}
34753
34754unsafe impl Send for XcbSurfaceCreateInfoKHR {}
34755unsafe impl Sync for XcbSurfaceCreateInfoKHR {}
34756
34757/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html>
34758#[repr(C)]
34759#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
34760pub struct XlibSurfaceCreateInfoKHR {
34761    pub s_type: StructureType,
34762    pub next: *const c_void,
34763    pub flags: XlibSurfaceCreateFlagsKHR,
34764    pub dpy: *mut Display,
34765    pub window: Window,
34766}
34767
34768impl Default for XlibSurfaceCreateInfoKHR {
34769    #[inline]
34770    fn default() -> Self {
34771        Self {
34772            s_type: StructureType::XLIB_SURFACE_CREATE_INFO_KHR,
34773            next: ptr::null(),
34774            flags: XlibSurfaceCreateFlagsKHR::default(),
34775            dpy: ptr::null_mut(),
34776            window: Window::default(),
34777        }
34778    }
34779}
34780
34781unsafe impl Send for XlibSurfaceCreateInfoKHR {}
34782unsafe impl Sync for XlibSurfaceCreateInfoKHR {}
34783
34784/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAabbPositionsNV.html>
34785pub type AabbPositionsNV = AabbPositionsKHR;
34786/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceNV.html>
34787pub type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
34788/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescription2KHR.html>
34789pub type AttachmentDescription2KHR = AttachmentDescription2;
34790/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayoutKHR.html>
34791pub type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
34792/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReference2KHR.html>
34793pub type AttachmentReference2KHR = AttachmentReference2;
34794/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayoutKHR.html>
34795pub type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
34796/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoNV.html>
34797pub type AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
34798/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfoKHR.html>
34799pub type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
34800/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindBufferMemoryInfoKHR.html>
34801pub type BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
34802/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfoKHR.html>
34803pub type BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo;
34804/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfoKHR.html>
34805pub type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
34806/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImageMemoryInfoKHR.html>
34807pub type BindImageMemoryInfoKHR = BindImageMemoryInfo;
34808/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfoKHR.html>
34809pub type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
34810/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBindMemoryStatusKHR.html>
34811pub type BindMemoryStatusKHR = BindMemoryStatus;
34812/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBlitImageInfo2KHR.html>
34813pub type BlitImageInfo2KHR = BlitImageInfo2;
34814/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferCopy2KHR.html>
34815pub type BufferCopy2KHR = BufferCopy2;
34816/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoEXT.html>
34817pub type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
34818/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfoKHR.html>
34819pub type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
34820/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferImageCopy2KHR.html>
34821pub type BufferImageCopy2KHR = BufferImageCopy2;
34822/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2KHR.html>
34823pub type BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
34824/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2KHR.html>
34825pub type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
34826/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfoKHR.html>
34827pub type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
34828/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfoKHR.html>
34829pub type BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo;
34830/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoEXT.html>
34831pub type CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
34832/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfoKHR.html>
34833pub type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
34834/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfoKHR.html>
34835pub type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
34836/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkConformanceVersionKHR.html>
34837pub type ConformanceVersionKHR = ConformanceVersion;
34838/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferInfo2KHR.html>
34839pub type CopyBufferInfo2KHR = CopyBufferInfo2;
34840/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2KHR.html>
34841pub type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
34842/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageInfo2KHR.html>
34843pub type CopyImageInfo2KHR = CopyImageInfo2;
34844/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2KHR.html>
34845pub type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
34846/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToImageInfoEXT.html>
34847pub type CopyImageToImageInfoEXT = CopyImageToImageInfo;
34848/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfoEXT.html>
34849pub type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo;
34850/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandNV.html>
34851pub type CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR;
34852/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandNV.html>
34853pub type CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR;
34854/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfoEXT.html>
34855pub type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo;
34856/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDependencyInfoKHR.html>
34857pub type DependencyInfoKHR = DependencyInfo;
34858/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfoEXT.html>
34859pub type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
34860/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfoEXT.html>
34861pub type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
34862/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupportKHR.html>
34863pub type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
34864/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfoEXT.html>
34865pub type DescriptorSetVariableDescriptorCountAllocateInfoEXT =
34866    DescriptorSetVariableDescriptorCountAllocateInfo;
34867/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupportEXT.html>
34868pub type DescriptorSetVariableDescriptorCountLayoutSupportEXT =
34869    DescriptorSetVariableDescriptorCountLayoutSupport;
34870/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfoKHR.html>
34871pub type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
34872/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntryKHR.html>
34873pub type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
34874/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirementsKHR.html>
34875pub type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
34876/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfoKHR.html>
34877pub type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
34878/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfoKHR.html>
34879pub type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
34880/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfoKHR.html>
34881pub type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
34882/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfoKHR.html>
34883pub type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
34884/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfoKHR.html>
34885pub type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
34886/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirementsKHR.html>
34887pub type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
34888/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfoKHR.html>
34889pub type DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo;
34890/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfoKHR.html>
34891pub type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
34892/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfoEXT.html>
34893pub type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
34894/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoEXT.html>
34895pub type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo;
34896/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfoKHR.html>
34897pub type DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo;
34898/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportFenceCreateInfoKHR.html>
34899pub type ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
34900/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoKHR.html>
34901pub type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
34902/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfoKHR.html>
34903pub type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
34904/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalBufferPropertiesKHR.html>
34905pub type ExternalBufferPropertiesKHR = ExternalBufferProperties;
34906/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalFencePropertiesKHR.html>
34907pub type ExternalFencePropertiesKHR = ExternalFenceProperties;
34908/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesKHR.html>
34909pub type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
34910/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfoKHR.html>
34911pub type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
34912/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoKHR.html>
34913pub type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
34914/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalMemoryPropertiesKHR.html>
34915pub type ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
34916/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkExternalSemaphorePropertiesKHR.html>
34917pub type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
34918/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties2KHR.html>
34919pub type FormatProperties2KHR = FormatProperties2;
34920/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFormatProperties3KHR.html>
34921pub type FormatProperties3KHR = FormatProperties3;
34922/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfoKHR.html>
34923pub type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
34924/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfoKHR.html>
34925pub type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
34926/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQueryEXT.html>
34927pub type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery;
34928/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfoEXT.html>
34929pub type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo;
34930/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageBlit2KHR.html>
34931pub type ImageBlit2KHR = ImageBlit2;
34932/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageCopy2KHR.html>
34933pub type ImageCopy2KHR = ImageCopy2;
34934/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatListCreateInfoKHR.html>
34935pub type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
34936/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageFormatProperties2KHR.html>
34937pub type ImageFormatProperties2KHR = ImageFormatProperties2;
34938/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryBarrier2KHR.html>
34939pub type ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
34940/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2KHR.html>
34941pub type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
34942/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfoKHR.html>
34943pub type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
34944/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageResolve2KHR.html>
34945pub type ImageResolve2KHR = ImageResolve2;
34946/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2KHR.html>
34947pub type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
34948/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfoEXT.html>
34949pub type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
34950/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2EXT.html>
34951pub type ImageSubresource2EXT = ImageSubresource2;
34952/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageSubresource2KHR.html>
34953pub type ImageSubresource2KHR = ImageSubresource2;
34954/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageToMemoryCopyEXT.html>
34955pub type ImageToMemoryCopyEXT = ImageToMemoryCopy;
34956/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfoKHR.html>
34957pub type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
34958/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkInputAttachmentAspectReferenceKHR.html>
34959pub type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
34960/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfoKHR.html>
34961pub type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
34962/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryBarrier2KHR.html>
34963pub type MemoryBarrier2KHR = MemoryBarrier2;
34964/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoKHR.html>
34965pub type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
34966/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirementsKHR.html>
34967pub type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
34968/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryMapInfoKHR.html>
34969pub type MemoryMapInfoKHR = MemoryMapInfo;
34970/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfoKHR.html>
34971pub type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
34972/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryRequirements2KHR.html>
34973pub type MemoryRequirements2KHR = MemoryRequirements2;
34974/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryToImageCopyEXT.html>
34975pub type MemoryToImageCopyEXT = MemoryToImageCopy;
34976/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMemoryUnmapInfoKHR.html>
34977pub type MemoryUnmapInfoKHR = MemoryUnmapInfo;
34978/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoVALVE.html>
34979pub type MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
34980/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListVALVE.html>
34981pub type MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
34982/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeaturesKHR.html>
34983pub type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
34984/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeaturesKHR.html>
34985pub type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
34986/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferAddressFeaturesEXT.html>
34987pub type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
34988/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.html>
34989pub type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
34990/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html>
34991pub type PhysicalDeviceComputeShaderDerivativesFeaturesNV =
34992    PhysicalDeviceComputeShaderDerivativesFeaturesKHR;
34993/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html>
34994pub type PhysicalDeviceCopyMemoryIndirectPropertiesNV =
34995    PhysicalDeviceCopyMemoryIndirectPropertiesKHR;
34996/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html>
34997pub type PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR;
34998/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.html>
34999pub type PhysicalDeviceDepthStencilResolvePropertiesKHR =
35000    PhysicalDeviceDepthStencilResolveProperties;
35001/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.html>
35002pub type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
35003/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.html>
35004pub type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
35005/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverPropertiesKHR.html>
35006pub type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
35007/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeaturesKHR.html>
35008pub type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
35009/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR.html>
35010pub type PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR =
35011    PhysicalDeviceDynamicRenderingLocalReadFeatures;
35012/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfoKHR.html>
35013pub type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
35014/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfoKHR.html>
35015pub type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
35016/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfoKHR.html>
35017pub type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
35018/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSciBufFeaturesNV.html>
35019pub type PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
35020/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfoKHR.html>
35021pub type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
35022/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2KHR.html>
35023pub type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
35024/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloat16Int8FeaturesKHR.html>
35025pub type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
35026/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsPropertiesKHR.html>
35027pub type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
35028/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html>
35029pub type PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM =
35030    PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
35031/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html>
35032pub type PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM =
35033    PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
35034/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.html>
35035pub type PhysicalDeviceFragmentShaderBarycentricFeaturesNV =
35036    PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
35037/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.html>
35038pub type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures;
35039/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html>
35040pub type PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures;
35041/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupPropertiesKHR.html>
35042pub type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
35043/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeaturesEXT.html>
35044pub type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures;
35045/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyPropertiesEXT.html>
35046pub type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties;
35047/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeaturesEXT.html>
35048pub type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
35049/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIDPropertiesKHR.html>
35050pub type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
35051/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2KHR.html>
35052pub type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
35053/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeaturesEXT.html>
35054pub type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
35055/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.html>
35056pub type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
35057/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html>
35058pub type PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features;
35059/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesKHR.html>
35060pub type PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features;
35061/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.html>
35062pub type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
35063/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.html>
35064pub type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
35065/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html>
35066pub type PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures;
35067/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeaturesKHR.html>
35068pub type PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures;
35069/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html>
35070pub type PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties;
35071/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationPropertiesKHR.html>
35072pub type PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties;
35073/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3PropertiesKHR.html>
35074pub type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
35075/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4FeaturesKHR.html>
35076pub type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
35077/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4PropertiesKHR.html>
35078pub type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
35079/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5FeaturesKHR.html>
35080pub type PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features;
35081/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5PropertiesKHR.html>
35082pub type PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties;
35083/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6FeaturesKHR.html>
35084pub type PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features;
35085/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6PropertiesKHR.html>
35086pub type PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties;
35087/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html>
35088pub type PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesEXT;
35089/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html>
35090pub type PhysicalDeviceMemoryDecompressionPropertiesNV =
35091    PhysicalDeviceMemoryDecompressionPropertiesEXT;
35092/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2KHR.html>
35093pub type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
35094/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeaturesKHR.html>
35095pub type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
35096/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPropertiesKHR.html>
35097pub type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
35098/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.html>
35099pub type PhysicalDeviceMutableDescriptorTypeFeaturesVALVE =
35100    PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
35101/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.html>
35102pub type PhysicalDevicePipelineCreationCacheControlFeaturesEXT =
35103    PhysicalDevicePipelineCreationCacheControlFeatures;
35104/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html>
35105pub type PhysicalDevicePipelineProtectedAccessFeaturesEXT =
35106    PhysicalDevicePipelineProtectedAccessFeatures;
35107/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html>
35108pub type PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures;
35109/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html>
35110pub type PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties;
35111/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingPropertiesKHR.html>
35112pub type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
35113/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT.html>
35114pub type PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT =
35115    PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR;
35116/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeaturesEXT.html>
35117pub type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
35118/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2KHR.html>
35119pub type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
35120/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html>
35121pub type PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties;
35122/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.html>
35123pub type PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM =
35124    PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
35125/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html>
35126pub type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR;
35127/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html>
35128pub type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR;
35129/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.html>
35130pub type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
35131    PhysicalDeviceSamplerFilterMinmaxProperties;
35132/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.html>
35133pub type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
35134    PhysicalDeviceSamplerYcbcrConversionFeatures;
35135/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.html>
35136pub type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
35137/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.html>
35138pub type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR =
35139    PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
35140/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.html>
35141pub type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
35142/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.html>
35143pub type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT =
35144    PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
35145/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParameterFeatures.html>
35146pub type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
35147/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeaturesKHR.html>
35148pub type PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures;
35149/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.html>
35150pub type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
35151/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2FeaturesKHR.html>
35152pub type PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features;
35153/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.html>
35154pub type PhysicalDeviceShaderIntegerDotProductFeaturesKHR =
35155    PhysicalDeviceShaderIntegerDotProductFeatures;
35156/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR.html>
35157pub type PhysicalDeviceShaderIntegerDotProductPropertiesKHR =
35158    PhysicalDeviceShaderIntegerDotProductProperties;
35159/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.html>
35160pub type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR =
35161    PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
35162/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR.html>
35163pub type PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures;
35164/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.html>
35165pub type PhysicalDeviceShaderTerminateInvocationFeaturesKHR =
35166    PhysicalDeviceShaderTerminateInvocationFeatures;
35167/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2KHR.html>
35168pub type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
35169/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.html>
35170pub type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
35171/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.html>
35172pub type PhysicalDeviceSubgroupSizeControlPropertiesEXT =
35173    PhysicalDeviceSubgroupSizeControlProperties;
35174/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html>
35175pub type PhysicalDeviceSwapchainMaintenance1FeaturesEXT =
35176    PhysicalDeviceSwapchainMaintenance1FeaturesKHR;
35177/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2FeaturesKHR.html>
35178pub type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
35179/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.html>
35180pub type PhysicalDeviceTexelBufferAlignmentPropertiesEXT =
35181    PhysicalDeviceTexelBufferAlignmentProperties;
35182/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.html>
35183pub type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT =
35184    PhysicalDeviceTextureCompressionASTCHDRFeatures;
35185/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.html>
35186pub type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
35187/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.html>
35188pub type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
35189/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceToolPropertiesEXT.html>
35190pub type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
35191/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.html>
35192pub type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR =
35193    PhysicalDeviceUniformBufferStandardLayoutFeatures;
35194/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeatures.html>
35195pub type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
35196/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointerFeaturesKHR.html>
35197pub type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
35198/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeaturesKHR.html>
35199pub type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
35200/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html>
35201pub type PhysicalDeviceVertexAttributeDivisorFeaturesEXT =
35202    PhysicalDeviceVertexAttributeDivisorFeatures;
35203/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR.html>
35204pub type PhysicalDeviceVertexAttributeDivisorFeaturesKHR =
35205    PhysicalDeviceVertexAttributeDivisorFeatures;
35206/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.html>
35207pub type PhysicalDeviceVertexAttributeDivisorPropertiesKHR =
35208    PhysicalDeviceVertexAttributeDivisorProperties;
35209/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.html>
35210pub type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
35211/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.html>
35212pub type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR =
35213    PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
35214/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfoKHR.html>
35215pub type PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo;
35216/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfoEXT.html>
35217pub type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
35218/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackEXT.html>
35219pub type PipelineCreationFeedbackEXT = PipelineCreationFeedback;
35220/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineInfoEXT.html>
35221pub type PipelineInfoEXT = PipelineInfoKHR;
35222/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoEXT.html>
35223pub type PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo;
35224/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfoKHR.html>
35225pub type PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo;
35226/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfoKHR.html>
35227pub type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
35228/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfoEXT.html>
35229pub type PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo;
35230/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.html>
35231pub type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT =
35232    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
35233/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfoKHR.html>
35234pub type PipelineTessellationDomainOriginStateCreateInfoKHR =
35235    PipelineTessellationDomainOriginStateCreateInfo;
35236/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoEXT.html>
35237pub type PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo;
35238/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfoKHR.html>
35239pub type PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo;
35240/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfoEXT.html>
35241pub type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
35242/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushConstantsInfoKHR.html>
35243pub type PushConstantsInfoKHR = PushConstantsInfo;
35244/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetInfoKHR.html>
35245pub type PushDescriptorSetInfoKHR = PushDescriptorSetInfo;
35246/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfoKHR.html>
35247pub type PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo;
35248/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueryPoolCreateInfoINTEL.html>
35249pub type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
35250/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesEXT.html>
35251pub type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties;
35252/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityPropertiesKHR.html>
35253pub type QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties;
35254/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkQueueFamilyProperties2KHR.html>
35255pub type QueueFamilyProperties2KHR = QueueFamilyProperties2;
35256/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoEXT.html>
35257pub type ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR;
35258/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfoKHR.html>
35259pub type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
35260/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2KHR.html>
35261pub type RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
35262/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfoKHR.html>
35263pub type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
35264/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfoKHR.html>
35265pub type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
35266/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAreaInfoKHR.html>
35267pub type RenderingAreaInfoKHR = RenderingAreaInfo;
35268/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentInfoKHR.html>
35269pub type RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
35270/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfoKHR.html>
35271pub type RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo;
35272/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingEndInfoEXT.html>
35273pub type RenderingEndInfoEXT = RenderingEndInfoKHR;
35274/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInfoKHR.html>
35275pub type RenderingInfoKHR = RenderingInfo;
35276/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfoKHR.html>
35277pub type RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo;
35278/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkResolveImageInfo2KHR.html>
35279pub type ResolveImageInfo2KHR = ResolveImageInfo2;
35280/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfoEXT.html>
35281pub type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
35282/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfoKHR.html>
35283pub type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
35284/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatPropertiesKHR.html>
35285pub type SamplerYcbcrConversionImageFormatPropertiesKHR =
35286    SamplerYcbcrConversionImageFormatProperties;
35287/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfoKHR.html>
35288pub type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
35289/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSignalInfoKHR.html>
35290pub type SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
35291/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfoKHR.html>
35292pub type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
35293/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfoKHR.html>
35294pub type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
35295/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSemaphoreWaitInfoKHR.html>
35296pub type SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
35297/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkShaderRequiredSubgroupSizeCreateInfoEXT.html>
35298pub type ShaderRequiredSubgroupSizeCreateInfoEXT =
35299    PipelineShaderStageRequiredSubgroupSizeCreateInfo;
35300/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2KHR.html>
35301pub type SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
35302/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2KHR.html>
35303pub type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
35304/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubmitInfo2KHR.html>
35305pub type SubmitInfo2KHR = SubmitInfo2;
35306/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassBeginInfoKHR.html>
35307pub type SubpassBeginInfoKHR = SubpassBeginInfo;
35308/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDependency2KHR.html>
35309pub type SubpassDependency2KHR = SubpassDependency2;
35310/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescription2KHR.html>
35311pub type SubpassDescription2KHR = SubpassDescription2;
35312/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolveKHR.html>
35313pub type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
35314/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassEndInfoKHR.html>
35315pub type SubpassEndInfoKHR = SubpassEndInfo;
35316/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubpassFragmentDensityMapOffsetEndInfoQCOM.html>
35317pub type SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT;
35318/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySizeEXT.html>
35319pub type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize;
35320/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2EXT.html>
35321pub type SubresourceLayout2EXT = SubresourceLayout2;
35322/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSubresourceLayout2KHR.html>
35323pub type SubresourceLayout2KHR = SubresourceLayout2;
35324/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityEXT.html>
35325pub type SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR;
35326/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentModeEXT.html>
35327pub type SurfacePresentModeEXT = SurfacePresentModeKHR;
35328/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesEXT.html>
35329pub type SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR;
35330/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoEXT.html>
35331pub type SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR;
35332/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoEXT.html>
35333pub type SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR;
35334/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoEXT.html>
35335pub type SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR;
35336/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoEXT.html>
35337pub type SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR;
35338/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfoKHR.html>
35339pub type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
35340/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkTransformMatrixNV.html>
35341pub type TransformMatrixNV = TransformMatrixKHR;
35342/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionEXT.html>
35343pub type VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription;
35344/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescriptionKHR.html>
35345pub type VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription;
35346/// <https://www.khronos.org/registry/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlockEXT.html>
35347pub type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;